Кажется, что ваша память на самом деле фрагментирована, но давайте разберем различные числа:
1- memory-usage: total-bytes 23816040182 index-bytes 3222810368 sindex-bytes 0 data-bytes 20593229814 used-pct 49.29
Общий объем памяти составляет 23816040182 байта (~ 22,18 ГБ), чтоэто сумма того, что у вас есть в первичном индексе 3222810368 (50 356 412 записей по 64 байта каждая) и того, что представляют собой сами данные (как данные в памяти), что составляет 20593229814 (~ 19,2 ГиБ).Основная часть индекса находится в общей памяти.
2- system-memory: free-kbytes 5095788 free-pct 9 heap-kbytes (30851170,49358076,52596736) heap-efficiency-pct 58.7
Указанная свободная системная память неверна в версии 3.12.К сожалению, у вас меньше доступно (см. Fix [AER-5810] - (STATS). Тикер журнала переоценивает свободную системную память, доступную в версии 3.16.0.4).
Более интересным является использование кучи (из справочное руководство по журналу ), которое можно прочитать как:
куча-килобайт - по порядку: ( heap_allocated_kbytes , heap_active_kbytes heap_mapped_kbytes ).
куча-эффективность-pct: Обеспечивает указание фрагментации кучи jemalloc.Это представляет отношение heap_allocated_kbytes / heap_mapped_kbytes.Меньшее число указывает на более высокую скорость фрагментации.
У вас выделено 30851170 КиБ (~ 29,4 ГиБ), но в общей сложности 52596736 КиБ (сопоставлено ~ 50,1 ГиБ), и это неэффективно (58,7% эффективности), что указывает на некоторую фрагментацию.Кстати, это не относится к общей памяти.Выделение 29 ГиБ кажется немного высоким для 19 ГиБ данных.Я ожидал бы меньших накладных расходов для всех других используемых внутренних структур.
Основная проблема, однако, заключается в неэффективности фрагментации.У вас случайно включен THP?Я действительно нашел эту статью ( Понимание использования памяти Linux ), в которой также рассматриваются подробности создания отчетов по памяти и конфигурация огромных страниц, которые могут быть причиной этого.