Назад | Перейти на главную страницу

Использование ядра Linux в lowmem

Я отлаживаю проблему, при которой у нас заканчивается нехватка памяти ядра, и я пытаюсь определить, кто использует низкую память ядра, которая способствует возникновению проблемы.

Ниже приводится вывод 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 структуры, которые могут помочь вам разобраться в вашем вопросе.