Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Fixup autotuning sample config #12760

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/12760.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add a config options to allow for auto-tuning of caches.
33 changes: 22 additions & 11 deletions docs/sample_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to me, "flag" is a boolean. None of these things are flags? Not a major problem though.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/flag/setting/ would be better, I think

# 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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please could you document, here and in the config manual, what the valid suffixes are, and what they mean? (is M 1000000 or 1048576 ?)


# 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
Comment on lines +795 to 814
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what are the defaults for these things? (what happens if they are not set?) (also needs adding to the config manual I think)


# Controls how long the results of a /sync request are cached for after
Expand Down
33 changes: 22 additions & 11 deletions synapse/config/cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down