diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2020-12-04 17:52:23 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2020-12-04 17:52:23 +0200 |
commit | 83591a23d6c2a09d9c24cccbc7d6e20a6feffe86 (patch) | |
tree | 28c4d10b611ed53ef651630aecc2eba707a3c8a7 /storage/innobase/srv/srv0mon.cc | |
parent | aa0e3805681552cff5dced141f695c96a4da872f (diff) | |
download | mariadb-git-83591a23d6c2a09d9c24cccbc7d6e20a6feffe86.tar.gz |
MDEV-24350 buf_dblwr unnecessarily uses memory-intensive srv_stats countersbb-10.5-MDEV-24350
The counters in srv_stats use std::atomic and multiple cache lines per
counter. This is an overkill in a case where a critical section already
exists in the code. A regular variable will work just fine, with much
smaller memory bus impact.
Diffstat (limited to 'storage/innobase/srv/srv0mon.cc')
-rw-r--r-- | storage/innobase/srv/srv0mon.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/storage/innobase/srv/srv0mon.cc b/storage/innobase/srv/srv0mon.cc index 174355f992a..c98be4dc682 100644 --- a/storage/innobase/srv/srv0mon.cc +++ b/storage/innobase/srv/srv0mon.cc @@ -1720,12 +1720,16 @@ srv_mon_process_existing_counter( /* innodb_dblwr_writes */ case MONITOR_OVLD_SRV_DBLWR_WRITES: - value = srv_stats.dblwr_writes; + buf_dblwr.lock(); + value = buf_dblwr.batches(); + buf_dblwr.unlock(); break; /* innodb_dblwr_pages_written */ case MONITOR_OVLD_SRV_DBLWR_PAGES_WRITTEN: - value = srv_stats.dblwr_pages_written; + buf_dblwr.lock(); + value = buf_dblwr.written(); + buf_dblwr.unlock(); break; /* innodb_page_size */ |