blog-post

Исследование по Jemalloc

Как сказано на http://jemalloc.net/ :

jemalloc – это реализация malloc(3) общего назначения, которая акцентирует внимание на предотвращении фрагментации и поддержке масштабируемой конкурентности.

Некоторые пользователи Sphinx и Manticore Search предпочитают jemalloc вместо malloc и говорят, что это позволяет сэкономить RAM. Я тестировал, как jemalloc влияет на потребление ресурсов и время отклика в течение 2 недель на 3 кластерах Manticore (se03/03-2, se04/04-2, se05/05-2), каждый из которых:

  • получал одинаковое количество трафика
  • хранил примерно одинаковое количество данных
  • имел 2 сервера Manticore, полностью идентичных по оборудованию, программному обеспечению и с 100% идентичными индексами, а также с балансировкой нагрузки между серверами

На se03 и se03-2 я включил jemalloc и отключил THP (прозрачные большие страницы) и перезапустил Manticore на se03-2
На se04-2 я просто перезапустил Manticore, я не трогал se04. se04/04-2 – это контрольная группа.
На se05-2 я включил jemalloc, но не отключил THP

Вот что я получил через 2 недели:

RSS потребление RAM:

jemalloc_rssДинамика задержки (я использовал скользящее среднее (время отклика)):

jemalloc_latency_1Сводная статистика задержки:

jemalloc_latency_2

Выводы:

  1. RSS RAM: включение jemalloc с отключением или без отключения THP уменьшает потребление RSS RAM процессом searchd на **5-6%**2)
  2. включение jemalloc без отключения THP (se05-2) значительно ухудшает задержку: ср. (время отклика) - на 23%, 95/99 перцентиль может не пострадать, так как различия находятся в пределах погрешности (см. контрольную группу se04/04-2, где ничего не изменялось)
  3. включение jemalloc с отключением THP (se03-2) приводит к:
    • средняя задержка на 10% лучше**
    • 95% задержка на 8% хуже
    • 99% задержка на 3.6% лучше, но это в пределах погрешности, так что мы не можем это учитывать

Таким образом, в этом случае нам нужно решить, что мы предпочитаем:

  1. сэкономить 5% RAM и иметь 10% лучшее среднее время задержки, но более высокие всплески задержки для 5% более тяжелых запросов
  2. или оставить всё как есть: без экономии RAM, хужее среднее время задержки, но лучшее время задержки для более тяжелых запросов

Результаты могут зависеть от многих факторов: оборудования, нагрузки (количество данных, операций в секунду и т.д.), но кажется, что jemalloc – это интересная вещь, которую стоит попробовать, и она может сэкономить немного RAM/денег, особенно в крупных установках, где экономия 5% может означать не покупку нескольких новых серверов.

Дайте знать, если вам нужна наша помощь с применением этого на вашей установке. Мы можем помочь вам с другими оптимизациями производительности и ресурсов также.

P.S. Спасибо https://www.sphinxconnector.net/ за идею попробовать jemalloc.

Установить Manticore Search

Установить Manticore Search