Dies ist eine Maschine mit 32 GB Arbeitsspeicher und der folgende Top/Free-Befehl besagt, dass 30,5 GB Arbeitsspeicher verwendet werden, aber die Gesamt-RES beträgt tatsächlich viel weniger als 30,5 GB. Warum?
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
Der folgende PS-Befehl berechnet den gesamten RSS-Speicherplatz, der 7 GB beträgt, aber der Befehl top/free gibt 30,5 GB belegt zurück. Warum?
ps -e --format rss | awk 'BEGIN{c=0} {c+=$1} END{print c/1024}'
Mein großer Fehler ist, dass diese Maschine tatsächlich 32 GB Speicher hat, nicht 64 GB.
Antwort1
Dies liegt daran, dass 22,7 Speicher zwischengespeichert sind.
So verstehe ich es.
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
Beachten Sie, dass sich in topRow2 ein PUNKT befindet.