Прочитав это сообщение в блоге о влиянии распределителей памяти, таких как jemalloc, на многопоточные приложения, Я хотел протестировать вещи в более крупном масштабе на некоторых из наших серверов. Мы запускаем sphinx и apache с помощью потоков на 24-ядерных машинах.
Установить jemalloc было достаточно просто. Мы используем Centos 6, поэтому yum install jemalloc jemalloc-devel помогло. У меня вопрос: как изменить все в системе на использование jemalloc вместо стандартного malloc, встроенного в Centos. Исследования указали мне на это как на потенциальный вариант:
LD_PRELOAD=$LD_PRELOAD:/usr/lib64/libjemalloc.so.1
Достаточно ли этого, чтобы получить все с помощью jemalloc?
Это банальный ответ (на самом деле я до сих пор не понимаю, как ваше исследование могло его пропустить):
/etc/ld.so.preload
Это задокументировано в ld.so (8) - man 8 ld.so
: «…
/etc/ld.so.preload - файл, содержащий разделенный пробелами список разделяемых библиотек ELF, которые должны быть загружены перед программой.
… »
Я нашел тем же решение во время моего исследования. Более подробно с пошаговой инструкцией. Там также говорится, что многие компании переходят на jemalloc (например, Facebook) или tcmalloc (например, Github). Так что вы также можете попробовать использовать tcmalloc (установка очень похожа) или следуйте инструкциям и используйте jemalloc.