Используем менеджер памяти Jemalloc для всех Linux приложений

Источник: Используем менеджер памяти Jemalloc для всех Linux приложений

Jemalloc является высокопроизводительным менеджером распределения оперативной памяти, который для платформы Linux реализован в виде самостоятельной библиотеки.

Jemalloc является оптимизированным вариантом реализации функций malloc, который призван решать проблемы с фрагментацией при выделения памяти в несколько потоков возникающие на многопроцессорных системах и оптимальной утилизации ресурсов CPU. Jemalloc первоначально был изобретён Джейсоном Эвансом (Jason Evans) для FreeBSD 7.0, а потом был включён в состав NetBSD и в браузер Firefox 3.

Применение jemalloc даёт возможность повысить производительность всей системы, уменьшив фрагментацию и как результат понизить потребление оперативной памяти (RAM). К примеру, переход Firefox на jemalloc привел к снижению потребления оперативной памяти примерно на 22%.

Jemalloc можно использовать в MySQL сервере указав в конфиг файле /etc/mysql/my.cnf (в Debian) или /etc/my.cnf (в CentOS) путь к библиотеке в параметре malloc-lib:

# vi /etc/mysql/my.cnf
[mysqld_safe]
malloc-lib = /usr/lib/i386-linux-gnu/libjemalloc.so.1

Однако мы можем использовать Jemalloc для всех приложений в системе, для чего после установки самой библиотеки (в Debian):

# apt-get install libjemalloc1

Или в CentOS:

# yum install jemalloc

Теперь достаточно создать файл /etc/ld.so.preload (см. man ld.so) и указать путь к библиотеке (в Debian):

/usr/lib/i386-linux-gnu/libjemalloc.so.1

Или в CentOS:

/usr/lib64/libjemalloc.so.1

После чего перезапустить систему. Для определения правильного местарасположения библиотеки jemalloc испольуйте команду:

$ locate jemalloc

После перезапуска сервера, чтобы проверить, какие приложени используют менеджер памяти jemalloc выполним комманду:

$ lsof /usr/lib64/libjemalloc.so.1

Дополнительные материалы: