diff --git a/changelog.d/12760.feature b/changelog.d/12760.feature new file mode 100644 index 000000000000..bb2264602c84 --- /dev/null +++ b/changelog.d/12760.feature @@ -0,0 +1 @@ +Add a config options to allow for auto-tuning of caches. diff --git a/docs/sample_config.yaml b/docs/sample_config.yaml index ee98d193cbb9..f99286e8ae41 100644 --- a/docs/sample_config.yaml +++ b/docs/sample_config.yaml @@ -784,22 +784,33 @@ caches: # #cache_entry_ttl: 30m - # This flag enables cache autotuning, and is further specified by the sub-options `max_cache_memory_usage`, - # `target_cache_memory_usage`, `min_cache_ttl`. These flags work in conjunction with each other to maintain - # a balance between cache memory usage and cache entry availability. You must be using jemalloc to utilize - # this option, and all three of the options must be specified for this feature to work. + # This flag enables cache autotuning, and is further specified by the + # sub-options `max_cache_memory_usage`, `target_cache_memory_usage`, + # `min_cache_ttl`. These flags work in conjunction with each other to + # maintain a balance between cache memory usage and cache entry + # availability. You must be using jemalloc to utilize this option, and + # all three of the options must be specified for this feature to work. + # #cache_autotuning: - # This flag sets a ceiling on much memory the cache can use before caches begin to be continuously evicted. - # They will continue to be evicted until the memory usage drops below the `target_memory_usage`, set in - # the flag below, or until the `min_cache_ttl` is hit. + # This flag sets a ceiling on much memory the cache can use before + # caches begin to be continuously evicted. They will continue to be + # evicted until the memory usage drops below the + # `target_memory_usage`, set in the flag below, or until the + # `min_cache_ttl` is hit. + # #max_cache_memory_usage: 1024M - # This flag sets a rough target for the desired memory usage of the caches. + # This flag sets a rough target for the desired memory usage of the + # caches. + # #target_cache_memory_usage: 758M - # 'min_cache_ttl` sets a limit under which newer cache entries are not evicted and is only applied when - # caches are actively being evicted/`max_cache_memory_usage` has been exceeded. This is to protect hot caches - # from being emptied while Synapse is evicting due to memory. + # 'min_cache_ttl` sets a limit under which newer cache entries are not + # evicted and is only applied when caches are actively being + # evicted/`max_cache_memory_usage` has been exceeded. This is to + # protect hot caches from being emptied while Synapse is evicting due + # to memory. + # #min_cache_ttl: 5m # Controls how long the results of a /sync request are cached for after diff --git a/synapse/config/cache.py b/synapse/config/cache.py index d2f55534d7d1..07f171e57257 100644 --- a/synapse/config/cache.py +++ b/synapse/config/cache.py @@ -176,22 +176,33 @@ def generate_config_section(self, **kwargs: Any) -> str: # #cache_entry_ttl: 30m - # This flag enables cache autotuning, and is further specified by the sub-options `max_cache_memory_usage`, - # `target_cache_memory_usage`, `min_cache_ttl`. These flags work in conjunction with each other to maintain - # a balance between cache memory usage and cache entry availability. You must be using jemalloc to utilize - # this option, and all three of the options must be specified for this feature to work. + # This flag enables cache autotuning, and is further specified by the + # sub-options `max_cache_memory_usage`, `target_cache_memory_usage`, + # `min_cache_ttl`. These flags work in conjunction with each other to + # maintain a balance between cache memory usage and cache entry + # availability. You must be using jemalloc to utilize this option, and + # all three of the options must be specified for this feature to work. + # #cache_autotuning: - # This flag sets a ceiling on much memory the cache can use before caches begin to be continuously evicted. - # They will continue to be evicted until the memory usage drops below the `target_memory_usage`, set in - # the flag below, or until the `min_cache_ttl` is hit. + # This flag sets a ceiling on much memory the cache can use before + # caches begin to be continuously evicted. They will continue to be + # evicted until the memory usage drops below the + # `target_memory_usage`, set in the flag below, or until the + # `min_cache_ttl` is hit. + # #max_cache_memory_usage: 1024M - # This flag sets a rough target for the desired memory usage of the caches. + # This flag sets a rough target for the desired memory usage of the + # caches. + # #target_cache_memory_usage: 758M - # 'min_cache_ttl` sets a limit under which newer cache entries are not evicted and is only applied when - # caches are actively being evicted/`max_cache_memory_usage` has been exceeded. This is to protect hot caches - # from being emptied while Synapse is evicting due to memory. + # 'min_cache_ttl` sets a limit under which newer cache entries are not + # evicted and is only applied when caches are actively being + # evicted/`max_cache_memory_usage` has been exceeded. This is to + # protect hot caches from being emptied while Synapse is evicting due + # to memory. + # #min_cache_ttl: 5m # Controls how long the results of a /sync request are cached for after