Память Jemalloc сильно увеличивается после использования нового пула потоков без перезапуска службы

Справочная информация: я работаю над поисковой системой и разрабатываю новую функцию, которая будет создавать новый пул потоков (32 потока). Запросы, которые соответствуют некоторым правилам, будут выполняться новым пулом потоков. В то же время старый пул потоков (также имеющий 32 потока) все еще может работать и выполнять другие запросы.

Проблема: мы используем Jemalloc для выделения памяти. Когда мы включаем новую функцию и новый пул потоков начинает работать, объем памяти, потребляемой Jemalloc, увеличивается с 80 до 95 ГБ за 4–5 часов, а затем уменьшается через 2 часа. Я посмотрел статистический номер Jemalloc, все увеличенное количество памяти пришло от «stats.mapped» (выделено Jemalloc). «stats.active» и «stats.allocated» (используемые нашей службой) остаются без изменений, что означает, что увеличение объема памяти может происходить из-за фрагментации памяти.

Вот определения «stats.mapped», «stats.allocated» и «stats.active»:

  1. JeMalloc Mapped Bytes:
    Общее количество байтов в активных чанках (по умолчанию 4 МБ на чанк), отображаемых распределителем (Jemalloc). Это кратно размеру куска и больше, чем активные байты JeMalloc. Это не включает неактивные чанки, даже те, которые содержат неиспользованные грязные страницы, что означает, что между этим и stats.resident нет строгого порядка.
  2. Активные байты JeMalloc:
    Общее количество байтов на активных страницах (по умолчанию 4 КБ на страницу), выделенных приложением (нашим сервисом). Это кратное размеру страницы и больше или равно stats.allocated. Это не включает stats.arenas..pdirty, а также страницы, полностью посвященные метаданным распределителя.
  3. JeMalloc Выделенные байты:
    Общее количество байтов, выделенных приложением (Наш сервис).

Поскольку увеличение памяти слишком велико (с 80 ГБ до 95 ГБ), мы хотим уменьшить влияние на память при включении нашей функции. Есть ли у вас какие-либо предложения по вышеуказанной проблеме (фрагментация памяти в Jemalloc)? Спасибо!

Я пытался отключить tcache, но при включении новой функции память все равно увеличивается.

График изменения памяти

0

Решение

У вас могут быть некоторые арены, которые не используются интенсивно, так что фрагментация очень высока для одних арен и приемлема для других. Попробуйте уменьшить количество арен через narenas опция, такая, что ни одна арена не остается бездействующей во время работы в устойчивом состоянии.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]