![]() ![]() We've done quite a bit of preliminary testing with matrix-appservice-irc and have also heard a number of success stories from the community with mautrix-whatsapp and mautrix-telegram. Whilst not entirely feature-complete and with a number of features still to go, enough support is now present to support basic bridging functionality. ![]() Thanks to Half-Shot's perseverance and contributions, we've merged a couple PRs and worked on some further fixes for getting Application Services working correctly in Dendrite. State Resolution v2 has also seen further optimisations in the power-level checking, which should reduce CPU usage even more. In the case of, which is joined to some 6500 rooms at present, memory utilisation of the Dendrite process typically sits around 1.5GB at present. Resource spikes aren't completely eliminated but this should smooth out CPU and memory utilisation significantly. We've introduced some transaction-level caches for dealing with missing auth/prev events to reduce the memory pressure and we've also tweaked the caching around around /get_missing_events to ensure we don't duplicate any state events in memory. The bulk of this resource usage comes either from attempting to reconcile missing events or running state resolution in rooms with lots of members, as potentially large state sets of events need to be brought into memory in order to do so. Some of the feedback that we receive most often from those that have been experimenting with the Dendrite betas is around the sudden spikes in resource usage, especially when joined to large rooms. We've continued to squeeze further optimisations into the federation and state resolution code, aiming to reduce the amount of CPU burn and memory utilisation. This might take a while on larger databases so please expect some downtime. In this particular instance, moving to the new state storage resulted in a 15x improvement on disk utilisation for state blocks and a further 2x improvement for state snapshot references immediately after the migration, and the growth rate of the database has slowed substantially since.Įnsuring that we don't waste disk space is one of the most important factors in ensuring that Dendrite operates well at any scale - future datacentre deployments supporting many users will find storage overheads decreased and small/embedded single-user deployments (such as P2P, on mobile devices or in the browser) will fit much more effectively onto resource-constrained targets.Īfter upgrading to v0.4.0, Dendrite will run an automatic migration to update your homeserver to the new state storage format. This was largely spurred on by watching consuming a rather alarming amount of disk space on a daily basis. By ensuring that all state blocks and snapshots are ordered strictly, and by enforcing uniqueness constraints on the hashes of the blocks/snapshots, we've been able to achieve this. The goal here is to make state storage significantly more efficient by ensuring that we deduplicate state blocks and snapshots wherever we can. One of the major features in v0.4.0 is that we've introduced newly-refactored state storage in the roomserver database. However, Dendrite has not been forgotten amidst the excitement and we will be spending more time working on Dendrite again in the coming months. These are major areas of research for us which we hope will unlock a number of new opportunities within the Matrix ecosystem, allowing us to build on Matrix anywhere and to reduce the protocol-level footprint. Recently our release cadence for Dendrite has slowed as we have spent more time within the team working on Pinecone and Low Bandwidth Matrix. The full changelog for the release is available on GitHub, but we wanted to take the opportunity to talk a little about some of the changes that have gone into this release. After quite a significant gap between releases - version 0.3.11 was released at the beginning of March - we're happy to finally announce the release of Dendrite 0.4.0 today! ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |