Linux
高記憶體使用但沒有程序正在使用它
我
free -m
在 Hyper-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 正在使用中,只有 1500MB 是可用的(不包括記憶體)。
但我很難找到正在使用記憶體的東西。的輸出
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
我了解您使用的是 Hyper-V,但概念相似。也許這會讓你走上正確的軌道。
您的問題可能是由於虛擬記憶體膨脹造成的,這是虛擬機管理程序用來優化記憶體的一種技術。有關說明,請參見此連結
我在 vSphere 中的虛擬機上觀察到了完全相同的症狀。一台沒有任何執行的 4G 機器會報告記憶體使用了 30M,但在“-/+ 緩衝區”行中“已使用”超過 3G。
這是 VMWare 的統計命令的範例輸出。這顯示了我的“已使用”數量與 3G 的接近程度:
vmware-toolbox-cmd stat balloon 3264 MB
就我而言,很明顯,我的氣球驅動器使用的是~3G
我不確定 Hyper-V 中的類似命令是什麼來獲取你的氣球統計資訊,但我相信你會得到類似的結果