]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
mmap-cache: separate context and window list cache hit accounting
authorVito Caputo <vcaputo@pengaru.com>
Sun, 6 Dec 2020 08:16:17 +0000 (00:16 -0800)
committerLennart Poettering <lennart@poettering.net>
Thu, 10 Dec 2020 09:23:01 +0000 (10:23 +0100)
Account and log these statistics separately since their overheads
are potentially quite different when the window lists are large.

There should probably be a histogram of window list traversal
counts too.

src/journal/mmap-cache.c

index 14e45864a9a56953582f495d50be489a85cf952d..788b232114d49a287c0b644d730f593066e8f1d2 100644 (file)
@@ -57,7 +57,7 @@ struct MMapCache {
         unsigned n_ref;
         unsigned n_windows;
 
-        unsigned n_hit, n_missed;
+        unsigned n_context_cache_hit, n_window_list_hit, n_missed;
 
         Hashmap *fds;
         Context *contexts[MMAP_CACHE_MAX_CONTEXTS];
@@ -520,14 +520,14 @@ int mmap_cache_get(
         /* Check whether the current context is the right one already */
         r = try_context(m, f, prot, context, keep_always, offset, size, ret, ret_size);
         if (r != 0) {
-                m->n_hit++;
+                m->n_context_cache_hit++;
                 return r;
         }
 
         /* Search for a matching mmap */
         r = find_mmap(m, f, prot, context, keep_always, offset, size, ret, ret_size);
         if (r != 0) {
-                m->n_hit++;
+                m->n_window_list_hit++;
                 return r;
         }
 
@@ -540,7 +540,7 @@ int mmap_cache_get(
 void mmap_cache_stats_log_debug(MMapCache *m) {
         assert(m);
 
-        log_debug("mmap cache statistics: %u hit, %u miss", m->n_hit, m->n_missed);
+        log_debug("mmap cache statistics: %u context cache hit, %u window list hit, %u miss", m->n_context_cache_hit, m->n_window_list_hit, m->n_missed);
 }
 
 static void mmap_cache_process_sigbus(MMapCache *m) {