Wie kann der verwendete physische Speicher die Summe des von Prozessen gemeldeten „residenten“ Speichers überschreiten?

Wie kann der verwendete physische Speicher die Summe des von Prozessen gemeldeten „residenten“ Speichers überschreiten?

Angesichts der topunten gezeigten Ausgabe (die zeigtalleProzesse derzeit aktiv): Wie ist es möglich, dass dieser virtuelle Server ~500 MB physischen Speicher als belegt meldet (benutzt – zwischengespeichert, überprüft durch free), während die Summe von „RES“ viel niedriger ist? Sollte die Summe nicht RESimmer den belegten physischen Speicher überschreiten? Wofür könnte der Speicher belegt sein und wodurch?

top - 08:43:23 up 75 days,  5:00,  1 user,  load average: 0.08, 0.08, 0.04
Tasks:  29 total,   1 running,  28 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us,  0.1%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2400000k total,   713792k used,  1686208k free,        0k buffers
Swap:        0k total,        0k used,        0k free,   200764k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                           
    1 root      20   0 19232  544  384 S  0.0  0.0   0:00.08 init                                                                                                                              
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd/201208                                                                                                                   
    3 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper/2012080                                                                                                                   
  323 pdns-rec  20   0  169m 2980 1152 S  0.0  0.1   1:58.98 pdns_recursor                                                                                                                     
  560 root      20   0  6160  200  196 S  0.0  0.0   0:00.00 portreserve                                                                                                                       
  578 dbus      20   0 21536  324  284 S  0.0  0.0   0:00.00 dbus-daemon                                                                                                                       
  598 nobody    20   0 17040 2108  880 S  0.0  0.1   4:48.33 openvpn                                                                                                                           
  607 nobody    20   0 16124 1112  724 S  0.0  0.0   0:41.54 openvpn                                                                                                                           
 1347 root      20   0 78732  592  508 S  0.0  0.0   0:12.35 master                                                                                                                            
 1355 postfix   20   0 78984  612  516 S  0.0  0.0   0:02.63 qmgr                                                                                                                              
 1515 root      20   0  9232  564  396 S  0.0  0.0   0:39.69 gam_server                                                                                                                        
11077 root      16  -4 10648  272  268 S  0.0  0.0   0:00.00 udevd                                                                                                                             
12912 root      20   0  168m  57m 3040 S  0.0  2.4   0:56.31 puppetd                                                                                                                           
13187 root      20   0 11308 1224 1220 S  0.0  0.1   0:00.00 mysqld_safe                                                                                                                       
13295 mysql     20   0 1348m  44m 4232 S  0.0  1.9 246:49.61 mysqld                                                                                                                            
13391 root      20   0 66608  516  404 S  0.0  0.0   0:00.00 sshd                                                                                                                              
13411 root      20   0 20468  740  644 S  0.0  0.0   0:00.71 crond                                                                                                                             
13452 root      20   0  243m 1428  820 S  0.0  0.1   0:00.36 rsyslogd                                                                                                                          
16087 app       20   0 14896 1096  880 R  0.0  0.0   0:00.00 top                                                                                                                               
18993 newrelic  20   0 25764  124   84 S  0.0  0.0   0:00.00 nrsysmond                                                                                                                         
18994 newrelic  20   0  103m 1540 1036 S  0.0  0.1   0:46.22 nrsysmond                                                                                                                         
23268 postfix   20   0 81356 3384 2508 S  0.0  0.1   0:00.00 pickup                                                                                                                            
29550 root      20   0  387m 3516 1088 S  0.0  0.1   2:25.48 fail2ban-server                                                                                                                   
31434 root      20   0 96264 2408 2376 S  0.0  0.1   0:00.00 sshd                                                                                                                              
31438 user      20   0 96264  816  640 S  0.0  0.0   0:00.25 sshd                                                                                                                              
31439 user      20   0  105m 1264 1260 S  0.0  0.1   0:00.00 bash                                                                                                                              
31456 root      20   0  165m 1768 1764 S  0.0  0.1   0:00.00 sudo                                                                                                                              
31457 root      20   0  138m 1020 1016 S  0.0  0.0   0:00.00 su                                                                                                                                
31458 app       20   0 13440 3332 1492 S  0.0  0.1   0:00.07 bash   

Hinweis: Meine Frage ist genau das Gegenteil von dem, was die Leute normalerweise fragen.

Angefordert cat /proc/memoinfo:

MemTotal:        2400000 kB
MemFree:         1682660 kB
Cached:           202948 kB
Active:           132988 kB
Inactive:         180704 kB
Active(anon):      19668 kB
Inactive(anon):    91076 kB
Active(file):     113320 kB
Inactive(file):    89628 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 4 kB
Writeback:             0 kB
AnonPages:        110744 kB
Shmem:              2568 kB
Slab:            2268056 kB
SReclaimable:    2260740 kB
SUnreclaim:         7316 kB

Ich glaube, die Virtualisierungstechnologie ist Virtuozzo.

Antwort1

Speziell bei VMs sieht die RAM-Nutzung anders aus, wenn Sie „draußen, hineinschauen" gegen "drinnen, umschauen"

Warum meldet eine VM eine Nutzung von ca. 500 MB, topzeigt aber viel weniger genutzten RAM an?

Wenn die VM eine Nutzung von ca. 500 MB meldet (ich gehe davon aus, dass dies im VM-Manager der Fall ist), der Gesamtwert jedoch RESviel niedriger ist, ist das zu erwarten.

Eine VM (sei es eine VMware, Virtuozzo-Container, Hyper-V oder Solaris Zone) verbraucht mehr RAM als nur die Prozesse verwenden. Der „Overhead“, der zum tatsächlichen Ausführen der VM erforderlich ist, wird in diese Metrik einbezogen (virtuelle Gerätezuordnungen, virtuelle Geräte-Caches (wie Netzwerk und Festplatte), Kernelspeicher usw.).

Der Vollständigkeit halber werde ich eine kurze Erklärung des „entgegengesetzten“ Problems geben, das die meisten Leute stellen (so bin ich auf diese Frage gestoßen).

Tops "Resident Set"-Größe ( RES) "größer" als der physische Speicher

Die Größe des Resident Set wird vom Kernel als Summe der „anonymen“ ( MM_ANONPAGES) Seiten und der „dateigestützten“ ( MM_FILEPAGES) Seiten berechnet. Da eine einzelne Seite mehrfach gezählt werden kann (mehreren Prozessen zugeordnet wird), erklärt dies, warum RESsie topvon jedem laufenden Prozess aus berechnet wird. Es sieht so aus, als würde sie mehr Speicher verbrauchen als möglich.

verwandte Informationen