Linux /proc/meminfo
显示了许多内存使用统计信息。
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”,所以我很好奇什么是更好的方法。
当内核耗尽内存时,要丢弃的页的优先级是什么,衡量可用内存的更合适的度量标准是什么?
发布于 2010-06-13 22:50:12
起初,我发现你的问题很简单,因为在实践中,'+ buffers/ free
‘列中的缓存输出就是我使用的,并且它正常工作。
但它不起作用的一种情况是,当您对相同的块进行大量读取时。例如,一遍又一遍地阅读相同的1 gb_file:
while true; do cat 1gb_file >/dev/null; done
如果您的系统有>1 GB的缓存,那么这将运行得很快。但是,如果您开始将一些缓存用于其他用途,则会破坏系统的性能。
因此,当您评估您的解决方案时,尝试上面的方法,看看解决方案是否考虑到了这一点。
发布于 2016-10-12 04:42:39
从linux-3.14开始,/proc/ MemAvailable中有了新的指标meminfo。
并在utility free的输出中检查行'-/+ buffer/cache:‘。
发布于 2010-06-12 01:53:30
我要说的是,很难衡量哪些页面在被丢弃时会导致系统“对整体系统性能产生重大影响”。用户进程使用的页面将是(Total) -(空闲+缓存+分页)。第二个术语是内核在需要时可以释放的所有内存。但是,释放用于缓存和页面的内存页将对整体系统性能产生重大影响。
如果我要使用启发式,我会说你应该取"Inactive“的值,它是”空闲和可用的缓冲区或页面缓存内存的总量,单位是千字节。这是最近没有使用过的内存,可以回收用于其他目的。“如果你发现你使用了它,并且系统继续工作良好,你可以估计一些“活跃”的百分比作为猜测,因为系统最近可能已经使用了一些页面,但不会再使用它们。你比我更了解这个系统。如果系统专用于您要做的任何事情,那么活动中可能很快使用的页面和缓存文件将取决于系统最近是否用于其他用途。
https://stackoverflow.com/questions/3019748
复制相似问题