Чому використання пам'яті в «вершині» не складається?


26

Я помітив, що іноді, коли біжу зверху , використання пам'яті кожного процесу в таблиці процесів, здається, не додає до загальної кількості.

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

$ top

top - 12:16:34 up 45 days,  2:28,  3 users,  load average: 0.24, 0.65, 0.71
Tasks: 274 total,   1 running, 273 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.3%us,  0.2%sy,  0.0%ni, 97.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16432032k total, 16340144k used,    91888k free,    21736k buffers
Swap: 18481144k total,     1112k used, 18480032k free, 15624488k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18159 jsmith    15   0  260m  31m 4560 S 16.6  0.2  53:35.64 python
 4795 26        15   0  260m 6608 4220 S  2.0  0.0   0:00.06 postmaster
    1 root      15   0 10344  680  568 S  0.0  0.0   0:39.36 init
    2 root      RT  -5     0    0    0 S  0.0  0.0   0:00.53 migration/0
    3 root      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 watchdog/0
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:02.09 migration/1
    6 root      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 watchdog/1
    8 root      RT  -5     0    0    0 S  0.0  0.0   0:00.99 migration/2
    9 root      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 watchdog/2
   11 root      RT  -5     0    0    0 S  0.0  0.0   0:02.16 migration/3
   12 root      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 watchdog/3
   14 root      RT  -5     0    0    0 S  0.0  0.0   0:01.94 migration/4
   15 root      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 watchdog/4
   17 root      RT  -5     0    0    0 S  0.0  0.0   0:01.92 migration/5
   18 root      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 watchdog/5
   20 root      RT  -5     0    0    0 S  0.0  0.0   0:02.06 migration/6
   21 root      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 watchdog/6
   23 root      RT  -5     0    0    0 S  0.0  0.0   0:02.31 migration/7
   24 root      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 watchdog/7
   26 root      10  -5     0    0    0 S  0.0  0.0   0:00.42 events/0
   27 root      10  -5     0    0    0 S  0.0  0.0   0:00.28 events/1
   28 root      10  -5     0    0    0 S  0.0  0.0   0:00.37 events/2
   29 root      10  -5     0    0    0 S  0.0  0.0   0:00.21 events/3
   30 root      10  -5     0    0    0 S  0.0  0.0   0:00.38 events/4
   31 root      10  -5     0    0    0 S  0.0  0.0   0:00.27 events/5
   32 root      10  -5     0    0    0 S  0.0  0.0   0:00.52 events/6
   33 root      10  -5     0    0    0 S  0.0  0.0   0:00.64 events/7
   34 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 khelper

Відповіді:


24

З відповідних рядків використання пам'яті у верхній частині:

Mem: 16432032k total, 16340144k used, 91888k free, 21736k buffers
Обмін: 18481144k всього, 1112k б / в, 18480032k безкоштовно, 15624488k кешований

Давайте ігноруємо своп. Загальна пам'ять дорівнює сумі використовуваної і вільної пам'яті. З іншого боку, використовується сума "дійсно використовуваних додатків" і кешованих і буферів. Отже, у вашому випадку йде так:

  • Mem = 16432032k = 16340144k + 91888k;
  • "Дійсно використовується програмами" = Використовується - (кешовані + буфери) = 16340144k - (15624488k + 21736k) = 693920k.

Інші 15,5 ГБ кешуються. Це підвищує продуктивність. Проте в той момент, коли програма вимагає частину кешованої пам'яті, вона відразу передається йому. Ви помітите це, якщо ви запустите деякий голодний додаток і монітор top.


1

Цей список не виглядає 274 total процеси до мене. Зверху зазвичай відображається лише те, що відповідає вашому терміналу / екрану. Використовуйте ps aux замість цього додайте rss значення (або будь-яка інша колонка пам'яті, яку відображає ваша версія).

Ви також не бажаєте додавати розмір віртуальної пам'яті, здається, ви зацікавлені в резиденті ( RES ) стовпець.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.