From 83591a23d6c2a09d9c24cccbc7d6e20a6feffe86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Fri, 4 Dec 2020 17:52:23 +0200 Subject: MDEV-24350 buf_dblwr unnecessarily uses memory-intensive srv_stats counters 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. --- storage/innobase/srv/srv0mon.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'storage/innobase/srv/srv0mon.cc') 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 */ -- cgit v1.2.1