Почему общий объем RES не соответствует используемой памяти в команде top?

Почему общий объем RES не соответствует используемой памяти в команде top?

Это машина с памятью 32 ГБ, и следующая команда top/free говорит, что используется 30,5 ГБ памяти, но общий объем RES на самом деле намного меньше 30,5 ГБ. Почему?

top - 21:54:46 up 20 days,  1:46,  4 users,  load average: 0.59, 0.43, 0.34
Tasks: 238 total,   2 running, 233 sleeping,   0 stopped,   3 zombie
%Cpu(s):  3.8 us,  0.7 sy,  0.1 ni, 94.0 id,  1.5 wa,  0.0 hi,  0.0 si,  0.0 st
GiB Mem:    31.523 total,   30.609 used,    0.913 free,    0.456 buffers
GiB Swap:    4.000 total,    0.134 used,    3.866 free.   22.733 cached Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 2600 xxxxxxx   20   0 12.048g 2.002g 0.034g S   0.3  6.4  14:24.92 xxxxxx
 1443 xxxxx     20   0  1.302g 0.837g 0.019g S   0.3  2.7 102:19.93 xxxxxx
 9782 xxxxxxx   20   0  1.942g 0.573g 0.043g S  17.0  1.8 164:53.02 cinnamon
20730 xxxxx     20   0  0.619g 0.289g 0.055g S   0.3  0.9 102:19.50 xxxxxx
29920 xxx       20   0  0.787g 0.189g 0.020g S   0.3  0.6  60:42.72 xxxxxx
31377 xxxxxxx   20   0  3.390g 0.169g 0.006g S   0.0  0.5  38:45.66 xxxxxx
 9497 xxxxxxx   20   0  0.367g 0.168g 0.036g S   1.3  0.5  16:00.60 xxxxxx
 1402 root      20   0  1.010g 0.154g 0.024g S   0.3  0.5  54:30.61 xxxxxx
14176 root      39  19  0.306g 0.118g 0.011g S   0.0  0.4   4:32.76 xxxxxx
  903 xxxxxxx   20   0  0.383g 0.101g 0.034g S   0.3  0.3   0:43.40 xxxxxx

             total       used       free     shared    buffers     cached
Mem:            32         31          1          0          0         23
-/+ buffers/cache:          8         24
Swap:            3          0          3

Следующая команда ps вычисляет общий RSS, который составляет 7 ГБ, но команда top/free возвращает 30,5 ГБ использовано. Почему?

ps -e --format rss  | awk 'BEGIN{c=0} {c+=$1} END{print c/1024}'

Моя большая ошибка в том, что на самом деле объем памяти этого аппарата составляет 32 ГБ, а не 64 ГБ.

решение1

Это потому, что имеется 22,7 кэшированной памяти.

Вот как я это понимаю.

total memory 
= used in topRow1 + free in topRow1 + buffers in topRow1 + cached in topRow2 
= used in freeRow2 + free in freeRow2

total RES in ps 
= used in freeRow2

Обратите внимание, что в topRow2 есть точка.

введите описание изображения здесь

Связанный контент