MySQL 26.7.0
Source Code Documentation
srv0mon.h
Go to the documentation of this file.
1/***********************************************************************
2
3Copyright (c) 2010, 2026, Oracle and/or its affiliates.
4Copyright (c) 2012, Facebook Inc.
5
6This program is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License, version 2.0,
8as published by the Free Software Foundation.
9
10This program is designed to work with certain software (including
11but not limited to OpenSSL) that is licensed under separate terms,
12as designated in a particular file or component or in included license
13documentation. The authors of MySQL hereby grant you an additional
14permission to link the program and your derivative works with the
15separately licensed software that they have either included with
16the program or referenced in the documentation.
17
18This program is distributed in the hope that it will be useful,
19but WITHOUT ANY WARRANTY; without even the implied warranty of
20MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21GNU General Public License, version 2.0, for more details.
22
23You should have received a copy of the GNU General Public License
24along with this program; if not, write to the Free Software
25Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26
27***********************************************************************/
28
29/** @file include/srv0mon.h
30 Server monitor counter related defines
31
32 Created 12/15/2009 Jimmy Yang
33 *******************************************************/
34
35#ifndef srv0mon_h
36#define srv0mon_h
37
38#include "univ.i"
39
40#ifndef __STDC_LIMIT_MACROS
41/* Required for FreeBSD so that INT64_MAX is defined. */
42#define __STDC_LIMIT_MACROS
43#endif /* __STDC_LIMIT_MACROS */
44
45#include <stdint.h>
46#include <bitset>
47
48/** Possible status values for "mon_status" in "struct monitor_value" */
50 MONITOR_STARTED = 1, /*!< Monitor has been turned on */
51 MONITOR_STOPPED = 2 /*!< Monitor has been turned off */
52};
53
55
56/** Monitor counter value type */
57typedef int64_t mon_type_t;
58
59/** Two monitor structures are defined in this file. One is
60"monitor_value_t" which contains dynamic counter values for each
61counter. The other is "monitor_info_t", which contains
62static information (counter name, desc etc.) for each counter.
63In addition, an enum datatype "monitor_id_t" is also defined,
64it identifies each monitor with an internally used symbol, whose
65integer value indexes into above two structure for its dynamic
66and static information.
67Developer who intend to add new counters would require to
68fill in counter information as described in "monitor_info_t" and
69create the internal counter ID in "monitor_id_t". */
70
71/** Structure containing the actual values of a monitor counter. */
73 std::chrono::system_clock::time_point
74 mon_start_time; /*!< Start time of monitoring */
75 std::chrono::system_clock::time_point
76 mon_stop_time; /*!< Stop time of monitoring */
77 std::chrono::system_clock::time_point
78 mon_reset_time; /*!< Time counter was reset */
79 std::atomic<mon_type_t> mon_value; /*!< Current counter Value */
80 mon_type_t mon_max_value; /*!< Current Max value */
81 mon_type_t mon_min_value; /*!< Current Min value */
82 mon_type_t mon_value_reset; /*!< value at last reset */
83 mon_type_t mon_max_value_start; /*!< Max value since start */
84 mon_type_t mon_min_value_start; /*!< Min value since start */
85 mon_type_t mon_start_value; /*!< Value at the start time */
86 mon_type_t mon_last_value; /*!< Last set of values */
87 monitor_running_t mon_status; /* whether monitor still running */
88};
89
90/** Following defines are possible values for "monitor_type" field in
91"struct monitor_info" */
93 MONITOR_NONE = 0, /*!< No monitoring */
94 MONITOR_MODULE = 1, /*!< This is a monitor module type,
95 not a counter */
96 MONITOR_EXISTING = 2, /*!< The monitor carries information from
97 an existing system status variable */
98 MONITOR_NO_AVERAGE = 4, /*!< Set this status if we don't want to
99 calculate the average value for the counter */
100 MONITOR_DISPLAY_CURRENT = 8, /*!< Display current value of the
101 counter, rather than incremental value
102 over the period. Mostly for counters
103 displaying current resource usage */
104 MONITOR_GROUP_MODULE = 16, /*!< Monitor can be turned on/off
105 only as a module, but not individually */
106 MONITOR_DEFAULT_ON = 32, /*!< Monitor will be turned on by default at
107 server start up */
108 MONITOR_SET_OWNER = 64, /*!< Owner of "monitor set", a set of
109 monitor counters */
110 MONITOR_SET_MEMBER = 128, /*!< Being part of a "monitor set" */
111 MONITOR_HIDDEN = 256 /*!< Do not display this monitor in the
112 metrics table */
114
115/** Counter minimum value is initialized to be max value of
116 mon_type_t (int64_t) */
117#define MIN_RESERVED INT64_MAX
118#define MAX_RESERVED (~MIN_RESERVED)
119
120/** This enumeration defines internal monitor identifier used internally
121to identify each particular counter. Its value indexes into two arrays,
122one is the "innodb_counter_value" array which records actual monitor
123counter values, the other is "innodb_counter_info" array which describes
124each counter's basic information (name, desc etc.). A couple of
125naming rules here:
1261) If the monitor defines a module, it starts with MONITOR_MODULE
1272) If the monitor uses existing counters from "status variable", its ID
128name shall start with MONITOR_OVLD
129
130Please refer to "innodb_counter_info" in srv/srv0mon.cc for detail
131information for each monitor counter */
132
134 /* This is to identify the default value set by the metrics
135 control global variables */
137
138 /* Start of Metadata counter */
143
144 /* Lock manager related counters */
168
169 /* Buffer and I/O related counters. */
201
205
211
215
218
253
254 /* Buffer Page I/O specific counters. */
293
294 /* OS level counters (I/O) */
305
306 /* Transaction related counters */
324
325 /* Purge related counters */
336
337 /* Undo tablespace truncation */
341
342 /* Recovery related counters */
357
362
370
376
380
384
388
390
405
406 /* Page Manager related counters */
412
413 /* Index related counters */
421
422 /* Adaptive Hash Index related counters */
432
433 /* Tablespace related counters */
436
437 /* InnoDB Change Buffer related counters */
447
448 /* Counters for server operations */
472
473 /* Data DML related counters */
483
484 /* Sampling related counters */
488
489 /* Data DDL related counters */
496
502
503 /* Mutex/RW-Lock related counters */
506
507 /* CPU usage information */
514
520
526
527 /* This is used only for control system to turn
528 on/off and reset all monitor counters */
530
531 /* This must be the last member */
534
535/** This informs the monitor control system to turn
536on/off and reset monitor counters through wild card match */
537#define MONITOR_WILDCARD_MATCH (NUM_MONITOR + 1)
538
539/** Cannot find monitor counter with a specified name */
540#define MONITOR_NO_MATCH (NUM_MONITOR + 2)
541
542/** struct monitor_info describes the basic/static information
543about each monitor counter. */
545 const char *monitor_name; /*!< Monitor name */
546 const char *monitor_module; /*!< Sub Module the monitor
547 belongs to */
548 const char *monitor_desc; /*!< Brief desc of monitor counter */
549 monitor_type_t monitor_type; /*!< Type of Monitor Info */
550 monitor_id_t monitor_related_id; /*!< Monitor ID of counter that
551 related to this monitor. This is
552 set when the monitor belongs to
553 a "monitor set" */
554 monitor_id_t monitor_id; /*!< Monitor ID as defined in enum
555 monitor_id_t */
556};
557
558/** Following are the "set_option" values allowed for
559srv_mon_process_existing_counter() and srv_mon_process_existing_counter()
560functions. To turn on/off/reset the monitor counters. */
562 MONITOR_TURN_ON = 1, /*!< Turn on the counter */
563 MONITOR_TURN_OFF, /*!< Turn off the counter */
564 MONITOR_RESET_VALUE, /*!< Reset current values */
565 MONITOR_RESET_ALL_VALUE, /*!< Reset all values */
566 MONITOR_GET_VALUE /*!< Option for
567 srv_mon_process_existing_counter()
568 function */
570
571#ifndef UNIV_HOTBACKUP
572
573/** This "monitor_set_tbl" is a bitmap records whether a particular monitor
574counter has been turned on or off */
575extern std::bitset<NUM_MONITOR> monitor_set_tbl;
576
577/** Macros to turn on/off the control bit in monitor_set_tbl for a monitor
578counter option. */
579#define MONITOR_ON(monitor) monitor_set_tbl.set(monitor)
580
581#define MONITOR_OFF(monitor) monitor_set_tbl.reset(monitor)
582
583/** Check whether the requested monitor is turned on/off */
584#define MONITOR_IS_ON(monitor) monitor_set_tbl.test(monitor)
585
586/** The actual monitor counter array that records each monitor counter
587value */
589
590/** Following are macro defines for basic monitor counter manipulations.
591Please note we do not provide any synchronization for these monitor
592operations due to performance consideration. Most counters can
593be placed under existing mutex protections in respective code
594module. */
595
596/** Macros to access various fields of a monitor counters */
597#define MONITOR_FIELD(monitor, field) (innodb_counter_value[monitor].field)
598
599#define MONITOR_VALUE(monitor) MONITOR_FIELD(monitor, mon_value)
600
601#define MONITOR_MAX_VALUE(monitor) MONITOR_FIELD(monitor, mon_max_value)
602
603#define MONITOR_MIN_VALUE(monitor) MONITOR_FIELD(monitor, mon_min_value)
604
605#define MONITOR_VALUE_RESET(monitor) MONITOR_FIELD(monitor, mon_value_reset)
606
607#define MONITOR_MAX_VALUE_START(monitor) \
608 MONITOR_FIELD(monitor, mon_max_value_start)
609
610#define MONITOR_MIN_VALUE_START(monitor) \
611 MONITOR_FIELD(monitor, mon_min_value_start)
612
613#define MONITOR_LAST_VALUE(monitor) MONITOR_FIELD(monitor, mon_last_value)
614
615#define MONITOR_START_VALUE(monitor) MONITOR_FIELD(monitor, mon_start_value)
616
617#define MONITOR_VALUE_SINCE_START(monitor) \
618 (MONITOR_VALUE(monitor) + MONITOR_VALUE_RESET(monitor))
619
620#define MONITOR_STATUS(monitor) MONITOR_FIELD(monitor, mon_status)
621
622#define MONITOR_SET_START(monitor) \
623 do { \
624 MONITOR_STATUS(monitor) = MONITOR_STARTED; \
625 MONITOR_FIELD((monitor), mon_start_time) = \
626 std::chrono::system_clock::now(); \
627 } while (0)
628
629#define MONITOR_SET_OFF(monitor) \
630 do { \
631 MONITOR_STATUS(monitor) = MONITOR_STOPPED; \
632 MONITOR_FIELD((monitor), mon_stop_time) = \
633 std::chrono::system_clock::now(); \
634 } while (0)
635
636#define MONITOR_INIT_ZERO_VALUE 0
637
638/** Max and min values are initialized when we first turn on the monitor
639counter, and set the MONITOR_STATUS. */
640#define MONITOR_MAX_MIN_NOT_INIT(monitor) \
641 (MONITOR_STATUS(monitor) == MONITOR_INIT_ZERO_VALUE && \
642 MONITOR_MIN_VALUE(monitor) == MONITOR_INIT_ZERO_VALUE && \
643 MONITOR_MAX_VALUE(monitor) == MONITOR_INIT_ZERO_VALUE)
644
645#define MONITOR_INIT(monitor) \
646 if (MONITOR_MAX_MIN_NOT_INIT(monitor)) { \
647 MONITOR_MIN_VALUE(monitor) = MIN_RESERVED; \
648 MONITOR_MIN_VALUE_START(monitor) = MIN_RESERVED; \
649 MONITOR_MAX_VALUE(monitor) = MAX_RESERVED; \
650 MONITOR_MAX_VALUE_START(monitor) = MAX_RESERVED; \
651 }
652
653#ifdef UNIV_DEBUG_VALGRIND
654#define MONITOR_CHECK_DEFINED(value) \
655 do { \
656 UNIV_MEM_ASSERT_RW(&value, sizeof value); \
657 } while (0)
658#else /* UNIV_DEBUG_VALGRIND */
659#define MONITOR_CHECK_DEFINED(value) (void)0
660#endif /* UNIV_DEBUG_VALGRIND */
661
662/** Macros to increment/decrement the counters. The normal
663monitor counter operation expects appropriate synchronization
664already exists. No additional mutex is necessary when operating
665on the counters */
666#define MONITOR_INC(monitor) monitor_inc_value(monitor, 1)
667#define MONITOR_DEC(monitor) monitor_dec(monitor)
668#define MONITOR_INC_VALUE(monitor, value) monitor_inc_value(monitor, value)
669#define MONITOR_DEC_VALUE(monitor, value) monitor_dec_value(monitor, value)
670
671/* Increment/decrement counter without check the monitor on/off bit, which
672could already be checked as a module group */
673#define MONITOR_INC_NOCHECK(monitor) monitor_inc_value_nocheck(monitor, 1)
674#define MONITOR_DEC_NOCHECK(monitor) monitor_dec_value_nocheck(monitor, 1)
675
676/** Atomically increment a monitor counter.
677Use MONITOR_INC if appropriate mutex protection exists.
678@param monitor monitor to be incremented by 1 */
679#define MONITOR_ATOMIC_INC(monitor) monitor_atomic_inc(monitor, 1)
680
681#define MONITOR_ATOMIC_INC_VALUE(monitor, value) \
682 monitor_atomic_inc(monitor, value)
683
684/** Atomically decrement a monitor counter.
685Use MONITOR_DEC if appropriate mutex protection exists.
686@param monitor monitor to be decremented by 1 */
687#define MONITOR_ATOMIC_DEC(monitor) monitor_atomic_dec(monitor)
688
690 if (value > MONITOR_MAX_VALUE(monitor)) {
691 MONITOR_MAX_VALUE(monitor) = value;
692 }
693}
694
696 if (value < MONITOR_MIN_VALUE(monitor)) {
697 MONITOR_MIN_VALUE(monitor) = value;
698 }
699}
700
701inline void monitor_atomic_inc(monitor_id_t monitor, mon_type_t inc_value) {
702 if (MONITOR_IS_ON(monitor)) {
703 const mon_type_t value =
704 MONITOR_VALUE(monitor).fetch_add(inc_value) + inc_value;
705 /* Note: This is not 100% accurate because of the inherent race, we ignore
706 it due to performance. */
708 }
709}
710
711inline void monitor_atomic_dec(monitor_id_t monitor) {
712 if (MONITOR_IS_ON(monitor)) {
713 const mon_type_t value = --MONITOR_VALUE(monitor);
714 /* Note: This is not 100% accurate because of the inherent race, we ignore
715 it due to performance. */
717 }
718}
719
721 bool set_max = true) {
722 /* We use std::memory_order_relaxed load() and store() as two separate steps,
723 instead of single atomic fetch_add operation, because we want to leave it
724 non-atomic as it was before changing mon_value to std::atomic.*/
725 const auto new_value =
726 MONITOR_VALUE(monitor).load(std::memory_order_relaxed) + value;
727 MONITOR_VALUE(monitor).store(new_value, std::memory_order_relaxed);
728 if (set_max) {
729 monitor_set_max_value(monitor, new_value);
730 }
731}
732
735 if (MONITOR_IS_ON(monitor)) {
737 }
738}
739
741 /* We use std::memory_order_relaxed load() and store() as two separate steps,
742 instead of single atomic fetch_sub operation, because we want to leave it
743 non-atomic as it was before changing mon_value to std::atomic.*/
744 const auto new_value =
745 MONITOR_VALUE(monitor).load(std::memory_order_relaxed) - value;
746 MONITOR_VALUE(monitor).store(new_value, std::memory_order_relaxed);
747 monitor_set_min_value(monitor, new_value);
748}
749
752 if (MONITOR_IS_ON(monitor)) {
753 ut_ad(MONITOR_VALUE(monitor) >= value);
755 }
756}
757
758inline void monitor_dec(monitor_id_t monitor) {
759 if (MONITOR_IS_ON(monitor)) {
760 monitor_dec_value_nocheck(monitor, 1);
761 }
762}
763
764/** Directly set a monitor counter's value */
765#define MONITOR_SET(monitor, value) monitor_set(monitor, value, true, true)
766
767/** Sets a value to the monitor counter
768@param monitor monitor to update
769@param value value to set
770@param set_max says whether to update MONITOR_MAX_VALUE
771@param set_min says whether to update MONITOR_MIN_VALUE */
772inline void monitor_set(monitor_id_t monitor, mon_type_t value, bool set_max,
773 bool set_min) {
775 if (MONITOR_IS_ON(monitor)) {
776 MONITOR_VALUE(monitor).store(value, std::memory_order_relaxed);
777 if (set_max) {
779 }
780 if (set_min) {
782 }
783 }
784}
785
786/** Add time difference between now and input "value" to the monitor counter
787@param monitor monitor to update for the time difference
788@param value the start time value */
789#define MONITOR_INC_TIME(monitor, value) monitor_inc_time(monitor, value)
790
791inline void monitor_inc_time(monitor_id_t monitor,
792 std::chrono::steady_clock::time_point value) {
794 if (MONITOR_IS_ON(monitor)) {
795 const mon_type_t new_value =
796 MONITOR_VALUE(monitor).load(std::memory_order_relaxed) +
797 std::chrono::duration_cast<std::chrono::microseconds>(
798 std::chrono::steady_clock::now() - value)
799 .count();
800 MONITOR_VALUE(monitor).store(new_value, std::memory_order_relaxed);
801 }
802}
803
804/** This macro updates 3 counters in one call. However, it only checks the
805main/first monitor counter 'monitor', to see it is on or off to decide
806whether to do the update.
807@param monitor the main monitor counter to update. It accounts for
808 the accumulative value for the counter.
809@param monitor_n_calls counter that counts number of times this macro is
810 called
811@param monitor_per_call counter that records the current and max value of
812 each incremental value
813@param value incremental value to record this time */
814#define MONITOR_INC_VALUE_CUMULATIVE(monitor, monitor_n_calls, \
815 monitor_per_call, value) \
816 monitor_inc_value_cumulative(monitor, monitor_n_calls, monitor_per_call, \
817 value)
818
820 monitor_id_t monitor_n_calls,
821 monitor_id_t monitor_per_call,
824 if (MONITOR_IS_ON(monitor)) {
825 monitor_inc_value_nocheck(monitor_n_calls, 1, false);
826 monitor_set(monitor_per_call, value, true, false);
828 }
829}
830
831/** Directly set a monitor counter's value, and if the value
832is monotonically increasing, only max value needs to be updated */
833#define MONITOR_SET_UPD_MAX_ONLY(monitor, value) \
834 monitor_set(monitor, value, true, false)
835
836/** Some values such as log sequence number are monotonically increasing
837number, do not need to record max/min values */
838#define MONITOR_SET_SIMPLE(monitor, value) \
839 monitor_set(monitor, value, false, false)
840
841/** Reset the monitor value and max/min value to zero. The reset
842operation would only be conducted when the counter is turned off */
843#define MONITOR_RESET_ALL(monitor) monitor_reset_all(monitor)
844
845inline void monitor_reset_all(monitor_id_t monitor) {
847 std::memory_order_relaxed);
854 MONITOR_FIELD(monitor, mon_start_time) = {};
855 MONITOR_FIELD(monitor, mon_stop_time) = {};
856 MONITOR_FIELD(monitor, mon_reset_time) = {};
857}
858
859/** Following four macros defines necessary operations to fetch and
860consolidate information from existing system status variables. */
861
862/** Save the passed-in value to mon_start_value field of monitor
863counters */
864#define MONITOR_SAVE_START(monitor, value) \
865 do { \
866 MONITOR_CHECK_DEFINED(value); \
867 (MONITOR_START_VALUE(monitor) = \
868 (mon_type_t)(value)-MONITOR_VALUE_RESET(monitor)); \
869 } while (0)
870
871/** Save the passed-in value to mon_last_value field of monitor
872counters */
873#define MONITOR_SAVE_LAST(monitor) monitor_save_last(monitor)
874
875inline void monitor_save_last(monitor_id_t monitor) {
876 const auto value = MONITOR_VALUE(monitor).load(std::memory_order_relaxed);
877 MONITOR_LAST_VALUE(monitor) = value;
878 MONITOR_START_VALUE(monitor) += value;
879}
880
881/** Set monitor value to the difference of value and mon_start_value
882compensated by mon_last_value if accumulated value is required. */
883#define MONITOR_SET_DIFF(monitor, value) \
884 MONITOR_SET_UPD_MAX_ONLY(monitor, ((value)-MONITOR_VALUE_RESET(monitor) - \
885 MONITOR_FIELD(monitor, mon_start_value) + \
886 MONITOR_FIELD(monitor, mon_last_value)))
887
888/** Get monitor's monitor_info_t by its monitor id (index into the
889 innodb_counter_info array
890 @return Point to corresponding monitor_info_t, or NULL if no such
891 monitor */
893 monitor_id_t monitor_id); /*!< id index into the
894 innodb_counter_info array */
895/** Get monitor's name by its monitor id (index into the
896 innodb_counter_info array
897 @return corresponding monitor name, or NULL if no such
898 monitor */
899const char *srv_mon_get_name(
900 monitor_id_t monitor_id); /*!< id index into the
901 innodb_counter_info array */
902
903/** Turn on/off/reset monitor counters in a module. If module_value
904 is NUM_MONITOR then turn on all monitor counters. */
906 monitor_id_t module_id, /*!< in: Module ID as in
907 monitor_counter_id. If it is
908 set to NUM_MONITOR, this means
909 we shall turn on all the counters */
910 mon_option_t set_option); /*!< in: Turn on/off reset the
911 counter */
912/** This function consolidates some existing server counters used
913 by "system status variables". These existing system variables do not have
914 mechanism to start/stop and reset the counters, so we simulate these
915 controls by remembering the corresponding counter values when the
916 corresponding monitors are turned on/off/reset, and do appropriate
917 mathematics to deduct the actual value. */
919 monitor_id_t monitor_id, /*!< in: the monitor's ID as in
920 monitor_counter_id */
921 mon_option_t set_option); /*!< in: Turn on/off reset the
922 counter */
923/** This function is used to calculate the maximum counter value
924 since the start of monitor counter
925 @return max counter value since start. */
927 monitor_id_t monitor); /*!< in: monitor id */
928/** This function is used to calculate the minimum counter value
929 since the start of monitor counter
930 @return min counter value since start. */
932 monitor_id_t monitor); /*!< in: monitor id*/
933/** Reset a monitor, create a new base line with the current monitor
934 value. This baseline is recorded by MONITOR_VALUE_RESET(monitor) */
935void srv_mon_reset(monitor_id_t monitor); /*!< in: monitor id*/
936/** This function resets all values of a monitor counter */
937static inline void srv_mon_reset_all(
938 monitor_id_t monitor); /*!< in: monitor id*/
939/** Turn on monitor counters that are marked as default ON. */
940void srv_mon_default_on(void);
941
942#include "srv0mon.ic"
943#else /* !UNIV_HOTBACKUP */
944#define MONITOR_INC(x) ((void)0)
945#define MONITOR_DEC(x) ((void)0)
946#endif /* !UNIV_HOTBACKUP */
947
948#define MONITOR_INC_WAIT_STATS_EX(monitor_prefix, monitor_sufix, wait_stats) \
949 if ((wait_stats).wait_loops == 0) { \
950 MONITOR_INC(monitor_prefix##NO_WAITS##monitor_sufix); \
951 } else { \
952 MONITOR_INC(monitor_prefix##WAITS##monitor_sufix); \
953 MONITOR_INC_VALUE(monitor_prefix##WAIT_LOOPS##monitor_sufix, \
954 (wait_stats).wait_loops); \
955 }
956
957#define MONITOR_INC_WAIT_STATS(monitor_prefix, wait_stats) \
958 MONITOR_INC_WAIT_STATS_EX(monitor_prefix, , wait_stats);
959
960#endif
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
#define MONITOR_MAX_VALUE(monitor)
Definition: srv0mon.h:601
monitor_value_t innodb_counter_value[NUM_MONITOR]
The actual monitor counter array that records each monitor counter value.
Definition: srv0mon.cc:1428
void monitor_dec_value_nocheck(monitor_id_t monitor, mon_type_t value)
Definition: srv0mon.h:740
static void srv_mon_reset_all(monitor_id_t monitor)
This function resets all values of a monitor counter.
int64_t mon_type_t
Monitor counter value type.
Definition: srv0mon.h:57
monitor_type_t
Following defines are possible values for "monitor_type" field in "struct monitor_info".
Definition: srv0mon.h:92
@ MONITOR_NO_AVERAGE
Set this status if we don't want to calculate the average value for the counter.
Definition: srv0mon.h:98
@ MONITOR_HIDDEN
Do not display this monitor in the metrics table.
Definition: srv0mon.h:111
@ MONITOR_EXISTING
The monitor carries information from an existing system status variable.
Definition: srv0mon.h:96
@ MONITOR_NONE
No monitoring.
Definition: srv0mon.h:93
@ MONITOR_GROUP_MODULE
Monitor can be turned on/off only as a module, but not individually.
Definition: srv0mon.h:104
@ MONITOR_SET_OWNER
Owner of "monitor set", a set of monitor counters.
Definition: srv0mon.h:108
@ MONITOR_SET_MEMBER
Being part of a "monitor set".
Definition: srv0mon.h:110
@ MONITOR_MODULE
This is a monitor module type, not a counter.
Definition: srv0mon.h:94
@ MONITOR_DEFAULT_ON
Monitor will be turned on by default at server start up.
Definition: srv0mon.h:106
@ MONITOR_DISPLAY_CURRENT
Display current value of the counter, rather than incremental value over the period.
Definition: srv0mon.h:100
static mon_type_t srv_mon_calc_max_since_start(monitor_id_t monitor)
This function is used to calculate the maximum counter value since the start of monitor counter.
#define MONITOR_IS_ON(monitor)
Check whether the requested monitor is turned on/off.
Definition: srv0mon.h:584
void monitor_inc_value(monitor_id_t monitor, mon_type_t value)
Definition: srv0mon.h:733
void srv_mon_set_module_control(monitor_id_t module_id, mon_option_t set_option)
Turn on/off/reset monitor counters in a module.
Definition: srv0mon.cc:1466
#define MONITOR_MIN_VALUE(monitor)
Definition: srv0mon.h:603
#define MIN_RESERVED
Counter minimum value is initialized to be max value of mon_type_t (int64_t)
Definition: srv0mon.h:117
mon_option_t
Following are the "set_option" values allowed for srv_mon_process_existing_counter() and srv_mon_proc...
Definition: srv0mon.h:561
@ MONITOR_TURN_OFF
Turn off the counter.
Definition: srv0mon.h:563
@ MONITOR_GET_VALUE
Option for srv_mon_process_existing_counter() function.
Definition: srv0mon.h:566
@ MONITOR_RESET_VALUE
Reset current values.
Definition: srv0mon.h:564
@ MONITOR_RESET_ALL_VALUE
Reset all values.
Definition: srv0mon.h:565
@ MONITOR_TURN_ON
Turn on the counter.
Definition: srv0mon.h:562
void monitor_atomic_dec(monitor_id_t monitor)
Definition: srv0mon.h:711
void monitor_inc_time(monitor_id_t monitor, std::chrono::steady_clock::time_point value)
Definition: srv0mon.h:791
#define MONITOR_MIN_VALUE_START(monitor)
Definition: srv0mon.h:610
void monitor_atomic_inc(monitor_id_t monitor, mon_type_t inc_value)
Definition: srv0mon.h:701
void srv_mon_reset(monitor_id_t monitor)
Reset a monitor, create a new base line with the current monitor value.
Definition: srv0mon.cc:2051
void monitor_inc_value_cumulative(monitor_id_t monitor, monitor_id_t monitor_n_calls, monitor_id_t monitor_per_call, mon_type_t value)
Definition: srv0mon.h:819
void monitor_set_min_value(monitor_id_t monitor, mon_type_t value)
Definition: srv0mon.h:695
void monitor_inc_value_nocheck(monitor_id_t monitor, mon_type_t value, bool set_max=true)
Definition: srv0mon.h:720
void monitor_dec(monitor_id_t monitor)
Definition: srv0mon.h:758
#define MONITOR_VALUE_RESET(monitor)
Definition: srv0mon.h:605
const char * srv_mon_get_name(monitor_id_t monitor_id)
Get monitor's name by its monitor id (index into the innodb_counter_info array.
Definition: srv0mon.cc:1452
enum monitor_running_status monitor_running_t
Definition: srv0mon.h:54
void monitor_save_last(monitor_id_t monitor)
Definition: srv0mon.h:875
static mon_type_t srv_mon_calc_min_since_start(monitor_id_t monitor)
This function is used to calculate the minimum counter value since the start of monitor counter.
monitor_running_status
Possible status values for "mon_status" in "struct monitor_value".
Definition: srv0mon.h:49
@ MONITOR_STARTED
Monitor has been turned on.
Definition: srv0mon.h:50
@ MONITOR_STOPPED
Monitor has been turned off.
Definition: srv0mon.h:51
#define MONITOR_CHECK_DEFINED(value)
Definition: srv0mon.h:659
monitor_id_t
This enumeration defines internal monitor identifier used internally to identify each particular coun...
Definition: srv0mon.h:133
@ MONITOR_LRU_UNZIP_SEARCH_SCANNED_NUM_CALL
Definition: srv0mon.h:251
@ MONITOR_OVLD_BUF_POOL_PAGE_TOTAL
Definition: srv0mon.h:178
@ MONITOR_OS_PENDING_WRITES
Definition: srv0mon.h:300
@ MONITOR_OVLD_LSN_CURRENT
Definition: srv0mon.h:346
@ MONITOR_MODULE_ADAPTIVE_HASH
Definition: srv0mon.h:423
@ MONITOR_OVLD_OS_LOG_WRITTEN
Definition: srv0mon.h:301
@ MONITOR_LRU_UNZIP_SEARCH_SCANNED
Definition: srv0mon.h:250
@ NUM_MONITOR
Definition: srv0mon.h:532
@ MONITOR_OVLD_RWLOCK_X_SPIN_ROUNDS
Definition: srv0mon.h:467
@ MONITOR_LOG_FREE_SPACE
Definition: srv0mon.h:368
@ MONITOR_NUM_RECLOCK
Definition: srv0mon.h:158
@ MONITOR_PAD_DECREMENTS
Definition: srv0mon.h:411
@ MONITOR_INDEX_IBUF_LEAF_PAGE_READ
Definition: srv0mon.h:258
@ MONITOR_OVLD_LSN_CHECKPOINT
Definition: srv0mon.h:345
@ MONITOR_MODULE_DBLWR
Definition: srv0mon.h:521
@ MONITOR_OTHER_PAGE_WRITTEN
Definition: srv0mon.h:289
@ MONITOR_MODULE_PAGE_TRACK
Definition: srv0mon.h:515
@ MONITOR_MODULE_OS
Definition: srv0mon.h:295
@ MONITOR_LOG_CHECKPOINTS
Definition: srv0mon.h:367
@ MONITOR_ZBLOB2_PAGE_WRITTEN
Definition: srv0mon.h:287
@ MONITOR_LOG_FLUSHER_NO_WAITS
Definition: srv0mon.h:377
@ MONITOR_UNDO_TRUNCATE_MICROSECOND
Definition: srv0mon.h:340
@ MONITOR_RSEG_HISTORY_LEN
Definition: srv0mon.h:320
@ MONITOR_OVLD_LOCK_WAIT_TIME
Definition: srv0mon.h:163
@ MONITOR_INDEX_REORG_ATTEMPTS
Definition: srv0mon.h:418
@ MONITOR_OVLD_BUF_POOL_WAIT_FREE
Definition: srv0mon.h:175
@ MONITOR_FSP_HDR_PAGE_READ
Definition: srv0mon.h:266
@ MONITOR_RECLOCK_CREATED
Definition: srv0mon.h:156
@ MONITOR_DEADLOCK_FALSE_POSITIVES
Definition: srv0mon.h:147
@ MONITOR_FLUSH_BACKGROUND_TOTAL_PAGE
Definition: srv0mon.h:230
@ MONITOR_OVLD_PAGES_READ
Definition: srv0mon.h:187
@ MONITOR_TRX_ROLLBACK
Definition: srv0mon.h:312
@ MONITOR_OLVD_SYSTEM_ROW_READ
Definition: srv0mon.h:479
@ MONITOR_OVLD_BYTE_WRITTEN
Definition: srv0mon.h:189
@ MONITOR_LOG_WRITE_NOTIFIER_NO_WAITS
Definition: srv0mon.h:381
@ MONITOR_CPU_N
Definition: srv0mon.h:513
@ MONITOR_DBLWR_SYNC_REQUESTS
Definition: srv0mon.h:523
@ MONITOR_FLUSH_AVG_TIME
Definition: srv0mon.h:210
@ MONITOR_DEADLOCK_ROUNDS
Definition: srv0mon.h:148
@ MONITOR_LOG_ON_RECENT_CLOSED_WAIT_LOOPS
Definition: srv0mon.h:398
@ MONITOR_ICP_NO_MATCH
Definition: srv0mon.h:499
@ MONITOR_OTHER_PAGE_READ
Definition: srv0mon.h:272
@ MONITOR_LRU_BATCH_FLUSH_AVG_PASS
Definition: srv0mon.h:213
@ MONITOR_FLUSH_BATCH_SCANNED
Definition: srv0mon.h:190
@ MONITOR_TABLELOCK_REMOVED
Definition: srv0mon.h:160
@ MONITOR_LOG_FLUSH_LSN_AVG_RATE
Definition: srv0mon.h:361
@ MONITOR_PAGE_DECOMPRESS
Definition: srv0mon.h:409
@ MONITOR_OVLD_IBUF_MERGE_PURGE
Definition: srv0mon.h:441
@ MONITOR_TRX_SYSTEM_PAGE_READ
Definition: srv0mon.h:265
@ MONITOR_OVLD_IBUF_MERGES
Definition: srv0mon.h:445
@ MONITOR_PAGE_TRACK_CHECKPOINT_PARTIAL_FLUSH_REQUEST
Definition: srv0mon.h:519
@ MONITOR_FLUSH_AVG_PAGE_RATE
Definition: srv0mon.h:219
@ MONITOR_INDEX_IBUF_LEAF_PAGE_WRITTEN
Definition: srv0mon.h:275
@ MONITOR_FLUSH_N_TO_FLUSH_BY_DIRTY_PAGE
Definition: srv0mon.h:200
@ MONITOR_FLUSH_PCT_FOR_LSN
Definition: srv0mon.h:222
@ MONITOR_FLUSH_N_TO_FLUSH_REQUESTED
Definition: srv0mon.h:199
@ MONITOR_FLUSH_BATCH_SCANNED_NUM_CALL
Definition: srv0mon.h:191
@ MONITOR_INDEX_NON_LEAF_PAGE_READ
Definition: srv0mon.h:257
@ MONITOR_LRU_GET_FREE_WAITS
Definition: srv0mon.h:217
@ MONITOR_FLUSH_ADAPTIVE_TOTAL_PAGE
Definition: srv0mon.h:224
@ MONITOR_LOG_FLUSHER_WAITS
Definition: srv0mon.h:378
@ MONITOR_FLUSH_N_TO_FLUSH_BY_AGE
Definition: srv0mon.h:202
@ MONITOR_ALTER_TABLE_SORT_FILES
Definition: srv0mon.h:494
@ MONITOR_ZBLOB_PAGE_READ
Definition: srv0mon.h:269
@ MONITOR_SAMPLED_PAGES_SKIPPED
Definition: srv0mon.h:487
@ MONITOR_FLUSH_SYNC_PAGES
Definition: srv0mon.h:229
@ MONITOR_OVLD_OS_FILE_WRITE
Definition: srv0mon.h:297
@ MONITOR_PAGE_TRACK_RESETS
Definition: srv0mon.h:516
@ MONITOR_LOCKREC_WAIT
Definition: srv0mon.h:151
@ MONITOR_CPU_UTIME_ABS
Definition: srv0mon.h:509
@ MONITOR_RECLOCK_GRANT_ATTEMPTS
Definition: srv0mon.h:155
@ MONITOR_CPU_UTIME_PCT
Definition: srv0mon.h:511
@ MONITOR_OVLD_RWLOCK_S_SPIN_ROUNDS
Definition: srv0mon.h:466
@ MONITOR_UNDO_TRUNCATE
Definition: srv0mon.h:338
@ MONITOR_PURGE_STOP_COUNT
Definition: srv0mon.h:332
@ MONITOR_OVLD_BUF_POOL_READ_REQUESTS
Definition: srv0mon.h:173
@ MONITOR_OVLD_BUF_POOL_PAGES_FREE
Definition: srv0mon.h:184
@ MONITOR_INDEX_SPLIT
Definition: srv0mon.h:415
@ MONITOR_LRU_SINGLE_FLUSH_FAILURE_COUNT
Definition: srv0mon.h:245
@ MONITOR_UNDO_LOG_PAGE_WRITTEN
Definition: srv0mon.h:277
@ MONITOR_FLUSH_BATCH_PAGES
Definition: srv0mon.h:195
@ MONITOR_ALTER_TABLE_LOG_FILES
Definition: srv0mon.h:495
@ MONITOR_FLUSH_SYNC_TOTAL_PAGE
Definition: srv0mon.h:227
@ MONITOR_SCHEDULE_REFRESHES
Definition: srv0mon.h:167
@ MONITOR_TRX_ROLLBACK_SAVEPOINT
Definition: srv0mon.h:313
@ MONITOR_PAD_INCREMENTS
Definition: srv0mon.h:410
@ MONITOR_OVLD_MAX_AGE_SYNC
Definition: srv0mon.h:353
@ MONITOR_OVLD_BUF_OLDEST_LSN_APPROX
Definition: srv0mon.h:350
@ MONITOR_TRX_ACTIVE
Definition: srv0mon.h:315
@ MONITOR_ADAPTIVE_HASH_PAGE_ADDED
Definition: srv0mon.h:426
@ MONITOR_TABLELOCK_CREATED
Definition: srv0mon.h:159
@ MONITOR_DEADLOCK
Definition: srv0mon.h:146
@ MONITOR_ZBLOB2_PAGE_READ
Definition: srv0mon.h:270
@ MONITOR_MODULE_BUF_PAGE
Definition: srv0mon.h:255
@ MONITOR_INDEX_IBUF_NON_LEAF_PAGE_READ
Definition: srv0mon.h:259
@ MONITOR_OVLD_BUF_POOL_BYTES_DIRTY
Definition: srv0mon.h:183
@ MONITOR_LOG_ON_FLUSH_NO_WAITS
Definition: srv0mon.h:394
@ MONITOR_NUM_TABLELOCK
Definition: srv0mon.h:161
@ MONITOR_LOG_ON_FLUSH_WAIT_LOOPS
Definition: srv0mon.h:396
@ MONITOR_PURGE_TRUNCATE_HISTORY_MICROSECOND
Definition: srv0mon.h:335
@ MONITOR_INDEX_MERGE_ATTEMPTS
Definition: srv0mon.h:416
@ MONITOR_ICP_ATTEMPTS
Definition: srv0mon.h:498
@ MONITOR_INDEX_LEAF_PAGE_WRITTEN
Definition: srv0mon.h:273
@ MONITOR_DBLWR_FLUSH_WAIT_EVENTS
Definition: srv0mon.h:525
@ MONITOR_FLUSH_ADAPTIVE_AVG_PASS
Definition: srv0mon.h:212
@ MONITOR_MASTER_THREAD_SLEEP
Definition: srv0mon.h:450
@ MONITOR_LOG_WRITER_ON_FREE_SPACE_WAITS
Definition: srv0mon.h:374
@ MONITOR_ADAPTIVE_HASH_ROW_ADDED
Definition: srv0mon.h:428
@ MONITOR_SRV_PURGE_MICROSECOND
Definition: srv0mon.h:457
@ MONITOR_SRV_DICT_LRU_EVICT_COUNT
Definition: srv0mon.h:459
@ MONITOR_OVLD_OS_LOG_PENDING_FSYNC
Definition: srv0mon.h:303
@ MONITOR_OVLD_LOG_WAITS
Definition: srv0mon.h:354
@ MONITOR_INDEX_NON_LEAF_PAGE_WRITTEN
Definition: srv0mon.h:274
@ MONITOR_OVLD_ADAPTIVE_HASH_SEARCH_BTREE
Definition: srv0mon.h:425
@ MONITOR_LRU_BATCH_SCANNED_PER_CALL
Definition: srv0mon.h:235
@ MONITOR_INDEX_DISCARD
Definition: srv0mon.h:420
@ MONITOR_IBUF_BITMAP_PAGE_WRITTEN
Definition: srv0mon.h:280
@ MONITOR_SRV_MEM_VALIDATE_MICROSECOND
Definition: srv0mon.h:456
@ MONITOR_LOG_FLUSH_MAX_TIME
Definition: srv0mon.h:359
@ MONITOR_LOG_FLUSHER_WAIT_LOOPS
Definition: srv0mon.h:379
@ MONITOR_OVLD_RWLOCK_SX_OS_WAITS
Definition: srv0mon.h:471
@ MONITOR_OVLD_LSN_CHECKPOINT_AGE
Definition: srv0mon.h:348
@ MONITOR_TABLE_REFERENCE
Definition: srv0mon.h:142
@ MONITOR_PAGE_TRACK_FULL_BLOCK_WRITES
Definition: srv0mon.h:518
@ MONITOR_FLUSH_ADAPTIVE_PAGES
Definition: srv0mon.h:226
@ MONITOR_TRX_NL_RO_COMMIT
Definition: srv0mon.h:310
@ MONITOR_OVLD_BUF_POOL_WRITE_REQUEST
Definition: srv0mon.h:174
@ MONITOR_LOG_WRITE_TO_FILE_REQUESTS_INTERVAL
Definition: srv0mon.h:389
@ MONITOR_OVLD_BUFFER_POOL_SIZE
Definition: srv0mon.h:171
@ MONITOR_LOG_PARTIAL_BLOCK_WRITES
Definition: srv0mon.h:364
@ MONITOR_LOG_FLUSH_NOTIFIER_NO_WAITS
Definition: srv0mon.h:385
@ MONITOR_LOG_FLUSH_TOTAL_TIME
Definition: srv0mon.h:358
@ MONITOR_FLUSH_SYNC_COUNT
Definition: srv0mon.h:228
@ MONITOR_TABLELOCK_WAIT
Definition: srv0mon.h:152
@ MONITOR_FLUSH_LSN_AVG_RATE
Definition: srv0mon.h:220
@ MONITOR_MODULE_BUFFER
Definition: srv0mon.h:170
@ MONITOR_OVLD_PAGE_CREATED
Definition: srv0mon.h:185
@ MONITOR_FLUSH_BATCH_TOTAL_PAGE
Definition: srv0mon.h:193
@ MONITOR_MODULE_TRX
Definition: srv0mon.h:307
@ MONITOR_TRX_SYSTEM_PAGE_WRITTEN
Definition: srv0mon.h:282
@ MONITOR_ADAPTIVE_HASH_ROW_REMOVED
Definition: srv0mon.h:429
@ MONITOR_OVLD_RWLOCK_S_OS_WAITS
Definition: srv0mon.h:469
@ MONITOR_LRU_GET_FREE_LOOPS
Definition: srv0mon.h:216
@ MONITOR_FLUSH_BATCH_SCANNED_PER_CALL
Definition: srv0mon.h:192
@ MONITOR_RECLOCK_RELEASE_ATTEMPTS
Definition: srv0mon.h:154
@ MONITOR_FLUSH_BACKGROUND_PAGES
Definition: srv0mon.h:232
@ MONITOR_MODULE_LOCK
Definition: srv0mon.h:145
@ MONITOR_FLUSH_SYNC_WAITS
Definition: srv0mon.h:223
@ MONITOR_OVLD_ROW_LOCK_WAIT
Definition: srv0mon.h:165
@ MONITOR_INODE_PAGE_WRITTEN
Definition: srv0mon.h:278
@ MONITOR_MODULE_LATCHES
Definition: srv0mon.h:504
@ MONITOR_RECLOCK_REMOVED
Definition: srv0mon.h:157
@ MONITOR_FLUSH_NEIGHBOR_COUNT
Definition: srv0mon.h:197
@ MONITOR_MASTER_IDLE_LOOPS
Definition: srv0mon.h:453
@ MONITOR_MODULE_INDEX
Definition: srv0mon.h:414
@ MONITOR_ICP_OUT_OF_RANGE
Definition: srv0mon.h:500
@ MONITOR_OVLD_LSN_FLUSHDISK
Definition: srv0mon.h:344
@ MONITOR_LOG_ON_WRITE_WAIT_LOOPS
Definition: srv0mon.h:393
@ MONITOR_OVLD_RWLOCK_X_SPIN_WAITS
Definition: srv0mon.h:464
@ MONITOR_BACKGROUND_DROP_TABLE
Definition: srv0mon.h:491
@ MONITOR_OVLD_RWLOCK_SX_SPIN_WAITS
Definition: srv0mon.h:465
@ MONITOR_LRU_BATCH_SCANNED
Definition: srv0mon.h:233
@ MONITOR_OVLD_SERVER_ACTIVITY
Definition: srv0mon.h:451
@ MONITOR_TRX_ROLLBACK_ACTIVE
Definition: srv0mon.h:314
@ MONITOR_OVLD_LOG_WRITES
Definition: srv0mon.h:356
@ MONITOR_LOG_ON_WRITE_WAITS
Definition: srv0mon.h:392
@ MONITOR_UNDO_TRUNCATE_COUNT
Definition: srv0mon.h:339
@ MONITOR_OVLD_BUF_POOL_READ_AHEAD
Definition: srv0mon.h:176
@ MONITOR_SYSTEM_PAGE_READ
Definition: srv0mon.h:264
@ MONITOR_SRV_BACKGROUND_DROP_TABLE_MICROSECOND
Definition: srv0mon.h:454
@ MONITOR_OVLD_PAGES_WRITTEN
Definition: srv0mon.h:186
@ MONITOR_ICP_MATCH
Definition: srv0mon.h:501
@ MONITOR_OVLD_ADAPTIVE_HASH_SEARCH
Definition: srv0mon.h:424
@ MONITOR_FLUSH_ADAPTIVE_AVG_TIME_EST
Definition: srv0mon.h:208
@ MONITOR_IBUF_FREELIST_PAGE_READ
Definition: srv0mon.h:262
@ MONITOR_LOG_FLUSH_AVG_TIME
Definition: srv0mon.h:360
@ MONITOR_OVLD_RWLOCK_S_SPIN_WAITS
Definition: srv0mon.h:463
@ MONITOR_CPU_STIME_ABS
Definition: srv0mon.h:510
@ MONITOR_OLVD_SYSTEM_ROW_DELETED
Definition: srv0mon.h:481
@ MONITOR_RSEG_CUR_SIZE
Definition: srv0mon.h:323
@ MONITOR_OVLD_LOCK_MAX_WAIT_TIME
Definition: srv0mon.h:164
@ MONITOR_LOG_FULL_BLOCK_WRITES
Definition: srv0mon.h:363
@ MONITOR_FLUSH_ADAPTIVE_AVG_TIME_SLOT
Definition: srv0mon.h:203
@ MONITOR_LRU_SINGLE_FLUSH_SCANNED
Definition: srv0mon.h:242
@ MONITOR_OLVD_SYSTEM_ROW_INSERTED
Definition: srv0mon.h:480
@ MONITOR_BLOB_PAGE_READ
Definition: srv0mon.h:268
@ MONITOR_LOG_ON_BUFFER_SPACE_NO_WAITS
Definition: srv0mon.h:399
@ MONITOR_LOG_CONCURRENCY_MARGIN
Definition: srv0mon.h:369
@ MONITOR_TRX_COMMIT_UNDO
Definition: srv0mon.h:311
@ MONITOR_DML_PURGE_DELAY
Definition: srv0mon.h:331
@ MONITOR_LRU_BATCH_FLUSH_AVG_TIME_EST
Definition: srv0mon.h:209
@ MONITOR_RSEG_ARRAY_PAGE_WRITTEN
Definition: srv0mon.h:288
@ MONITOR_IBUF_BITMAP_PAGE_READ
Definition: srv0mon.h:263
@ MONITOR_LOG_ON_FILE_SPACE_WAITS
Definition: srv0mon.h:403
@ MONITOR_LRU_BATCH_FLUSH_TOTAL_PAGE
Definition: srv0mon.h:236
@ MONITOR_LRU_SINGLE_FLUSH_SCANNED_PER_CALL
Definition: srv0mon.h:244
@ MONITOR_LRU_SEARCH_SCANNED
Definition: srv0mon.h:247
@ MONITOR_OVLD_RWLOCK_SX_SPIN_ROUNDS
Definition: srv0mon.h:468
@ MONITOR_OVLD_SRV_PAGE_SIZE
Definition: srv0mon.h:462
@ MONITOR_OVLD_OS_FILE_READ
Definition: srv0mon.h:296
@ MONITOR_TRX_ON_LOG_WAITS
Definition: srv0mon.h:318
@ MONITOR_LRU_BATCH_FLUSH_COUNT
Definition: srv0mon.h:237
@ MONITOR_N_DEL_ROW_PURGE
Definition: srv0mon.h:327
@ MONITOR_OVLD_LOG_WRITE_REQUEST
Definition: srv0mon.h:355
@ MONITOR_OVLD_OS_FSYNC
Definition: srv0mon.h:298
@ MONITOR_FLUSH_ADAPTIVE_AVG_TIME_THREAD
Definition: srv0mon.h:206
@ MONITOR_MODULE_REDO_LOG
Definition: srv0mon.h:343
@ MONITOR_OS_PENDING_READS
Definition: srv0mon.h:299
@ MONITOR_LOG_ON_FILE_SPACE_WAIT_LOOPS
Definition: srv0mon.h:404
@ MONITOR_OVLD_BUF_POOL_PAGES_DATA
Definition: srv0mon.h:180
@ MONITOR_OVLD_RWLOCK_X_OS_WAITS
Definition: srv0mon.h:470
@ MONITOR_FLUSH_PCT_FOR_DIRTY
Definition: srv0mon.h:221
@ MONITOR_OVLD_IBUF_MERGE_DISCARD_INSERT
Definition: srv0mon.h:442
@ MONITOR_ON_LOG_NO_WAITS_PAGE_WRITTEN
Definition: srv0mon.h:290
@ MONITOR_MODULE_IBUF_SYSTEM
Definition: srv0mon.h:438
@ MONITOR_CPU_STIME_PCT
Definition: srv0mon.h:512
@ MONITOR_TIMEOUT
Definition: srv0mon.h:150
@ MONITOR_OVLD_IBUF_MERGE_INSERT
Definition: srv0mon.h:439
@ MONITOR_MODULE_CPU
Definition: srv0mon.h:508
@ MONITOR_INDEX_IBUF_NON_LEAF_PAGE_WRITTEN
Definition: srv0mon.h:276
@ MONITOR_PURGE_TRUNCATE_HISTORY_COUNT
Definition: srv0mon.h:334
@ MONITOR_OVLD_LSN_BUF_DIRTY_PAGES_ADDED
Definition: srv0mon.h:349
@ MONITOR_OVLD_BUF_POOL_READS
Definition: srv0mon.h:172
@ MONITOR_OLVD_ROW_DELETED
Definition: srv0mon.h:477
@ MONITOR_ADAPTIVE_HASH_ROW_REMOVE_NOT_FOUND
Definition: srv0mon.h:430
@ MONITOR_LATCHES
Definition: srv0mon.h:505
@ MONITOR_NUM_UNDO_SLOT_CACHED
Definition: srv0mon.h:322
@ MONITOR_OVLD_MAX_AGE_ASYNC
Definition: srv0mon.h:352
@ MONITOR_OVLD_SRV_DBLWR_WRITES
Definition: srv0mon.h:460
@ MONITOR_DEFAULT_START
Definition: srv0mon.h:136
@ MONITOR_LOG_ON_BUFFER_SPACE_WAIT_LOOPS
Definition: srv0mon.h:401
@ MONITOR_NUM_RECLOCK_REQ
Definition: srv0mon.h:153
@ MONITOR_FLUSH_ADAPTIVE_COUNT
Definition: srv0mon.h:225
@ MONITOR_TRX_RO_COMMIT
Definition: srv0mon.h:309
@ MONITOR_MODULE_DDL_STATS
Definition: srv0mon.h:490
@ MONITOR_MASTER_ACTIVE_LOOPS
Definition: srv0mon.h:452
@ MONITOR_LRU_BATCH_SCANNED_NUM_CALL
Definition: srv0mon.h:234
@ MONITOR_LOG_NEXT_FILE
Definition: srv0mon.h:366
@ MONITOR_OLVD_ROW_UPDTATED
Definition: srv0mon.h:478
@ MONITOR_LOG_WRITER_NO_WAITS
Definition: srv0mon.h:371
@ MONITOR_BLOB_PAGE_WRITTEN
Definition: srv0mon.h:285
@ MONITOR_FLUSH_NEIGHBOR_PAGES
Definition: srv0mon.h:198
@ MONITOR_OVLD_LSN_ARCHIVED
Definition: srv0mon.h:347
@ MONITOR_MODULE_METADATA
Definition: srv0mon.h:139
@ MONITOR_OVLD_LOCK_AVG_WAIT_TIME
Definition: srv0mon.h:166
@ MONITOR_OVLD_OS_LOG_FSYNC
Definition: srv0mon.h:302
@ MONITOR_MODULE_SERVER
Definition: srv0mon.h:449
@ MONITOR_ADAPTIVE_HASH_PAGE_REMOVED
Definition: srv0mon.h:427
@ MONITOR_MODULE_PAGE
Definition: srv0mon.h:407
@ MONITOR_OVLD_BUF_OLDEST_LSN_LWM
Definition: srv0mon.h:351
@ MONITOR_RSEG_ARRAY_PAGE_READ
Definition: srv0mon.h:271
@ MONITOR_TRX_ALLOCATIONS
Definition: srv0mon.h:316
@ MONITOR_OVLD_OS_LOG_PENDING_WRITES
Definition: srv0mon.h:304
@ MONITOR_LOG_FLUSH_NOTIFIER_WAITS
Definition: srv0mon.h:386
@ MONITOR_OVLD_SRV_DBLWR_PAGES_WRITTEN
Definition: srv0mon.h:461
@ MONITOR_LRU_BATCH_FLUSH_AVG_TIME_THREAD
Definition: srv0mon.h:207
@ MONITOR_LRU_UNZIP_SEARCH_SCANNED_PER_CALL
Definition: srv0mon.h:252
@ MONITOR_LRU_BATCH_EVICT_PAGES
Definition: srv0mon.h:241
@ MONITOR_LOG_WRITER_ON_ARCHIVER_WAITS
Definition: srv0mon.h:375
@ MONITOR_OLVD_SYSTEM_ROW_UPDATED
Definition: srv0mon.h:482
@ MONITOR_XDES_PAGE_WRITTEN
Definition: srv0mon.h:284
@ MONITOR_MODULE_SAMPLING_STATS
Definition: srv0mon.h:485
@ MONITOR_FLUSH_AVG_PASS
Definition: srv0mon.h:214
@ MONITOR_PAGE_TRACK_PARTIAL_BLOCK_WRITES
Definition: srv0mon.h:517
@ MONITOR_LRU_SEARCH_SCANNED_NUM_CALL
Definition: srv0mon.h:248
@ MONITOR_NUM_UNDO_SLOT_USED
Definition: srv0mon.h:321
@ MONITOR_LOG_ON_BUFFER_SPACE_WAITS
Definition: srv0mon.h:400
@ MONITOR_OVLD_BUF_POOL_READ_AHEAD_EVICTED
Definition: srv0mon.h:177
@ MONITOR_MODULE_ICP
Definition: srv0mon.h:497
@ MONITOR_ON_LOG_WAITS_PAGE_WRITTEN
Definition: srv0mon.h:291
@ MONITOR_INDEX_REORG_SUCCESSFUL
Definition: srv0mon.h:419
@ MONITOR_LOG_WRITE_NOTIFIER_WAIT_LOOPS
Definition: srv0mon.h:383
@ MONITOR_OVLD_N_FILE_OPENED
Definition: srv0mon.h:435
@ MONITOR_PURGE_INVOKED
Definition: srv0mon.h:329
@ MONITOR_FLUSH_NEIGHBOR_TOTAL_PAGE
Definition: srv0mon.h:196
@ MONITOR_OVLD_IBUF_MERGE_DISCARD_PURGE
Definition: srv0mon.h:444
@ MONITOR_OVLD_ROW_LOCK_CURRENT_WAIT
Definition: srv0mon.h:162
@ MONITOR_LRU_GET_FREE_SEARCH
Definition: srv0mon.h:246
@ MONITOR_ON_LOG_WAIT_LOOPS_PAGE_WRITTEN
Definition: srv0mon.h:292
@ MONITOR_ADAPTIVE_HASH_ROW_UPDATED
Definition: srv0mon.h:431
@ MONITOR_LOG_ON_FILE_SPACE_NO_WAITS
Definition: srv0mon.h:402
@ MONITOR_TRX_RW_COMMIT
Definition: srv0mon.h:308
@ MONITOR_INODE_PAGE_READ
Definition: srv0mon.h:261
@ MONITOR_SRV_IBUF_MERGE_MICROSECOND
Definition: srv0mon.h:455
@ MONITOR_LRU_BATCH_FLUSH_AVG_TIME_SLOT
Definition: srv0mon.h:204
@ MONITOR_DBLWR_ASYNC_REQUESTS
Definition: srv0mon.h:522
@ MONITOR_LOG_ON_WRITE_NO_WAITS
Definition: srv0mon.h:391
@ MONITOR_LOG_ON_RECENT_WRITTEN_WAIT_LOOPS
Definition: srv0mon.h:397
@ MONITOR_PURGE_N_PAGE_HANDLED
Definition: srv0mon.h:330
@ MONITOR_TABLE_CLOSE
Definition: srv0mon.h:141
@ MONITOR_LOCK_THREADS_WAITING
Definition: srv0mon.h:149
@ MONITOR_FLUSH_BACKGROUND_COUNT
Definition: srv0mon.h:231
@ MONITOR_INDEX_MERGE_SUCCESSFUL
Definition: srv0mon.h:417
@ MONITOR_ZBLOB_PAGE_WRITTEN
Definition: srv0mon.h:286
@ MONITOR_LRU_BATCH_FLUSH_PAGES
Definition: srv0mon.h:238
@ MONITOR_XDES_PAGE_READ
Definition: srv0mon.h:267
@ MONITOR_OVLD_IBUF_MERGE_DELETE
Definition: srv0mon.h:440
@ MONITOR_OVLD_BUF_POOL_BYTES_DATA
Definition: srv0mon.h:181
@ MONITOR_LRU_SINGLE_FLUSH_SCANNED_NUM_CALL
Definition: srv0mon.h:243
@ MONITOR_TABLE_OPEN
Definition: srv0mon.h:140
@ MONITOR_MODULE_DML_STATS
Definition: srv0mon.h:474
@ MONITOR_DBLWR_FLUSH_REQUESTS
Definition: srv0mon.h:524
@ MONITOR_OLVD_ROW_READ
Definition: srv0mon.h:475
@ MONITOR_PENDING_ALTER_TABLE
Definition: srv0mon.h:493
@ MONITOR_LRU_SEARCH_SCANNED_PER_CALL
Definition: srv0mon.h:249
@ MONITOR_MODULE_PURGE
Definition: srv0mon.h:326
@ MONITOR_SRV_DICT_LRU_MICROSECOND
Definition: srv0mon.h:458
@ MONITOR_ONLINE_CREATE_INDEX
Definition: srv0mon.h:492
@ MONITOR_OVLD_IBUF_SIZE
Definition: srv0mon.h:446
@ MONITOR_MODULE_FIL_SYSTEM
Definition: srv0mon.h:434
@ MONITOR_INDEX_LEAF_PAGE_READ
Definition: srv0mon.h:256
@ MONITOR_PAGE_COMPRESS
Definition: srv0mon.h:408
@ MONITOR_OVLD_IBUF_MERGE_DISCARD_DELETE
Definition: srv0mon.h:443
@ MONITOR_PURGE_RESUME_COUNT
Definition: srv0mon.h:333
@ MONITOR_LRU_BATCH_EVICT_TOTAL_PAGE
Definition: srv0mon.h:239
@ MONITOR_TRX_ON_LOG_WAIT_LOOPS
Definition: srv0mon.h:319
@ MONITOR_LRU_BATCH_EVICT_COUNT
Definition: srv0mon.h:240
@ MONITOR_FSP_HDR_PAGE_WRITTEN
Definition: srv0mon.h:283
@ MONITOR_OVLD_BUF_POOL_PAGES_DIRTY
Definition: srv0mon.h:182
@ MONITOR_IBUF_FREELIST_PAGE_WRITTEN
Definition: srv0mon.h:279
@ MONITOR_ALL_COUNTER
Definition: srv0mon.h:529
@ MONITOR_SYSTEM_PAGE_WRITTEN
Definition: srv0mon.h:281
@ MONITOR_OLVD_ROW_INSERTED
Definition: srv0mon.h:476
@ MONITOR_OVLD_BUF_POOL_PAGE_MISC
Definition: srv0mon.h:179
@ MONITOR_LOG_PADDED
Definition: srv0mon.h:365
@ MONITOR_N_UPD_EXIST_EXTERN
Definition: srv0mon.h:328
@ MONITOR_SAMPLED_PAGES_READ
Definition: srv0mon.h:486
@ MONITOR_UNDO_LOG_PAGE_READ
Definition: srv0mon.h:260
@ MONITOR_LOG_ON_FLUSH_WAITS
Definition: srv0mon.h:395
@ MONITOR_FLUSH_BATCH_COUNT
Definition: srv0mon.h:194
@ MONITOR_LOG_WRITER_WAITS
Definition: srv0mon.h:372
@ MONITOR_LOG_WRITE_NOTIFIER_WAITS
Definition: srv0mon.h:382
@ MONITOR_OVLD_BYTE_READ
Definition: srv0mon.h:188
@ MONITOR_LOG_FLUSH_NOTIFIER_WAIT_LOOPS
Definition: srv0mon.h:387
@ MONITOR_LOG_WRITER_WAIT_LOOPS
Definition: srv0mon.h:373
@ MONITOR_TRX_ON_LOG_NO_WAITS
Definition: srv0mon.h:317
#define MONITOR_VALUE(monitor)
Definition: srv0mon.h:599
#define MAX_RESERVED
Definition: srv0mon.h:118
#define MONITOR_MAX_VALUE_START(monitor)
Definition: srv0mon.h:607
void monitor_set(monitor_id_t monitor, mon_type_t value, bool set_max, bool set_min)
Sets a value to the monitor counter.
Definition: srv0mon.h:772
#define MONITOR_INIT_ZERO_VALUE
Definition: srv0mon.h:636
#define MONITOR_FIELD(monitor, field)
Following are macro defines for basic monitor counter manipulations.
Definition: srv0mon.h:597
std::bitset< NUM_MONITOR > monitor_set_tbl
This "monitor_set_tbl" is a bitmap records whether a particular monitor counter has been turned on or...
Definition: srv0mon.cc:1432
#define MONITOR_LAST_VALUE(monitor)
Definition: srv0mon.h:613
void srv_mon_default_on(void)
Turn on monitor counters that are marked as default ON.
Definition: srv0mon.cc:2093
#define MONITOR_START_VALUE(monitor)
Definition: srv0mon.h:615
void monitor_set_max_value(monitor_id_t monitor, mon_type_t value)
Definition: srv0mon.h:689
void monitor_reset_all(monitor_id_t monitor)
Definition: srv0mon.h:845
void monitor_dec_value(monitor_id_t monitor, mon_type_t value)
Definition: srv0mon.h:750
monitor_info_t * srv_mon_get_info(monitor_id_t monitor_id)
Get monitor's monitor_info_t by its monitor id (index into the innodb_counter_info array.
Definition: srv0mon.cc:1438
void srv_mon_process_existing_counter(monitor_id_t monitor_id, mon_option_t set_option)
This function consolidates some existing server counters used by "system status variables".
Definition: srv0mon.cc:1603
Server monitoring system.
struct monitor_info describes the basic/static information about each monitor counter.
Definition: srv0mon.h:544
const char * monitor_module
Sub Module the monitor belongs to.
Definition: srv0mon.h:546
const char * monitor_name
Monitor name.
Definition: srv0mon.h:545
monitor_id_t monitor_id
Monitor ID as defined in enum monitor_id_t.
Definition: srv0mon.h:554
const char * monitor_desc
Brief desc of monitor counter.
Definition: srv0mon.h:548
monitor_id_t monitor_related_id
Monitor ID of counter that related to this monitor.
Definition: srv0mon.h:550
monitor_type_t monitor_type
Type of Monitor Info.
Definition: srv0mon.h:549
Two monitor structures are defined in this file.
Definition: srv0mon.h:72
std::chrono::system_clock::time_point mon_stop_time
Stop time of monitoring.
Definition: srv0mon.h:76
mon_type_t mon_max_value
Current Max value.
Definition: srv0mon.h:80
std::chrono::system_clock::time_point mon_reset_time
Time counter was reset.
Definition: srv0mon.h:78
mon_type_t mon_value_reset
value at last reset
Definition: srv0mon.h:82
mon_type_t mon_min_value_start
Min value since start.
Definition: srv0mon.h:84
mon_type_t mon_start_value
Value at the start time.
Definition: srv0mon.h:85
std::atomic< mon_type_t > mon_value
Current counter Value.
Definition: srv0mon.h:79
std::chrono::system_clock::time_point mon_start_time
Start time of monitoring
Definition: srv0mon.h:74
mon_type_t mon_last_value
Last set of values.
Definition: srv0mon.h:86
mon_type_t mon_max_value_start
Max value since start.
Definition: srv0mon.h:83
mon_type_t mon_min_value
Current Min value.
Definition: srv0mon.h:81
monitor_running_t mon_status
Definition: srv0mon.h:87
Version control for database, common definitions, and include files.
#define ut_ad(EXPR)
Debug assertion.
Definition: ut0dbg.h:109