Я отлаживаю проблему, при которой у нас заканчивается нехватка памяти ядра, и я пытаюсь определить, кто использует низкую память ядра, которая способствует возникновению проблемы.
Ниже приводится вывод meminfo:
MemTotal: 16622556 kB
MemFree: 11429420 kB
Buffers: 146268 kB
Cached: 2898228 kB
RAMCached: 1213120 kB
Allowed: 4155639 Pages
Free: 2857355 Pages
Available: 3317413 Pages
SwapCached: 0 kB
Active: 3004716 kB
Inactive: 1694188 kB
HighTotal: 16045340 kB
HighFree: 11419648 kB
LowTotal: 577216 kB
LowFree: 9772 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 8 kB
Writeback: 0 kB
Mapped: 1871960 kB
Slab: 304260 kB
CommitLimit: 8311276 kB
Committed_AS: 5438236 kB
PageTables: 20956 kB
VmallocTotal: 311288 kB
VmallocUsed: 253900 kB
VmallocChunk: 48892 kB
Я посмотрел на следующие поля в выводе выше:
LowTotal: 577216 kB
LowFree: 9772 kB
Slab: 304260 kB
Если я добавлю выделение памяти в / proc / slabinfo, оно будет соответствовать упомянутому выше содержимому slab (304 КБ).
Я просмотрел исходный код ядра и увидел, что lowfree рассчитывается как (totalfree-highfree), что соответствует приведенной выше таблице.
Мне интересно, где используются оставшиеся 263 МБ (lowtotal-lowfree-slab, 577216-9772-304260 = 263184 МБ) низкой памяти. Похоже, lowmem используется не по назначению. Как только я выясню, кто еще использует lowmem, кроме slab, я могу попытаться выяснить, где память получает список.
По сути, моя цель - выяснить, кто использует 570 МБ lowmem.
Я просмотрел разные почтовые группы, в которых объясняются детали meminfo и slabinfo, но я не видел подробностей об использовании lowmem.
Спасибо, Шринивас
Это не дает прямого ответа на ваш вопрос, но я нашел эту информацию о /proc/meminfo
что Red Hat выпустила некоторое время назад, что может быть полезно. Страница находится здесь под названием: Советы и хитрости Избранная статья: / proc / meminfo Explained.
выдержка
LowFree: объем свободной памяти в нижней области памяти. Это память, к которой ядро может обращаться напрямую. Все структуры данных ядра должны перейти в нехватку памяти.
Итак, мне интересно, есть ли какие-то структуры данных, которые потребляют те 263 МБ, о которых вы спрашиваете, ваша математика, похоже, указывает на то, что это может быть так.
Также я написал страницу на сайте U&L о Сколько оперативной памяти использует ядро?, в частности, показаны несколько инструментов, таких как slabtop
а также некоторые дополнительные /proc
структуры, которые могут помочь вам разобраться в вашем вопросе.