diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2018-06-04 17:19:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-04 17:19:33 +0100 |
commit | 28b0490dfdce04c584d36ae409abc42b6ac419b2 (patch) | |
tree | 4f42fe1eaf4a2214d8e64721b446930e91ca6863 /synapse/util | |
parent | Fix replication metrics (diff) | |
parent | Add hacky cache factor override system (diff) | |
download | synapse-28b0490dfdce04c584d36ae409abc42b6ac419b2.tar.xz |
Merge pull request #3334 from matrix-org/rav/cache_factor_override
Cache factor override system for specific caches
Diffstat (limited to 'synapse/util')
-rw-r--r-- | synapse/util/caches/__init__.py | 10 | ||||
-rw-r--r-- | synapse/util/caches/descriptors.py | 4 |
2 files changed, 12 insertions, 2 deletions
diff --git a/synapse/util/caches/__init__.py b/synapse/util/caches/__init__.py index 183faf75a1..900575eb3c 100644 --- a/synapse/util/caches/__init__.py +++ b/synapse/util/caches/__init__.py @@ -22,6 +22,16 @@ import six CACHE_SIZE_FACTOR = float(os.environ.get("SYNAPSE_CACHE_FACTOR", 0.5)) + +def get_cache_factor_for(cache_name): + env_var = "SYNAPSE_CACHE_FACTOR_" + cache_name.upper() + factor = os.environ.get(env_var) + if factor: + return float(factor) + + return CACHE_SIZE_FACTOR + + caches_by_name = {} collectors_by_name = {} diff --git a/synapse/util/caches/descriptors.py b/synapse/util/caches/descriptors.py index fc1874b65b..65a1042de1 100644 --- a/synapse/util/caches/descriptors.py +++ b/synapse/util/caches/descriptors.py @@ -17,7 +17,7 @@ import logging from synapse.util.async import ObservableDeferred from synapse.util import unwrapFirstError, logcontext -from synapse.util.caches import CACHE_SIZE_FACTOR +from synapse.util.caches import get_cache_factor_for from synapse.util.caches.lrucache import LruCache from synapse.util.caches.treecache import TreeCache, iterate_tree_cache_entry from synapse.util.stringutils import to_ascii @@ -313,7 +313,7 @@ class CacheDescriptor(_CacheDescriptorBase): orig, num_args=num_args, inlineCallbacks=inlineCallbacks, cache_context=cache_context) - max_entries = int(max_entries * CACHE_SIZE_FACTOR) + max_entries = int(max_entries * get_cache_factor_for(orig.__name__)) self.max_entries = max_entries self.tree = tree |