docs: Add performance tuning guide #1498
Open
stratself
wants to merge 16 commits from
stratself/continuwuity:stratself/docs-perf-tuning into main
pull from: stratself/continuwuity:stratself/docs-perf-tuning
merge into: continuwuation:main
continuwuation:main
continuwuation:renovate/https-github.com-taiki-e-install-action-digest
continuwuation:renovate/https-github.com-actions-setup-node-digest
continuwuation:renovate/rust-zerover-patch-updates
continuwuation:renovate/reqwest-0.x
continuwuation:aranje/illegal-car-mods
continuwuation:ginger/ruma-upstreaming
continuwuation:renovate/serde_html_form-0.x
continuwuation:renovate/rand_core-0.x
continuwuation:jade/changelog-labels
continuwuation:nex/fix/v12-publishing
continuwuation:jade/build-info
continuwuation:jade/purge-sync-tokens
continuwuation:ginger/terms-and-conditions
continuwuation:ginger/remove-sliding-sync-proxy
continuwuation:nex/fix/pusher-association
continuwuation:nex/feat/policy-servers-2-electric-boogaloo
continuwuation:ginger/email-support
continuwuation:jade/community-guidelines
continuwuation:nex/fix/federation-format
continuwuation:jade/git-deps-updates
continuwuation:jade/changelog-check
continuwuation:jade/rust-1-92
continuwuation:ginger/password-reset
continuwuation:nex/experiment/push-gateway-logs
continuwuation:ginger/msc3575-obliteration
continuwuation:nex/feat/block-busted-rooms
continuwuation:nex/fix/informative-startup-errs
continuwuation:ginger/no-left-room-initial-sync
continuwuation:jade/docker-entrypoint
continuwuation:jade/dehydrated-devices
continuwuation:ginger/complement-fixes
continuwuation:nex/fix/stale-destination-cache
continuwuation:nex/experiment/sync-mutex
continuwuation:tcpipuk/docker-docs
continuwuation:jade/snafu
continuwuation:jade/rand-update
continuwuation:nex/stateres-refactor
continuwuation:ginger/779-in-troubleshooting
continuwuation:jade/liveit-guide
continuwuation:jade/http3
continuwuation:nex/feat/admin-hide-empty-rooms
continuwuation:ginger/oobe
continuwuation:nex/fix/debian-thingy
continuwuation:jade/ldap-admin-check
continuwuation:nex/fix/remote-restricted-joins
continuwuation:nex/feat/msc4406-sender-ignored
continuwuation:jade/deadlock-detection
continuwuation:nex/feat/room-shutdown
continuwuation:jade/get-started
continuwuation:jade/docs-guide
continuwuation:ginger/fix-local-invites
continuwuation:nex/fix/tpi
continuwuation:nex/feat/room-deletion
continuwuation:nex/feat/msc4322-media-redaction
continuwuation:ginger/stitched-order
continuwuation:ginger/deps/update-rspress
continuwuation:jade/admin-announce-improvements
continuwuation:ginger/xtask-improvements
continuwuation:jade/improve-admin-config-display
continuwuation:nex/fix/better-stateres-error-logs
continuwuation:jade/sender-timeouts
continuwuation:nex/feat/custom-v12-room-ids
continuwuation:ginger/update-metadata
continuwuation:nex/feat/admin-force-logout
continuwuation:tom/max-perf-docs
continuwuation:nex/fix/invalid-appservice-reg
continuwuation:nex/feat/antispam
continuwuation:nex/feat/account-locking
continuwuation:jade/logging-cleanup
continuwuation:jade/remove-legacy-appservice-auth
continuwuation:nex/fix/key-query
continuwuation:jade/update-prek
continuwuation:nex/fix/room-summaries
continuwuation:ginger/restrict-admin-commands
continuwuation:ginger/enable-console-by-default
continuwuation:jade/tag-fixes
continuwuation:jade/otlp
continuwuation:nex/meta/pull-req-template
continuwuation:nex/fix/fed-invite-compliance
continuwuation:nex/feat/build-commit
continuwuation:nex/feat/join-logging
continuwuation:jade/mailmap-updates
continuwuation:jade/hack-ci-tmp
continuwuation:jade/v12-stable
continuwuation:jade/relations
continuwuation:ginger/database-refactor
continuwuation:jade/fix-ldap-uiaa
continuwuation:nex/fix/validation
continuwuation:ginger/nuke-invalid-msc4133-fields-in-migration
continuwuation:ginger/downgrade-artifact-actions
continuwuation:oddlid/reload-fix
continuwuation:jade/fix-assert
continuwuation:ginger/sync-v3-cleanup
continuwuation:ginger/remove-absolute-action-urls
continuwuation:jade/website
continuwuation:nex/fix/backoff
continuwuation:ginger/fix-mdbook-for-0.5
continuwuation:ginger/no-docker-on-prs
continuwuation:backport/v0.5.0-rc.8-1
continuwuation:nex/fed-improvements
continuwuation:jade/rust-1.90
continuwuation:jade/mirror-dockerhub
continuwuation:jade/clippy-fixes
continuwuation:jade/fix-support
continuwuation:jade/clean-images
continuwuation:jade/wal-compression-type
continuwuation:jade/flake-clone
continuwuation:ginger/upload-rpms-on-schedule
continuwuation:nex/fix/incoming-fetch
continuwuation:nex/fix/upgrade
continuwuation:tom/ci-fedora-rpm
continuwuation:jade/ci-release-fix
continuwuation:jade/rocksdb-10-5
continuwuation:ginger/fix-msc4133-migration
continuwuation:ginger/migrate-busted-tz
continuwuation:hydra/public
continuwuation:nex/feat/manual-extremities
continuwuation:nex/feat/async-media
continuwuation:nex/feat/fast-joins-hack-do-not-use-DO-NOT-USE
continuwuation:nex/feat/better-logging
continuwuation:trigger-ci-so-latest-isnt-on-illegal-car-mods
continuwuation:nex/feat/pins-backfill
continuwuation:jade/tuwunel-2025-06-old
continuwuation:jade/ai-slop-db-docs
continuwuation:nex/fix-create-auth
continuwuation:jade/version-stats
continuwuation:jade/read-receipts
continuwuation:jade/rust-toolchain-no-targets
continuwuation:jade/logging-features
continuwuation:jade/syncv5-typing
continuwuation:jade/msc2815
continuwuation:morguldir/see-eye
continuwuation:jade/css-small-screen
continuwuation:nex/wip-751
continuwuation:tuwunel-rebase
continuwuation:test
continuwuation:oddlid/rename-admin-room-bot
continuwuation:strawberry/nix-ci-stuff
continuwuation:strawberry/valgrind
continuwuation:phonemain
continuwuation:strawberry/morgs-snake-sync-jason-main
continuwuation:newer-media-endpoints
continuwuation:folly-coroutines-async-io
continuwuation:federation-retry-timer-port
continuwuation:bad-attempt-at-extracting-homeserver-signing-key
continuwuation:room-deletion-attempt-do-not-use
No reviewers
Labels
Clear labels
Blocked
This pull request or issue is currently blocked from being merged/closed
Bug
Something isn't working as intended
Changelog
Added
Changelog entry added
Changelog
Missing
No changelog when one is needed
Changelog
None
Changelog is unnecesary for this change
Cherry-picking
Commits picked from other conduit projects
Database
This requires or includes changes to the database
Dependencies
Something dependency related
Dependencies/Renovate
Automatic dependency upgrades by Renovate
Difficulty
Easy
Low difficulty to implement - touches few parts of the codebase, low complexity
Difficulty
Hard
High difficulty to implement - touches many parts of the codebase, high complexity
Difficulty
Medium
Medium difficulty to implement - touches more parts of the codebase, higher complexity
Documentation
Improvements or additions to documentation
Enhancement
New feature or request
Good first issue
Good for newcomers
Help wanted
Additional eyes and keyboards are required for this one
Inherited
Issues that have been inhereted from the project pre-fork
Matrix/Administration
Features pertaining to homeserver administration
Matrix/Appservices
Features pertaining to the appservice API
Matrix/Auth
Features pertaining to authentication
Matrix/Client
Features pertaining to client-to-server interactions
Matrix/Core
Issues relating to core matrix functionality, such as state resolution and PDU formats
Matrix/E2EE
Issues related to end to end encryption
Matrix/Federation
Features pertaining to server-to-server interactions
Matrix/Hydra
Issues related to room version 12 and related changes (temporary label)
Matrix/MSC
Features pertaining to unstable matrix features
Matrix/Media
Features pertaining to media interactions
Matrix/T&S
Changes or issues related to trust & safety tooling
Merge
This PR is ready to be merged
Merge/Manual
This PR should be manually merged
Merge/Squash
This PR should be squashed when it is merged
Meta
Related to housekeeping, maintenance, or other repo-meta.
Meta/CI
Issues related to CI changes
Meta/Packaging
Packaging
Priority
Blocking
This issue is blocking the next release
Priority
High
This issue is very important
Priority
Low
This issue is of a rather low priority
Security
This item is related to general security
Status
Confirmed
This issue has enough information and is confirmed
Status
Duplicate
This issue or pull request already exists
Status
Invalid
This issue doesn't seem right
Status
Needs Investigation
This issue needs further investigation
Support
Questions or support requests
Wont fix
This will not be worked on
old/ci/cd
Ci/CD
Archived
old/rust
Pull requests that update Rust code
Archived
No labels
Blocked
Bug
Changelog
Added
Changelog
Missing
Changelog
None
Cherry-picking
Database
Dependencies
Dependencies/Renovate
Difficulty
Easy
Difficulty
Hard
Difficulty
Medium
Documentation
Enhancement
Good first issue
Help wanted
Inherited
Matrix/Administration
Matrix/Appservices
Matrix/Auth
Matrix/Client
Matrix/Core
Matrix/E2EE
Matrix/Federation
Matrix/Hydra
Matrix/MSC
Matrix/Media
Matrix/T&S
Merge
Merge/Manual
Merge/Squash
Meta
Meta/CI
Meta/Packaging
Priority
Blocking
Priority
High
Priority
Low
Security
Status
Confirmed
Status
Duplicate
Status
Invalid
Status
Needs Investigation
Support
Wont fix
old/ci/cd
old/rust
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
6 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
continuwuation/continuwuity!1498
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "stratself/continuwuity:stratself/docs-perf-tuning"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR adds a page for performance tuning. As it is WIP feedback is highly appreciated. If you have any other perf tuning tips, please share :)
Will update
_meta.jsonlater after future rebasing. DNS tuning will be another page and in another PR.Some todos:
- [ ] Add section for maxperf buildscan be in a future PR- [ ] Sysctl tunings should be recommended, and link to good guides on it. Find good guides.Some questions to answer, ideally with real-world examples:
*_capacity_mbparams be documented? Or is tweaking the modifier good enoughrocksdb_parallelism_threadsandrocksdb_direct_iotunings?sender_workershelp with anything?Pull request checklist:
mainbranch, and the branch is named something other thanmain.myself, if applicable. This includes ensuring code compiles.
Remind me to review this when you're done writing up the other sections pretty please
@ -0,0 +48,4 @@allow_incoming_typing = false```Presence is also considered expensive and is disabled by default. For reference, you can also disable them manually as follows:Isn't only outgoing presence off by default?
Separated
outgoing_*fromincoming_*andlocal_*stuff, highlighting the former as being more important.Provisional notes, feel free to disregard if unwanted
@ -0,0 +1,80 @@# Performance tuningWhile Continuwuity's default config parameters are optimized for a small instance, they would likely need additional modifications to smoothly run in a larger context. This is especially true for homeservers with many users and/or are joined in many large federated rooms, and will increasingly be the case as the Matrix network expands.This isn't necessarily true. You will only need to tune the default parameters if your hardware configuration does not scale with your server size (works in both directions - throwing a supercomputer at a tiny instance will waste resources, while throwing a potato at a moderately sized server will make it choke itself).
Changed introduction to frame it as a "get more juice out of your orange" situation.
@ -0,0 +19,4 @@## Changing database compression algorithm:::warningThis step should be done **before** starting Continuwuity for the first timeshould->MUST- afaik the algo can't be changed after init. Also worth mentioning it can't be reversed.@ -0,0 +27,4 @@```toml### in continuwuity.toml ###rocksdb_compression_algo = "lz4"rocksdb_wal_compression = "none"I'm pretty sure this significantly increases storage usage.
Tweaking the modifier is fine for a guide. Ideally we don't get too nitty-gritty on tuning in the docs otherwise people will break their stuff and make it our problem.
Since it already scales to the number of available CPUs, not really, especially since senders aren't particularly CPU heavy (in comparison to state resolution etc).
@ -0,0 +5,4 @@This page aims to outline various performance tweaks for Continuwuity and their effects. As always, your mileage may vary according to your setup's specifics. If you have further discussions or recommendations, please share them in the community rooms.## DNS tuning (recommended)A separate DNS tuning guide sounds good, I would still include a paragraph on why that is needed in general in this documente. Something like:
"Matrix homeservers conduct MANY DNS queries, sometimes 10s of thousands within a few minutes. Normal tools, such as system-resolved are not designed for this load, and upstream DNS providers will often rate-limit you for making so many queries."
DNS tuning guide now in #1601
2404ddada02728e81503I have added a section on bottommost compression, although I don't really enable it myself and knows nobody to compare its benefits against. Please check and see if it works according to your knowledges and experiences. If it is too problematic, it can be removed.
I realized the file is
.md. It will be changed to.mdxonce everything is stabilized (or when the maintainers want me to).@ -0,0 +14,4 @@If you have unused memory to spare, consider increasing the `cache_capacity_modifier` value to a larger number, as to allow more data to be stored in hot memory. This would _significantly_ speed up many intensive operations such as state resolutions, and also results in decreased CPU usage and disk I/O. Start with a baseline of `cache_capacity_modifier = 2.0` and tune up until you find a satisfactory RAM usage.On the other hand, if your system doesn't have a lot of RAM, consider decreasing the cache capacity modifier to something smaller than `1.0` to avoid low-memory issues (at the cost of higher load on disk/CPU). The recommendation also works if your system has very few RAM compared to the number of cores, as cache capacities tend to scale according to the latter.suggest:
very little RAM compared to the number of CPU cores, as cache capacities tend to scale according to number of cores.
@ -0,0 +28,4 @@allow_incoming_typing = false```Outgoing presence updates is also considered expensive and is disabled by default(`allow_local_presence = false`).what is meant with allow local presence reference here? outgoing presence is now off by default, but local presence is enabled -> https://forgejo.ellis.link/continuwuation/continuwuity/src/branch/main/conduwuit-example.toml#L1137-L1166
That was supposed to be
allow_outgoing_presencemb5b67ab66be58c2cd02c5WIP: docs: Add performance tuning guideto docs: Add performance tuning guidePreview: https://muc.muoi.me/advanced/performance.html
@ -0,0 +10,4 @@## Cache capacitiesIf you have unused memory to spare, consider increasing the `cache_capacity_modifier` value to a larger number, as to allow more data to be stored in hot memory. This would _**significantly**_ speed up many intensive operations such as state resolutions, and also results in decreased CPU usage and disk I/O. Start with a baseline of `cache_capacity_modifier = 2.0` and tune up until you find a satisfactory RAM usage.@ -0,0 +16,4 @@## Disabling some featuresYou can disable outgoing **typing notifications** and **read markers** to reduce strain on the CPU and network.IMO it's worth mentioning incoming and local presence here too.
I did mention presence in the next paragraph or so, where I mentioned how to disable incoming/local of everything. If you think the structure can be improved lemme know how
Resolved in #1498 (comment)
@ -0,0 +25,4 @@allow_outgoing_typing = false```Outgoing presence updates is also considered expensive and has been disabled by default(`allow_outgoing_presence = false`).s/is/are
s/has/have
@ -0,0 +102,4 @@### Using UNIX socketsIf your homeserver and the reverse proxy lives on the same machine, you may consider exposing Continuwuity on a UNIX socket instead of a port. This would reduce TCP overhead between the two programs.@ -0,0 +143,4 @@### Serving .well-knowns manuallyInstead of [reverse proxying .well-knowns](./delegation#serving-with-a-reverse-proxy), you can serve them directly as manual files at the reverse proxy. This could decrease _some_ network request handling for Continuwuity.Hmm is this worth it? Not sure. Lets get feedback from others on this.
Moved to real delegation docs at #1626
@ -0,0 +182,4 @@HTTP/3 support is mostly beneficial for faster Client-Server connections, especially in browser-based applications like Element or Cinny. Continuwuity includes experimental _outbound_ HTTP/3 support in its Docker images, so connections between Continuwuity servers can benefit from this too.### Increasing file descriptorsDo we want to recommend touching
limits.conforsysctl.conf? I'd ask for further feedback from others on this, but personally I'd lean to not recommending this.Traefik compose files suggested it is necessary, but I removed it in #1594 in this commit. In normal use cases I rarely see file descriptors > 1024, but I'm a singleuser instance so...
I think I'll remove it + sysctls entirely, as these have ambiguous effects, and can be discussed in Techtopic or something
@ -0,0 +1,183 @@# Performance tuningWhile Continuwuity's default config parameters are generally optimised, additional modifications can be made to better utilise your server resources. This is especially helpful for homeservers with many users and/or are joined in many large federated rooms, and will increasingly be the case as the Matrix network expands.The second clause of the first sentence reads poorly. Drop "utilise" for "use" and consider rephrasing, especially since "additional modifications" doesn't really make sense here. Consider "you can adjust them to make better use of your server resources."
For the second sentence, try "This is especially helpful for homeservers that are in many large federated rooms or have many users, and it will become increasingly necessary as the Matrix network expands."
let's continue on #1498 (comment)
@ -0,0 +10,4 @@## Cache capacitiesIf you have unused memory to spare, consider increasing the `cache_capacity_modifier` value to a larger number, as to allow more data to be stored in hot memory. This *significantly* speed up many intensive operations such as state resolutions, and also results in decreased CPU usage and disk I/O. Start with a baseline of `cache_capacity_modifier = 2.0` and tune up until you find a satisfactory RAM usage.Replace ", as to" with "to". Replace "speed" with "speeds". Properly fence the "such as state resolutions" clause with a preceding comma. Drop "also". Consider "and decreases CPU usage and disk I/O". "baseline" should be a single word. Consider "and tune up until you are satisfied with RAM usage", since "find a satisfactory RAM usage" reads strangely.
@ -0,0 +12,4 @@If you have unused memory to spare, consider increasing the `cache_capacity_modifier` value to a larger number, as to allow more data to be stored in hot memory. This *significantly* speed up many intensive operations such as state resolutions, and also results in decreased CPU usage and disk I/O. Start with a baseline of `cache_capacity_modifier = 2.0` and tune up until you find a satisfactory RAM usage.On the other hand, if your system doesn't have a lot of RAM, consider decreasing the cache capacity modifier to something smaller than `1.0` to avoid low-memory issues (at the cost of higher load on disk/CPU). The recommendation also works if your system has very little RAM compared to the number of CPU cores, as cache capacities tend to scale according to number of cores.Replace "The recommendation" with "This recommendation". I'm going to need you to elaborate on the last part in order to make a recommendation for it. What constitutes a small ratio of RAM to CPU cores? I assume this scaling is linear?
@ -0,0 +60,4 @@### Changing the compression algorithmFor reduced CPU usage at a tradeoff of increased storage space, consider deploying Continuwuity with the faster and less intensive `lz4` algorithm instead of `zstd` for rocksdb, and disable WAL compression entirely:I would personally like to see data on the differences made by this change before including this. I am concerned about advising people to save a negligible amount of processing time if it makes a great difference to storage use.
not sure I'd recommend no compression. that will be huge. lz4 for both maybe.
WAL compression do not support lz4, I've been using
nonerather than zstd@ -0,0 +68,4 @@rocksdb_wal_compression = "none"```The tweak can especially be helpful if you have an older or less performant CPU (e.g. a Raspberry Pi) and disk space to spare.Replace "The tweak" with "This tweak".
@ -0,0 +72,4 @@### Increasing bottommost layer compression (`zstd` only)The bottommost layer of the database usually contains old and read-only data, and hence is a suitable place for further compression. In Continuwuity, this is possible by setting `rocksdb_bottommost_compression = true` and tuning `rocksdb_bottommost_compression_level` to a more compact level than the default one used in `rocksdb_compression_level`. The tweak comes at a cost of some increased CPU usage, but would prevent your database from growing too large especially in the long run.Replace "and hence is" with "so it is". Replace "The tweak" with "This tweak". Consider "This tweak comes at the cost of increased CPU usage, but it may prevent your database from growing too large, especially on the long run."
@ -0,0 +86,4 @@For `lz4` users, the default level (`-1`) is already the most compact. You can only further decrease it to favor compression speed over ratio.Consult these documentations for more information on compression tuning and levels:Replace "documentations" with "documents". "Documentation" does not have a plural.
@ -0,0 +102,4 @@### Using UNIX socketsIf your homeserver and reverse proxy lives on the same machine, you may wish to expose Continuwuity on a UNIX socket instead of a port. This reduces TCP overhead between the two programs.Replace "lives" with "live" since you're talking about multiple entities ("it lives" vs "they live").
@ -0,0 +131,4 @@### Tuning your trusted serversTrusted servers are queried sequentially starting from the first entry of `trusted_servers`. If you have multiple notaries configured, put the faster ones first:You refer to trusted servers twice in the same sentence here. Consider "Trusted servers are queried sequentially in the order they are listed."
@ -0,0 +137,4 @@trusted_servers = ["fastest.example.com","faster.example.com","matrix.org"]```Avoid using `matrix.org` as your primary notary, as it tends to be quite slow. If you need suggestions for trusted servers, ask in the Continuwuity main room.It would be better to have a list here, otherwise you're opening the main room up to people asking for notaries on a regular basis.
Depends on #1208. Status quo is to have people ask
See #1498 (comment)
Looking good, just some technical comments and phrasing suggestions
@ -0,0 +1,181 @@# Performance tuningThis page aims to outline various performance tweaks for Continuwuity and their effects. These adjustments are especially helpful for homeservers that are in many large federated rooms or have many users, and it will become increasingly necessary as the Matrix network expands. As always, your mileage may vary according to your setup's specifics. If you have further discussions or recommendations, please share them in the community rooms.I feel a mention that the default configuration usually scales appropriately with your hardware so most people won't need this
"usually" being "in most standard configurations", the outliers being abnormal configurations like 64 cores + 2GiB RAM, or 512GiB RAM with a dual core Celeron
Added example abnormal RAM configuration in the caching section. Will find a way to include the first comment.
Incorporated the first comment.
@ -0,0 +10,4 @@If you have unused memory to spare, consider increasing the `cache_capacity_modifier` value to a larger number to allow more data to be stored in hot memory. This *significantly* speed up many intensive operations (such as state resolutions) and decreases CPU usage and disk I/O. Start with a baseline of `cache_capacity_modifier = 2.0` and tune up until you are satisfied with RAM usage.On the other hand, if your system doesn't have a lot of RAM, consider decreasing the cache capacity modifier to something smaller than `1.0` to avoid low-memory issues (at the cost of higher load on disk/CPU). This recommendation also works if your system has very little RAM compared to the number of CPU cores, as cache capacities tend to scale according to number of cores.@ -0,0 +14,4 @@## Disabling some featuresYou can disable outgoing **typing notifications** and **read markers** to reduce strain on the CPU and network.When?
@ -0,0 +42,4 @@allow_outgoing_typing = falseallow_incoming_typing = false# disabling presence updates entirelyLocal typing and read receipts have virtually no performance impact since they're just db rows, local presence only has an impact at all because poor spec choices mean clients will ping it every few seconds even when the user isn't present and this will cycle the sync loops of every user they share a room with.
Generally speaking, disabling local typing and read receipts will have no noticeable impact, definitely not one that outweighs the UX cost
I will only recommend disabling all kinds of presence
@ -0,0 +53,4 @@## Tuning database compression:::warningThese steps MUST be done **before** starting Continuwuity for the first time, as database compressions are irreversible.For the record, I have yet to find definite proof that this is the case. I also have swapped the algo and compression level after-the-fact and found no problem. Maybe c10y only use these vars on database creation.
I'll still include the line as to avoid potential footguns for other users, but do hope someone can fully confirm what's up.
https://github.com/facebook/rocksdb/wiki/Compression the setting is applied at creation time to each sst, so you can have a collection of compression modes being used at once. when a new level for a column family is written out (rebuild or compaction) it will be the default compression setting at that time ... which may be different. this gentle rebuild over time strategy is why you don't see immediate benefit to a compression settings change unless you force a global compaction (which kinda just rebuilds all the cf's).
interesting. Last time I changed my compression algo with active data, i returned to fires. Might've just been a me thing though 🤷♀️
If that is the case, I am banking on removing the warning and adding
!admin query raw compactas a viable instruction (I did run it in my previous algo hotswap, and it shrinked the db by a third). Or at least changing the warning to SHOULD, rather than MUST. Let me know of a good way to write this one.https://mintlify.wiki/facebook/rocksdb/advanced/compression#per-level-compression this is a very pretty way to read their config settings
Let me know if you find anything saying it's not true or you tried it and it failed, I would love to know. I thought you could change from ex lz4 default to zstd etc it just takes "rewriting the level" to make it real.
also this is very recent and very cool https://rocksdb.org/blog/2025/10/08/parallel-compression-revamp.html
I took the liberty to retrofit the warning popup, saying that db compression algos should be tuned without active data, due to lack of real world success. I hope this strike a fair level of recommendation for official docs without being too incorrect.
@ -0,0 +100,4 @@### Using UNIX socketsIf your homeserver and reverse proxy live on the same machine, you may wish to expose Continuwuity on a UNIX socket instead of a port. This reduces TCP overhead between the two programs.nit:
reduces->removes the(unix sockets have zero TCP overhead since they aren't TCP)@ -0,0 +135,4 @@trusted_servers = ["fastest.example.com","faster.example.com","matrix.org"]```Avoid using `matrix.org` as your primary notary, as it tends to be quite slow. If you need suggestions for trusted servers, ask in the Continuwuity main room.Mixing technical terminology ("notary") with the layman's terms ("trusted server(s)") isn't a good idea, should probably consistently choose one or the other.
Also, people shouldn't ask for suggestions, they should put in servers that they trust. The homeservers of project maintainers are likely a good hint (since they're already trusting us to write the software they're using anyway, but please also don't just tell people to trust maintainer homeservers outright), but it should probably be emphasised that trusted servers are trusted, and if they lie to you, may be able to cause irreversible harm to your deployment in one way or another.
Removed "notary". Included some actual servers that maintainers recommended over the months, and a notice to vet them. I can change the servers as needed before merging, and make the notice an admonition block for extra poppiness. Not the best solution so let me know of any changes needed
Edit: I made the trusted_server vetting into a large blue infobox
@ -0,0 +178,4 @@Consider enabling the newer **HTTP/3** protocol for inbound connections to Continuwuity. In Caddy this is allowed by default, and you'd need to expose port :443/**udp** on your firewall.HTTP/3 support is mostly beneficial for faster Client-Server connections, especially in browser-based applications like Element or Cinny. Continuwuity includes experimental _outbound_ HTTP/3 support in its Docker images, so connections between Continuwuity servers can benefit from this too.Why? (include some detail on the benefits of HTTP and how it applies to matrix, something like lower latency and connection overhead or whatever the actual benefits of HTTP3 are I forget)
Included some general stuff, mostly has to do with clients on unstable network + faster conn establishment. Mobile clients don't support it yet but I don't wanna mention current status quo too much
7aa6d0305c8cf2c19f868cf2c19f862de48990b1@ -0,0 +8,4 @@## Cache capacitiesIf you have unused memory to spare, consider increasing the `cache_capacity_modifier` value to a larger number to allow more data to be stored in hot memory. This *significantly* speed up many intensive operations (such as state resolutions) and decreases CPU usage and disk I/O. Start with a baseline of `cache_capacity_modifier = 2.0` and tune up until you are satisfied with RAM usage.s/speed/speeds
@ -0,0 +128,4 @@### Enable HTTP/3 on your reverse proxyConsider enabling the newer **HTTP/3** protocol for inbound connections to Continuwuity. In Caddy HTTP/3 is allowed by default, and you'd need to expose port :443/**udp** on your firewall.s/and you'd need to/but you must
2de48990b14998266d17Done wording fixes and rebased to main. Edited
_meta.jsonto absorb changes from merged #1601.4998266d17d24b653af2View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.