diff options
author | Erik Johnston <erik@matrix.org> | 2020-02-19 15:09:00 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-19 15:09:00 +0000 |
commit | fc87d2ffb39ca17065e19bd42ef25f1c84862d2c (patch) | |
tree | d1183f519412c5c5298b46758ce0daa8674e5785 | |
parent | Reduce auth chains fetched during v2 state res. (#6952) (diff) | |
download | synapse-fc87d2ffb39ca17065e19bd42ef25f1c84862d2c.tar.xz |
Freeze allocated objects on startup. (#6953)
This may make gc go a bit faster as the gc will know things like caches/data stores etc. are frozen without having to check.
-rw-r--r-- | changelog.d/6953.misc | 1 | ||||
-rw-r--r-- | synapse/app/_base.py | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/changelog.d/6953.misc b/changelog.d/6953.misc new file mode 100644 index 0000000000..0ab52041cf --- /dev/null +++ b/changelog.d/6953.misc @@ -0,0 +1 @@ +Reduce time spent doing GC by freezing objects on startup. diff --git a/synapse/app/_base.py b/synapse/app/_base.py index 0e8b467a3e..109b1e2fb5 100644 --- a/synapse/app/_base.py +++ b/synapse/app/_base.py @@ -279,6 +279,15 @@ def start(hs, listeners=None): setup_sentry(hs) setup_sdnotify(hs) + + # We now freeze all allocated objects in the hopes that (almost) + # everything currently allocated are things that will be used for the + # rest of time. Doing so means less work each GC (hopefully). + # + # This only works on Python 3.7 + if sys.version_info >= (3, 7): + gc.collect() + gc.freeze() except Exception: traceback.print_exc(file=sys.stderr) reactor = hs.get_reactor() |