diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2023-04-21 17:58:18 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2023-04-21 17:58:18 +0300 |
commit | 204e7225dce32130ac2c96f469611d2cb421241e (patch) | |
tree | 450bbe1ae89ac11d0f5a7ecc0c3e15725c82b2af /storage/innobase | |
parent | 86767bcc0f121db3ad83a74647a642754a0ce57f (diff) | |
download | mariadb-git-204e7225dce32130ac2c96f469611d2cb421241e.tar.gz |
Cleanup: MONITOR_EXISTING trx_undo_slots_used, trx_undo_slots_cached
Let us remove explicit updates of MONITOR_NUM_UNDO_SLOT_USED
and MONITOR_NUM_UNDO_SLOT_CACHED, and let us compute the rough values
from trx_sys.rseg_array[] on demand.
Diffstat (limited to 'storage/innobase')
-rw-r--r-- | storage/innobase/srv/srv0mon.cc | 34 | ||||
-rw-r--r-- | storage/innobase/trx/trx0purge.cc | 5 | ||||
-rw-r--r-- | storage/innobase/trx/trx0rseg.cc | 2 | ||||
-rw-r--r-- | storage/innobase/trx/trx0undo.cc | 6 |
4 files changed, 29 insertions, 18 deletions
diff --git a/storage/innobase/srv/srv0mon.cc b/storage/innobase/srv/srv0mon.cc index b6496d03908..2a3720641bc 100644 --- a/storage/innobase/srv/srv0mon.cc +++ b/storage/innobase/srv/srv0mon.cc @@ -704,16 +704,18 @@ static monitor_info_t innodb_counter_info[] = {"trx_rseg_history_len", "transaction", "Length of the TRX_RSEG_HISTORY list", static_cast<monitor_type_t>( - MONITOR_EXISTING | MONITOR_DISPLAY_CURRENT | MONITOR_DEFAULT_ON), + MONITOR_EXISTING | MONITOR_DISPLAY_CURRENT), MONITOR_DEFAULT_START, MONITOR_RSEG_HISTORY_LEN}, {"trx_undo_slots_used", "transaction", "Number of undo slots used", - MONITOR_NONE, + static_cast<monitor_type_t>( + MONITOR_EXISTING | MONITOR_DISPLAY_CURRENT), MONITOR_DEFAULT_START, MONITOR_NUM_UNDO_SLOT_USED}, {"trx_undo_slots_cached", "transaction", "Number of undo slots cached", - MONITOR_NONE, + static_cast<monitor_type_t>( + MONITOR_EXISTING | MONITOR_DISPLAY_CURRENT | MONITOR_DEFAULT_ON), MONITOR_DEFAULT_START, MONITOR_NUM_UNDO_SLOT_CACHED}, {"trx_rseg_current_size", "transaction", @@ -1383,6 +1385,24 @@ TPOOL_SUPPRESS_TSAN static ulint srv_mon_get_rseg_size() return size; } +/** @return number of used undo log slots */ +TPOOL_SUPPRESS_TSAN static ulint srv_mon_get_rseg_used() +{ + ulint size= 0; + for (const auto &rseg : trx_sys.rseg_array) + size+= UT_LIST_GET_LEN(rseg.undo_list); + return size; +} + +/** @return number of cached undo log slots */ +TPOOL_SUPPRESS_TSAN static ulint srv_mon_get_rseg_cached() +{ + ulint size= 0; + for (const auto &rseg : trx_sys.rseg_array) + size+= UT_LIST_GET_LEN(rseg.undo_cached); + return size; +} + /****************************************************************//** This function consolidates some existing server counters used by "system status variables". These existing system variables do not have @@ -1690,7 +1710,12 @@ srv_mon_process_existing_counter( case MONITOR_RSEG_CUR_SIZE: value = srv_mon_get_rseg_size(); break; - + case MONITOR_NUM_UNDO_SLOT_USED: + value = srv_mon_get_rseg_used(); + break; + case MONITOR_NUM_UNDO_SLOT_CACHED: + value = srv_mon_get_rseg_cached(); + break; case MONITOR_OVLD_N_FILE_OPENED: value = fil_system.n_open; break; @@ -1812,7 +1837,6 @@ srv_mon_process_existing_counter( case MONITOR_TIMEOUT: value = lock_sys.timeouts; break; - default: ut_error; } diff --git a/storage/innobase/trx/trx0purge.cc b/storage/innobase/trx/trx0purge.cc index 4a2fa214b37..7a63b1155b6 100644 --- a/storage/innobase/trx/trx0purge.cc +++ b/storage/innobase/trx/trx0purge.cc @@ -280,8 +280,6 @@ trx_purge_add_undo_to_history(const trx_t* trx, trx_undo_t*& undo, mtr_t* mtr) TRX_RSEG + TRX_RSEG_UNDO_SLOTS + undo->id * TRX_RSEG_SLOT_SIZE, 4, 0xff); - MONITOR_DEC(MONITOR_NUM_UNDO_SLOT_USED); - uint32_t hist_size = mach_read_from_4( TRX_RSEG_HISTORY_SIZE + TRX_RSEG + rseg_header->page.frame); @@ -363,7 +361,6 @@ trx_purge_add_undo_to_history(const trx_t* trx, trx_undo_t*& undo, mtr_t* mtr) if (undo->state == TRX_UNDO_CACHED) { UT_LIST_ADD_FIRST(rseg->undo_cached, undo); - MONITOR_INC(MONITOR_NUM_UNDO_SLOT_CACHED); } else { ut_ad(undo->state == TRX_UNDO_TO_PURGE); ut_free(undo); @@ -526,8 +523,6 @@ loop: mtr.write<8,mtr_t::MAYBE_NOP>(*rseg_hdr, TRX_RSEG + TRX_RSEG_MAX_TRX_ID + rseg_hdr->page.frame, trx_sys.get_max_trx_id() - 1); - MONITOR_DEC(MONITOR_NUM_UNDO_SLOT_CACHED); - MONITOR_DEC(MONITOR_NUM_UNDO_SLOT_USED); goto free_segment; } } diff --git a/storage/innobase/trx/trx0rseg.cc b/storage/innobase/trx/trx0rseg.cc index 6d95dcf06f1..0d7b96e9280 100644 --- a/storage/innobase/trx/trx0rseg.cc +++ b/storage/innobase/trx/trx0rseg.cc @@ -394,7 +394,6 @@ void trx_rseg_t::reinit(uint32_t page) { next= UT_LIST_GET_NEXT(undo_list, undo); UT_LIST_REMOVE(undo_cached, undo); - MONITOR_DEC(MONITOR_NUM_UNDO_SLOT_CACHED); ut_free(undo); } @@ -425,7 +424,6 @@ static dberr_t trx_undo_lists_init(trx_rseg_t *rseg, if (!undo) return DB_CORRUPTION; rseg->curr_size+= undo->size; - MONITOR_INC(MONITOR_NUM_UNDO_SLOT_USED); } } diff --git a/storage/innobase/trx/trx0undo.cc b/storage/innobase/trx/trx0undo.cc index 33b1f93ff65..bccb6538e63 100644 --- a/storage/innobase/trx/trx0undo.cc +++ b/storage/innobase/trx/trx0undo.cc @@ -535,8 +535,6 @@ trx_undo_seg_create(fil_space_t *space, buf_block_t *rseg_hdr, ulint *id, + slot_no * TRX_RSEG_SLOT_SIZE + rseg_hdr->page.frame, block->page.id().page_no()); - MONITOR_INC(MONITOR_NUM_UNDO_SLOT_USED); - *err = DB_SUCCESS; return block; } @@ -996,7 +994,6 @@ static void trx_undo_seg_free(const trx_undo_t *undo) static_assert(FIL_NULL == 0xffffffff, "compatibility"); mtr.memset(rseg_header, TRX_RSEG + TRX_RSEG_UNDO_SLOTS + undo->id * TRX_RSEG_SLOT_SIZE, 4, 0xff); - MONITOR_DEC(MONITOR_NUM_UNDO_SLOT_USED); } } @@ -1155,7 +1152,6 @@ corrupted_type: UT_LIST_ADD_LAST(rseg->undo_list, undo); } else { UT_LIST_ADD_LAST(rseg->undo_cached, undo); - MONITOR_INC(MONITOR_NUM_UNDO_SLOT_CACHED); } mtr.commit(); @@ -1333,7 +1329,6 @@ trx_undo_reuse_cached(trx_t* trx, trx_rseg_t* rseg, trx_undo_t** pundo, } UT_LIST_REMOVE(rseg->undo_cached, undo); - MONITOR_DEC(MONITOR_NUM_UNDO_SLOT_CACHED); *pundo = undo; @@ -1546,7 +1541,6 @@ void trx_undo_commit_cleanup(trx_undo_t *undo) if (undo->state == TRX_UNDO_CACHED) { UT_LIST_ADD_FIRST(rseg->undo_cached, undo); - MONITOR_INC(MONITOR_NUM_UNDO_SLOT_CACHED); undo = nullptr; } else { ut_ad(undo->state == TRX_UNDO_TO_PURGE); |