Set LD_PRELOAD to load jemalloc in Dockerfile-workers. (#14182)

pull/14184/head
realtyem 2022-10-14 07:29:49 -05:00 committed by GitHub
parent c3e4edb4d6
commit c7446906bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 1 deletions

1
changelog.d/14182.docker Normal file
View File

@ -0,0 +1 @@
Set LD_PRELOAD to use jemalloc memory allocator in Dockerfile-workers.

View File

@ -39,6 +39,7 @@
# continue to work if so.
import os
import platform
import subprocess
import sys
from pathlib import Path
@ -632,14 +633,23 @@ def main(args: List[str], environ: MutableMapping[str, str]) -> None:
with open(mark_filepath, "w") as f:
f.write("")
# Lifted right out of start.py
jemallocpath = "/usr/lib/%s-linux-gnu/libjemalloc.so.2" % (platform.machine(),)
if os.path.isfile(jemallocpath):
environ["LD_PRELOAD"] = jemallocpath
else:
log("Could not find %s, will not use" % (jemallocpath,))
# Start supervisord, which will start Synapse, all of the configured worker
# processes, redis, nginx etc. according to the config we created above.
log("Starting supervisord")
os.execl(
os.execle(
"/usr/local/bin/supervisord",
"supervisord",
"-c",
"/etc/supervisor/supervisord.conf",
environ,
)