사용된 물리적 메모리가 어떻게 프로세스에서 보고한 '상주' 메모리 합계를 초과할 수 있습니까?

사용된 물리적 메모리가 어떻게 프로세스에서 보고한 '상주' 메모리 합계를 초과할 수 있습니까?

top아래 표시된 출력을 고려하면 (모두free프로세스가 현재 활성 상태임): 이 가상 서버가 사용된 물리적 메모리가 ~500M(사용됨 - 캐시됨, 에서 확인됨 )로 보고하는 반면 'RES' 합계는 그보다 훨씬 낮다는 것이 어떻게 가능합니까 ? 합계가 RES항상 사용된 실제 메모리를 초과해서는 안 되나요? 메모리는 무엇을 위해 사용될 수 있습니까?

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   

참고: 내가 묻는 것은 사람들이 일반적으로 묻는 것과 정반대입니다.

요청 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

저는 가상화 기술이 Virtuozzo라고 믿습니다.

답변1

특히 VM과 관련하여 "밖에서, 들여다보고" 대 "내부, 둘러보고"

VM에서 최대 500MB의 사용을 보고하지만 top사용 중인 RAM이 훨씬 적게 표시되는 이유는 무엇입니까?

VM이 ~500MB 사용을 보고하지만(VM 관리자에서 가정) 총계가 RES훨씬 낮은 경우 이는 예상된 것입니다.

VM(VMware, Virtuozzo 컨테이너, Hyper-V 또는 Solaris Zone)은 프로세스에서 사용하는 것보다 더 많은 RAM을 소비합니다. 실제로 VM을 실행하는 데 필요한 "오버헤드"는 해당 측정항목(가상 장치 매핑, 가상 장치 캐시(예: 네트워크 및 디스크), 커널 공간 등)으로 집중됩니다.

완전성을 기하기 위해 대부분의 사람들이 묻는 "반대" 문제에 대해 간략하게 설명하겠습니다(이것이 제가 이 질문을 찾은 방법입니다).

Top의 "Resident Set" 크기( RES)는 물리적 메모리보다 "더 큼"

MM_ANONPAGES상주 세트 크기는 "익명"( ) 페이지와 "파일 지원"( MM_FILEPAGES) 페이지 의 합계로 커널에 의해 계산됩니다 . 단일 페이지가 여러 번 계산될 수 있으므로(여러 프로세스로 인해) 이는 실행 중인 모든 프로세스에서 RESin이 top계산되는 이유를 설명하며 가능한 것보다 더 많은 메모리를 소비하는 것처럼 보입니다.

관련 정보