diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-10-26 03:24:03 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-10-26 03:24:03 +0200 |
commit | a4bcff5ba36115495994e9f9ba66074471de76ab (patch) | |
tree | 16929d0178f57cfe21b6da81ae3e8488ed289b50 /src/journal/journal-file.h | |
parent | 7fb4d896e1ff018d91498f0e83b02e2534644907 (diff) |
journal: introduce entry array chain cache
When traversing entry array chains for a bisection or for retrieving an
item by index we previously always started at the beginning of the
chain. Since we tend to look at the same chains repeatedly, let's cache
where we have been the last time, and maybe we can skip ahead with this
the next time.
This turns most bisections and index lookups from O(log(n)*log(n)) into
O(log(n)). More importantly however, we seek around on disk much less,
which is good to reduce buffer cache and seek times on rotational disks.
Diffstat (limited to 'src/journal/journal-file.h')
-rw-r--r-- | src/journal/journal-file.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h index d87cbe4876..cdbc8e41f6 100644 --- a/src/journal/journal-file.h +++ b/src/journal/journal-file.h @@ -33,6 +33,7 @@ #include "journal-def.h" #include "util.h" #include "mmap-cache.h" +#include "hashmap.h" typedef struct JournalMetrics { uint64_t max_use; @@ -64,6 +65,8 @@ typedef struct JournalFile { JournalMetrics metrics; MMapCache *mmap; + Hashmap *chain_cache; + #ifdef HAVE_XZ void *compress_buffer; uint64_t compress_buffer_size; |