Почему использование памяти в «top» не складывается?


28

Я заметил, что иногда, когда я запускаю top , использование памяти каждым процессом в таблице процессов, по-видимому, не дает общего результата.

Например, в приведенном ниже дампе top говорит, что я использую 16 Гб памяти. Однако таблица процессов показывает только два процесса, использующих чуть более 520 Мб. Как я могу узнать, что потребляет другие 15,5 Гб? (Я использую CentOS.)

$ top

вверх - 12:16:34 до 45 дней, 2:28, 3 пользователя, средняя загрузка: 0,24, 0,65, 0,71
Задачи: всего 274, 1 работает, 273 спит, 0 остановлен, 0 зомби
ЦП: 2,3% США, 0,2% sy, 0,0% ni, 97,5% id, 0,0% wa, 0,0% hi, 0,0% si, 0,0% st
Память: всего 16432032k, использовано 16340144k, 91888k свободно, 21736k буферов
Обмен: всего 18481144 КБ, использовано 1112 КБ, 18480032 КБ свободно, 15624488 Кэшировано

  PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + КОМАНДА
18159 jsmith 15 0 260 м 31 м 4560 S 16,6 0,2 53: 35,64 питон
 4795 26 15 0 260 м 6608 4220 S 2,0 0,0 0: 00,06 почтмейстер
    1 корень 15 0 10344 680 568 S 0,0 0,0 0: 39,36 init
    2 корень RT -5 0 0 0 S 0,0 0,0 0: 00,53 миграция / 0
    3 корень 34 19 0 0 0 S 0,0 0,0 0: 00,62 ksoftirqd / 0
    4 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 сторожевой таймер / 0
    5 root RT -5 0 0 0 S 0.0 0.0 0: 02.09 миграция / 1
    6 корень 34 19 0 0 0 S 0,0 0,0 0: 01,32 ksoftirqd / 1
    7 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 сторожевой таймер / 1
    8 корень RT -5 0 0 0 S 0,0 0,0 0: 00,99 миграция / 2
    9 корень 34 19 0 0 0 S 0,0 0,0 0: 01,74 ksoftirqd / 2
   10 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 сторожевой таймер / 2
   11 root RT -5 0 0 0 S 0.0 0.0 0: 02.16 миграция / 3
   12 корень 34 19 0 0 0 S 0,0 0,0 0: 01,30 ksoftirqd / 3
   13 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 сторожевой таймер / 3
   14 root RT -5 0 0 0 S 0,0 0,0 0: 01,94 миграция / 4
   15 корень 34 19 0 0 0 S 0,0 0,0 0: 01,78 ksoftirqd / 4
   16 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 сторожевой таймер / 4
   17 root RT -5 0 0 0 S 0.0 0.0 0: 01.92 миграция / 5
   18 корень 34 19 0 0 0 S 0,0 0,0 0: 01,30 ksoftirqd / 5
   19 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 сторожевой таймер / 5
   20 root RT -5 0 0 0 S 0.0 0.0 0: 02.06 миграция / 6
   21 корень 34 19 0 0 0 S 0,0 0,0 0: 01,83 ksoftirqd / 6
   22 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 сторожевой таймер / 6
   23 root RT -5 0 0 0 S 0.0 0.0 0: 02.31 миграция / 7
   24 корень 34 19 0 0 0 S 0,0 0,0 0: 01,50 ksoftirqd / 7
   25 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 сторожевой таймер / 7
   26 корень 10 -5 0 0 0 S 0,0 0,0 0: 00,42 события / 0
   27 корень 10 -5 0 0 0 S 0,0 0,0 0: 00,28 события / 1
   28 корень 10 -5 0 0 0 S 0,0 0,0 0: 00,37 события / 2
   29 корень 10 -5 0 0 0 S 0,0 0,0 0: 00,21 события / 3
   30 корень 10 -5 0 0 0 S 0,0 0,0 0: 00,38 события / 4
   31 корень 10 -5 0 0 0 S 0,0 0,0 0: 00,27 события / 5
   32 корень 10 -5 0 0 0 S 0,0 0,0 0: 00,52 события / 6
   33 root 10 -5 0 0 0 S 0,0 0,0 0: 00,64 события / 7
   34 корень 10 -5 0 0 0 S 0,0 0,0 0: 00,00 хелпер

Ответы:


26

Из строки, посвященной использованию памяти, вверху:

Mem: 16432032k total, 16340144k used, 91888k free, 21736k buffers
Swap: 18481144k total, 1112k used, 18480032k free, 15624488k cached

Давайте проигнорируем обмен. Общая память равна сумме использованной и свободной памяти. С другой стороны, используется сумма «реально используемых приложениями» и кешированных данных и буферов. Итак, в вашем случае выглядит так:

  • Mem = 16432032k = 16340144k + 91888k;
  • «Действительно используется приложениями» = Используется - (кэшировано + буферы) = 16340144k - (15624488k + 21736k) = 693920k.

Остальные 15,5 ГБ кэшируются. Это улучшает производительность. Однако в тот самый момент, когда приложению требуется часть кешируемой памяти, оно сразу же отдается ему. Вы заметите это, если запустите какое-нибудь приложение и монитор, требующие памяти top.


1

Этот список не похож на 274 totalпроцессы для меня. Вверху обычно отображается только то, что умещается на вашем терминале / экране. ps auxВместо этого используйте и добавьте rssзначение (или любой другой столбец резидентной памяти, отображаемый в вашей версии).

Вы также не хотите добавлять размер виртуальной памяти, кажется, вы действительно заинтересованы в RESстолбце resident ( ).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.