]> git.hungrycats.org Git - bees/commitdiff
context: keep the resolve cache smaller
authorZygo Blaxell <bees@furryterror.org>
Mon, 6 Dec 2021 00:24:22 +0000 (19:24 -0500)
committerZygo Blaxell <bees@furryterror.org>
Wed, 21 Dec 2022 01:51:01 +0000 (20:51 -0500)
We don't need to cache 65536 extent maps, especially if each one
can have almost 700K references.

Valgrind's massif tool points to the extent map cache as a very
large memory allocator, but test runs with memcg disagree.

Signed-off-by: Zygo Blaxell <bees@furryterror.org>
src/bees-context.cc
src/bees-roots.cc
src/bees.h

index 1e2bbccd655f400f58254ecc0b294cf9b5673f84..796bfc64b98bcd643bc26db58f8f8ac8d7b7d3fb 100644 (file)
@@ -43,12 +43,13 @@ BeesFdCache::BeesFdCache(shared_ptr<BeesContext> ctx) :
 void
 BeesFdCache::clear()
 {
-       BEESNOTE("Clearing root FD cache to enable subvol delete");
-       BEESLOGDEBUG("Clearing root FD cache to enable subvol delete");
+       BEESLOGDEBUG("Clearing root FD cache with size " << m_root_cache.size() << " to enable subvol delete");
+       BEESNOTE("Clearing root FD cache with size " << m_root_cache.size());
        m_root_cache.clear();
        BEESCOUNT(root_clear);
-       BEESLOGDEBUG("Clearing open FD cache to enable file delete");
-       BEESNOTE("Clearing open FD cache to enable file delete");
+
+       BEESLOGDEBUG("Clearing open FD cache with size " << m_file_cache.size() << " to enable file delete");
+       BEESNOTE("Clearing open FD cache with size " << m_file_cache.size());
        m_file_cache.clear();
        BEESCOUNT(open_clear);
 }
@@ -854,6 +855,14 @@ BeesContext::invalidate_addr(BeesAddress addr)
        return m_resolve_cache.expire(addr.get_physical_or_zero());
 }
 
+void
+BeesContext::resolve_cache_clear()
+{
+       BEESNOTE("clearing resolve cache with size " << m_resolve_cache.size());
+       BEESLOGDEBUG("Clearing resolve cache with size " << m_resolve_cache.size());
+       return m_resolve_cache.clear();
+}
+
 void
 BeesContext::set_root_fd(Fd fd)
 {
index fe962860e16107cd98e98e0ca30261161724d4db..4335eccd3fd8639a4d73c317771ba731ed2b8ac1 100644 (file)
@@ -722,6 +722,7 @@ void
 BeesRoots::clear_caches()
 {
        m_ctx->fd_cache()->clear();
+       m_ctx->resolve_cache_clear();
 }
 
 void
index 18e45b7b338ea0ff4a8849529584221b6168b979..44175177999651e95256dd69a30fda20842ec93f 100644 (file)
@@ -766,6 +766,7 @@ public:
 
        BeesResolveAddrResult resolve_addr(BeesAddress addr);
        void invalidate_addr(BeesAddress addr);
+       void resolve_cache_clear();
 
        void dump_status();
        void show_progress();