메모리 사용량은 높지만 이를 사용하는 프로세스가 없습니다.

메모리 사용량은 높지만 이를 사용하는 프로세스가 없습니다.

저는 free -mHyper-V에서 실행되는 Debian VM에서 이것을 실행하고 있습니다:

             total       used       free     shared    buffers     cached
Mem:         10017       9475        541        147         34        909
-/+ buffers/cache:       8531       1485
Swap:         1905          0       1905

따라서 내 10GB 메모리 중 8.5GB가 사용되고 있으며 1,500MB만 사용할 수 있습니다(캐시 제외).

하지만 메모리를 사용하는 것이 무엇인지 찾는 데 문제가 있습니다. ps aux | awk '{sum+=$6} END {print sum / 1024}'(RSS 활용도를 합산해야 함) 의 출력은 다음과 같습니다.

1005.2

즉, 내 프로세스는 1GB의 메모리만 사용하지만 전체 시스템(캐시 제외)은 8.5GB를 사용합니다.

남은 7.5GB는 어떤 용도로 사용할 수 있나요?

ps: 사용된 메모리를 1200(사용 가능한 메모리 = 8.8GB)으로 표시하고 ps의 총 RSS 사용량을 900으로 표시하는 유사한 구성의 다른 서버가 있는데 이는 예상한 것과 더 가깝습니다.


편집하다

cat /proc/meminfo머신 1(메모리 부족):

MemTotal:       10257656 kB
MemFree:          395840 kB
MemAvailable:    1428508 kB
Buffers:          162640 kB
Cached:          1173040 kB
SwapCached:          176 kB
Active:          1810200 kB
Inactive:         476668 kB
Active(anon):     942816 kB
Inactive(anon):   176184 kB
Active(file):     867384 kB
Inactive(file):   300484 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       1951740 kB
SwapFree:        1951528 kB
Dirty:                16 kB
Writeback:             0 kB
AnonPages:        951016 kB
Mapped:           224388 kB
Shmem:            167820 kB
Slab:              86464 kB
SReclaimable:      67488 kB
SUnreclaim:        18976 kB
KernelStack:        6736 kB
PageTables:        13728 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     7080568 kB
Committed_AS:    1893156 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       62284 kB
VmallocChunk:   34359672552 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       67520 kB
DirectMap2M:    10418176 kB

cat /proc/meminfo머신 2(일반적인 메모리 사용량):

MemTotal:       12326128 kB
MemFree:         8895188 kB
MemAvailable:   10947592 kB
Buffers:          191548 kB
Cached:          2188088 kB
SwapCached:            0 kB
Active:          2890128 kB
Inactive:         350360 kB
Active(anon):    1018116 kB
Inactive(anon):    33320 kB
Active(file):    1872012 kB
Inactive(file):   317040 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       3442684 kB
SwapFree:        3442684 kB
Dirty:                44 kB
Writeback:             0 kB
AnonPages:        860880 kB
Mapped:           204680 kB
Shmem:            190588 kB
Slab:              86812 kB
SReclaimable:      64556 kB
SUnreclaim:        22256 kB
KernelStack:       10576 kB
PageTables:        11924 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     9605748 kB
Committed_AS:    1753476 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       62708 kB
VmallocChunk:   34359671804 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       63424 kB
DirectMap2M:    12519424 kB

답변1

Hyper-V를 사용하고 계신 것으로 알고 있지만 개념은 비슷합니다. 아마도 이것이 당신을 올바른 길로 인도할 것입니다.

문제는 하이퍼바이저가 메모리를 최적화하기 위해 사용하는 기술인 가상 메모리 팽창으로 인해 발생할 수 있습니다. 바라보다이 링크에 대한 설명

vSphere의 가상 머신에서 귀하와 똑같은 증상이 관찰되고 있습니다. 아무것도 실행하지 않는 4G 시스템은 30M의 캐시 사용량을 보고하지만 "-/+ 버퍼" 라인에서 3G보다 더 많은 것을 "사용"합니다.

다음은 VMWare 통계 명령의 샘플 출력입니다. 이는 내 "사용된" 금액이 3G에 얼마나 가까운지를 보여줍니다.

vmware-toolbox-cmd stat balloon
3264 MB

내 경우에는 풍선 운전사가 ~3G를 사용하고 있다는 것이 분명했습니다.

풍선 통계를 얻기 위해 Hyper-V에 유사한 명령이 무엇인지 잘 모르겠지만 비슷한 결과를 얻을 것이라고 확신합니다.

답변2

https://serverfault.com/questions/85470/meaning-of-the-buffers-cache-line-in-the-output-of-free

짧은 대답: 커널은 버퍼/캐시를 사용하여 파일 캐싱과 같은 다양한 작업을 수행합니다. 이 메모리는 필요한 경우 애플리케이션에 사용할 수 있으므로 944MB가 사용되고 있다는 설명이 정확합니다.

관련 정보