LINUX.ORG.RU
решено ФорумAdmin

Не совпадают значения free и ps


0

3

Очередной free/ps различий тред.

$ ps -e -orss=,args= | pr -TW$COLUMNS | awk '{print $1}' | paste -sd+ | bc
21364252
$ free | grep 'buffers/cache'
-/+ buffers/cache:   46324292   52674908
Почему сумма памяти, потребляемой процессами в ps (21364252) примерно в два раза меньше, чем значение used в free (52674908)?

Куда остальное делось?

После долгого поиска, попал, кажется, пальцем в небо:

$ cat /proc/meminfo | grep Slab
Slab:           25131060 kB
Вот где вся память. Осталось понять, что это за Slab такой..

generator ★★★ ()

вот смотрю я на это всё, и до сих пор недоумеваю
почему в linux так много подобных memory-проблем?..

reprimand ★★★★★ ()
Ответ на: комментарий от reprimand

В линуксе нет memory-проблем, в нем есть непонимание юзеров как организована память.

blind_oracle ★★★★★ ()
Ответ на: комментарий от redgremlin

Я правильно понимаю, что если slabtop показывает, что больше всего занято ext4_inode_cache и dentry, то это даже скорее хорошо, ведь доступ к ФС будет быстрее, а при необходимости эта память всё-равно освободится для процессов?

generator ★★★ ()
Ответ на: комментарий от blind_oracle

Я до этого момента думал, что представляю, как «организована память». Оказывается нет.. Про slab первый раз услышал.

Наверно это из-за того, что первый раз столкнулся с таким нагруженным сервером.

generator ★★★ ()
Ответ на: комментарий от generator

Вот почитай: http://halobates.de/memory.pdf

Помимо кешей и т.п. там есть еще всякие метаданные для кешей, которые тоже надо хранить, есть хэш-таблицы и прочая лабуда. Вот для этого и юзается SLAB ядром. Эдакое универсальное хранилище-кешилище :)

У меня на сервере с 32Гб мозгов, который занимается только отдачей блоков по iSCSI slab жрёт аж 1.5Гб из которых 1Гб Reclaimable. А остальное занимают кеши-буфферы.

Так что, как я это понимаю - на ~28Гб кэша выходит ~1Гб метаданных и прочих накладных расходов, которые ведро освободит при очистке кешей. Могу ошибаться :)

blind_oracle ★★★★★ ()
Ответ на: комментарий от generator

Смотри в meminfo SReclaimable параметр, это то, сколько сервер освободит при надобности из Slab.

А если у тебя под inode_cache и dentry юзается много памяти - то скорее всего у тебя очень большие объемы ФС и\или очень много файлов.

blind_oracle ★★★★★ ()
Ответ на: комментарий от blind_oracle

Вот почитай

Спасибо, посмотрю.

то скорее всего у тебя очень большие объемы ФС и\или очень много файлов

Ага. Так и есть.

generator ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.