summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--synapse/util/caches/__init__.py13
-rw-r--r--synapse/util/caches/lrucache.py9
2 files changed, 16 insertions, 6 deletions
diff --git a/synapse/util/caches/__init__.py b/synapse/util/caches/__init__.py

index b2504c2fad..600d10b89e 100644 --- a/synapse/util/caches/__init__.py +++ b/synapse/util/caches/__init__.py
@@ -73,6 +73,19 @@ class CacheMetric: def inc_evictions(self, size=1): self.evicted_size += size + def inc_memory_usage(self, memory: int): + if self.memory_usage is None: + self.memory_usage = 0 + + self.memory_usage += memory + + def dec_memory_usage(self, memory: int): + self.memory_usage -= memory + + def clear_memory_usage(self, memory: int): + if self.memory_usage is not None: + self.memory_usage = 0 + def describe(self): return [] diff --git a/synapse/util/caches/lrucache.py b/synapse/util/caches/lrucache.py
index 5fc26cedd2..5c8ef444fa 100644 --- a/synapse/util/caches/lrucache.py +++ b/synapse/util/caches/lrucache.py
@@ -172,9 +172,6 @@ class LruCache(Generic[KT, VT]): self, collect_callback=metrics_collection_callback, ) # type: Optional[CacheMetric] - - if TRACK_MEMORY_USAGE and metrics: - metrics.memory_usage = 0 else: metrics = None @@ -228,7 +225,7 @@ class LruCache(Generic[KT, VT]): cached_cache_len[0] += size_callback(node.value) if TRACK_MEMORY_USAGE and metrics: - metrics.memory_usage += node.memory + metrics.inc_memory_usage(node.memory) def move_node_to_front(node): prev_node = node.prev_node @@ -258,7 +255,7 @@ class LruCache(Generic[KT, VT]): node.callbacks.clear() if TRACK_MEMORY_USAGE and metrics: - metrics.memory_usage -= node.memory + metrics.dec_memory_usage(node.memory) return deleted_len @@ -379,7 +376,7 @@ class LruCache(Generic[KT, VT]): cached_cache_len[0] = 0 if TRACK_MEMORY_USAGE and metrics: - metrics.memory_usage = 0 + metrics.clear_memory_usage() @synchronized def cache_contains(key: KT) -> bool: