¿Por qué el RES total no coincide con la memoria utilizada en el comando superior?

¿Por qué el RES total no coincide con la memoria utilizada en el comando superior?

Esta es una máquina de 32 GB de memoria y el siguiente comando top/free dice que se utilizan 30,5 GB de memoria, pero el RES total es en realidad mucho menos de 30,5 GB. ¿Por qué?

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

El siguiente comando ps calcula el RSS total, que es 7 GB, pero el comando top/free devuelve 30,5 GB utilizados. ¿Por qué?

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

Mi gran error es que esta máquina en realidad tiene 32 GB de memoria, no 64 GB.

Respuesta1

Es porque hay 22,7 memorias en caché.

Aquí está mi entendimiento.

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

Tenga en cuenta que hay un PUNTO en topRow2.

ingrese la descripción de la imagen aquí

información relacionada