oom_reaper всегда убивает наше приложение, хотя память не используется самим процессом.
free -m непосредственно перед тем, как убийца OOM завершит процесс, указывает, что «общая» и «бафф/кеш» нуждаются во всей памяти:
root@local:/tmp# бесплатно -m
общее количество использованных бесплатных общих баффов/доступных кешей
Мем: 3861 627 95 3037 3138 26
Обмен: 0 0 0
Очистка кеша с помощью эхо 3 > /proc/sys/vm/drop_caches
ничего не делает.
linuxatemyram.com здесь не применяется.
Я также уже исключил, что память используется RAM-диском/tempfs с помощью df -t tmpfs --total -h
.
meminfo, как раз перед тем, как убийца OOM завершил процесс, вернул следующее:
root@local:/tmp# awk '$3=="kB"{$2=$2/1024;$3="MB"} 1' /proc/meminfo | столбец -т
Общий объем памяти: 3861,26 МБ
MemFree: 108,297 МБ
Доступно: 49,6445 МБ
Буферы: 2,82422 МБ
Кэшировано: 3069,16 МБ
SwapCached: 0 МБ
Активно: 42,8164 МБ
Неактивно: 578,258 МБ
Активный (анон): 2,78125 МБ
Неактивный (анон): 542,719 МБ
Активный (файл): 40,0352 МБ
Неактивный (файл): 35,5391 МБ
Неизбежный: 2964,51 МБ
Заблокировано: 18,6484 МБ
SwapTotal: 0 МБ
СвопБесплатно: 0 МБ
Грязный: 0,09375 МБ
Обратная запись: 0 МБ
Страницы анона: 513,977 МБ
Сопоставлено: 85,9766 МБ
Шмем: 2987,97 МБ
KReclaimable: 37,6602 МБ
Слой: 104,531 МБ
SReclaimable: 37,6602 МБ
SUnreclaim: 66,8711 МБ
Стек ядра: 6,625 МБ
Таблицы страниц: 11,4961 МБ
NFS_Unstable: 0 МБ
Отказ: 0 МБ
WritebackTmp: 0 МБ
Максимальный размер: 1930,63 МБ.
Зафиксировано_AS: 5638,47 МБ
VmallocTotal: 3.35544e+07 МБ
VmallocUsed: 27,3516 МБ
Вмаллокчанк: 0 МБ
Процессор: 3,23438 МБ
HardwareCorrupted: 0 МБ
AnonHugePages: 0 МБ
ShmemHugePages: 0 МБ
ShmemPmdMapped: 0 МБ
FileHugePages: 0 МБ
FilePmdMapped: 0 МБ
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Огромный размер страницы: 2 МБ
Вес: 0 МБ
DirectMap4k: 179,078 МБ
DirectMap2M: 3850 МБ
ipcs -m --human возвращает:
root@local:~# ipcs -m --human
------ Сегменты общей памяти --------
ключ шмид владелец разрешения размер nattch статус
0x00000000 2 пользователя 600 512K 2 получателя
0x00000000 262202 пользователь 600 512K 2 адресата
Когда наше приложение завершается, "бафф/кэш" и "общий доступ" также снова освобождаются.
Профилировщик памяти также не показывает никаких проблем.
Как я могу узнать, какие данные находятся в «общих» и «баффах/кеше»?
Система: Ubuntu Server 20.04, 5.11.0-41-универсальная (HWE)