summaryrefslogtreecommitdiff
path: root/storage/innobase/srv/srv0mon.cc
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2020-03-05 11:45:28 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2020-03-05 16:21:31 +0200
commita4ab54d70f26f93944e56c8e4e731e1107fdfa6b (patch)
tree5da731b4d210c84a92f0ec62bc95a8870f528de9 /storage/innobase/srv/srv0mon.cc
parent555f955a163040528b24b2a901140e43d7bc580f (diff)
downloadmariadb-git-a4ab54d70f26f93944e56c8e4e731e1107fdfa6b.tar.gz
MDEV-14425 Cleanup: Use std::atomic for some log_sys members
Some fields were protected by log_sys.mutex, which adds quite some overhead for readers. Some readers were submitting dirty reads. log_t::lsn: Declare private and atomic. Add wrappers get_lsn() and set_lsn() that will use relaxed memory access. Many accesses to log_sys.lsn are still protected by log_sys.mutex; we avoid the mutex for some readers. log_t::flushed_to_disk_lsn: Declare private and atomic, and move to the same cache line with log_t::lsn. log_t::buf_free: Declare as size_t, and move to the same cache line with log_t::lsn. log_t::check_flush_or_checkpoint_: Declare private and atomic, and move to the same cache line with log_t::lsn. log_get_lsn(): Define as an alias of log_sys.get_lsn(). log_get_lsn_nowait(), log_peek_lsn(): Remove. log_get_flush_lsn(): Define as an alias of log_sys.get_flush_lsn(). log_t::initiate_write(): Replaces log_buffer_sync_in_background().
Diffstat (limited to 'storage/innobase/srv/srv0mon.cc')
-rw-r--r--storage/innobase/srv/srv0mon.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/storage/innobase/srv/srv0mon.cc b/storage/innobase/srv/srv0mon.cc
index b4928c5d59b..f34680b9aed 100644
--- a/storage/innobase/srv/srv0mon.cc
+++ b/storage/innobase/srv/srv0mon.cc
@@ -1969,11 +1969,11 @@ srv_mon_process_existing_counter(
break;
case MONITOR_OVLD_LSN_FLUSHDISK:
- value = (mon_type_t) log_sys.flushed_to_disk_lsn;
+ value = log_sys.get_flushed_lsn();
break;
case MONITOR_OVLD_LSN_CURRENT:
- value = (mon_type_t) log_sys.lsn;
+ value = log_sys.get_lsn();
break;
case MONITOR_PENDING_LOG_FLUSH:
@@ -1996,7 +1996,7 @@ srv_mon_process_existing_counter(
case MONITOR_LSN_CHECKPOINT_AGE:
mutex_enter(&log_sys.mutex);
- value = static_cast<mon_type_t>(log_sys.lsn
+ value = static_cast<mon_type_t>(log_sys.get_lsn()
- log_sys.last_checkpoint_lsn);
mutex_exit(&log_sys.mutex);
break;