Почему делает использование памяти в “вершине” не, складывают?

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

Например, в дампе ниже, вершина говорит, что я использую 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
28
задан 13.05.2011, 07:47

0 ответов

От связанных с использованием памяти строк в вершине:

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

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

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

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

26
ответ дан 07.12.2019, 09:25

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

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

1
ответ дан 07.12.2019, 09:25

Теги

Похожие вопросы