首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Linux中可靠地测量可用内存?

如何在Linux中可靠地测量可用内存?
EN

Stack Overflow用户
提问于 2010-06-11 10:01:32
回答 4查看 13.2K关注 0票数 19

Linux /proc/meminfo显示了许多内存使用统计信息。

代码语言:javascript
复制
MemTotal:      4040732 kB
MemFree:         23160 kB
Buffers:        163340 kB
Cached:        3707080 kB
SwapCached:          0 kB
Active:        1129324 kB
Inactive:      2762912 kB

它们之间有相当多的重叠。例如,据我所知,可以有活动页面缓存(属于"cached“和" active ")和非活动页面缓存(" inactive”+ "cached")。

我想要做的是测量“空闲”内存,但在某种程度上,它包括可能会被丢弃的已用页面,而不会对整个系统的性能产生重大影响。

起初,我倾向于使用"free“+ "inactive",但是Linux的"free”实用程序在其“缓冲区调整”显示中使用"free“+ "cached”,所以我很好奇什么是更好的方法。

当内核耗尽内存时,要丢弃的页的优先级是什么,衡量可用内存的更合适的度量标准是什么?

EN

回答 4

Stack Overflow用户

发布于 2010-06-13 22:50:12

起初,我发现你的问题很简单,因为在实践中,'+ buffers/ free‘列中的缓存输出就是我使用的,并且它正常工作。

但它不起作用的一种情况是,当您对相同的块进行大量读取时。例如,一遍又一遍地阅读相同的1 gb_file:

代码语言:javascript
复制
while true; do cat 1gb_file >/dev/null; done

如果您的系统有>1 GB的缓存,那么这将运行得很快。但是,如果您开始将一些缓存用于其他用途,则会破坏系统的性能。

因此,当您评估您的解决方案时,尝试上面的方法,看看解决方案是否考虑到了这一点。

票数 3
EN

Stack Overflow用户

发布于 2016-10-12 04:42:39

从linux-3.14开始,/proc/ MemAvailable中有了新的指标meminfo。

并在utility free的输出中检查行'-/+ buffer/cache:‘。

票数 3
EN

Stack Overflow用户

发布于 2010-06-12 01:53:30

我要说的是,很难衡量哪些页面在被丢弃时会导致系统“对整体系统性能产生重大影响”。用户进程使用的页面将是(Total) -(空闲+缓存+分页)。第二个术语是内核在需要时可以释放的所有内存。但是,释放用于缓存和页面的内存页将对整体系统性能产生重大影响。

如果我要使用启发式,我会说你应该取"Inactive“的值,它是”空闲和可用的缓冲区或页面缓存内存的总量,单位是千字节。这是最近没有使用过的内存,可以回收用于其他目的。“如果你发现你使用了它,并且系统继续工作良好,你可以估计一些“活跃”的百分比作为猜测,因为系统最近可能已经使用了一些页面,但不会再使用它们。你比我更了解这个系统。如果系统专用于您要做的任何事情,那么活动中可能很快使用的页面和缓存文件将取决于系统最近是否用于其他用途。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3019748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档