summary refs log tree commit diff
path: root/docs/usage/configuration
diff options
context:
space:
mode:
authorShay <hillerys@element.io>2022-05-13 12:32:39 -0700
committerGitHub <noreply@github.com>2022-05-13 12:32:39 -0700
commitcde8af9a495cbc7f3d0207e3f17c37eddaee34e1 (patch)
treeaa5b16ac2089599f4b83fe855b3b01a35ce634e4 /docs/usage/configuration
parentUpdate configs used by Complement to allow more invites (#12731) (diff)
downloadsynapse-cde8af9a495cbc7f3d0207e3f17c37eddaee34e1.tar.xz
Add config flags to allow for cache auto-tuning (#12701)
Diffstat (limited to 'docs/usage/configuration')
-rw-r--r--docs/usage/configuration/config_documentation.md17
1 files changed, 15 insertions, 2 deletions
diff --git a/docs/usage/configuration/config_documentation.md b/docs/usage/configuration/config_documentation.md
index 2af1f284b1..ca44363105 100644
--- a/docs/usage/configuration/config_documentation.md
+++ b/docs/usage/configuration/config_documentation.md
@@ -1119,7 +1119,17 @@ Caching can be configured through the following sub-options:
   with intermittent connections, at the cost of higher memory usage.
   By default, this is zero, which means that sync responses are not cached
   at all.
-
+* `cache_autotuning` and its sub-options `max_cache_memory_usage`, `target_cache_memory_usage`, and
+   `min_cache_ttl` work in conjunction with each other to maintain a balance between cache memory 
+   usage and cache entry availability. You must be using [jemalloc](https://github.com/matrix-org/synapse#help-synapse-is-slow-and-eats-all-my-ramcpu) 
+   to utilize this option, and all three of the options must be specified for this feature to work.
+     * `max_cache_memory_usage` sets a ceiling on how 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.
+     * `target_memory_usage` sets a rough target for the desired memory usage of the caches.
+     * `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.
 
 Example configuration:
 ```yaml
@@ -1127,8 +1137,11 @@ caches:
   global_factor: 1.0
   per_cache_factors:
     get_users_who_share_room_with_user: 2.0
-  expire_caches: false
   sync_response_cache_duration: 2m
+  cache_autotuning:
+    max_cache_memory_usage: 1024M
+    target_cache_memory_usage: 758M
+    min_cache_ttl: 5m
 ```
 
 ### Reloading cache factors