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


17

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:我有一台配置类似的服务器,显示使用过的mem为1200(免费mem = 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

Answers:


15

我了解您正在使用Hyper-V,但是概念相似。也许这会使您走上正确的道路。

您的问题很可能是由于虚拟内存膨胀(虚拟机管理程序用来优化内存的一种技术)引起的。请参阅此链接以获取描述

我在vSphere中观察到与您的VM完全相同的症状。一台没有运行任何内容的4G计算机将报告缓存使用了30M,但在“-/ +缓冲区”行中“使用”了3G以上。

这是VMWare的statistics命令的示例输出。这表明我的“已用”金额接近3G的程度:

vmware-toolbox-cmd stat balloon
3264 MB

就我而言,很明显,我的气球司机正在使用〜3G

我不确定Hyper-V中类似的命令是用来获取气球统计信息的,但是我确定您会获得相似的结果


谢谢-您一定会喜欢的。lsmod | grep hv_在低内存机器上显示hv_balloon,但不在另一机器上显示-因此,balloon模块被加载到一个而不是另一个上。并且该行为非常类似于此描述
assylias '02

但不确定vmware-toolbox-cmd在Hyper V上等效于什么。
assylias '02

@assylias我知道,对不起。我在写这个答案的时候看了看自己,然后变得空虚。但是,如果编写的程序可以快速分配大量内存,则可能会使管理程序确信您的VM需要资源。与磁盘缓存逐出测试用例相似,但是根本原因不同。
马特

您可以在Hyper-V中取消设置动态ram功能以解决此问题。
Ashish Negi

恐怕我在这里看不到解决方案。
Jamie Hutber '18

1

/server/85470/含义-免费-缓冲区-缓存-线免费-在-输出-免费

简短的答案:内核将缓冲区/缓存用于各种任务,例如缓存文件。如果需要,此内存可用于应用程序,因此正确地说您已使用944 MB。


根据该链接,944MB是高速缓存的数量
assylias's

2
不,944MB是应用程序实际使用的内存量,其他应用程序不可用。重读该文章:“ Linux(像大多数现代OS一样)将始终尝试使用空闲RAM来缓存内容,因此Mem:free几乎总是很低。因此,显示了-/ + buffers / cache:行,因为它显示了忽略缓存时有多少可用内存;如果内存不足,缓存将自动释放,因此它们并不重要。”
维克

是的,-/ +缓冲区/缓存显示了1.5GB的免费内存...
assylias,2016年

请了解-/ +缓冲区高速缓存中的1485可用空间不是系统上应用程序可用的内存量。应用程序实际可用的内存量为:(10017-(9475-8531))=9073。这有意义吗?
维克

我认为您错了:第二行不包括缓存和缓冲区,而是应用程序的实际内存利用率(这就是您的链接所说的...)。
assylias '02
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.