summaryrefslogtreecommitdiff
path: root/storage/innobase/srv/srv0mon.cc
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2020-12-04 17:52:23 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2020-12-04 17:52:23 +0200
commit83591a23d6c2a09d9c24cccbc7d6e20a6feffe86 (patch)
tree28c4d10b611ed53ef651630aecc2eba707a3c8a7 /storage/innobase/srv/srv0mon.cc
parentaa0e3805681552cff5dced141f695c96a4da872f (diff)
downloadmariadb-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.cc8
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 */