内存使用率高但没有进程使用它

内存使用率高但没有进程使用它

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

答案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

简短的回答:内核使用缓冲区/高速缓存来执行各种任务,例如缓存文件。如果需要,该内存可供应用程序使用,因此您所说的已使用 944 MB 是正确的。

相关内容