top命令中的“缓存”是什么?


46

运行时top,我得到:

top - 09:10:52 up 18:37,  1 user,  load average: 1.56, 1.33, 1.15
Tasks:  39 total,   1 running,  38 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.6%sy,  1.0%ni, 92.5%id,  5.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4194304k total,  3045460k used,  1148844k free,        0k buffers
Swap:        0k total,        0k used,        0k free,  2256128k cached

查看部分:2256128k缓存了吗?这到底是什么意思呢?

我正在比较来自两个提供程序的两个VPS,其中一个总是在那里有大量(70%的已用内存),而另一个VPS提供程序总是显示0。

Answers:


15

缓存之前的数字是文件系统的缓存缓冲区正在使用的物理内存量。

尽管位于“ Swap:”行中,但它实际上与SWAP无关。

要通过一个小实验来验证我的答案,请尝试以下操作:

运行top并记下'cached'的值。现在运行

dd if=/dev/zero of=~/trick bs=1M count=128

如果再次运行,您会注意到“缓存”的数量增加了128M

现在删除文件

rm ~/trick

再次运行顶部,您将看到'cached'下降了128M

因此对于Mem:

total = used + free

used = <all apps> + buffers + cached

(其中缓冲区基本上是缓存的元数据)。UI有点混乱。


我可以以任何方式影响它,例如限制它或完全禁用它?
KKK 2012年

2
你为什么要这样做?你该怎么办?它关于文件系统如何在物理内存中缓存。

因为大多数文件系统是一个数据库,该数据库具有自己的缓存,所以我认为最好以某种方式限制这部分。
KKK 2012年

您可以通过一些搜索来做到,但我不建议您。这将限制FS的性能

117

Linux内核将使用可用内存进行磁盘缓存,除非正在运行的程序需要此内存。

这被认为是很好;假设您有4 GB RAM,而您的程序仅使用1 GB。其他3 GB将会浪费。尽管由于知道您仅使用25%的内存而给人以“良好”的印象,但与此相反的是,其余75​​%的内存都没有使用。因此,内核将其用于缓存文件,从而大大提高了性能。它是自动的;与较旧的操作系统不同,您无需决定投入多少磁盘缓存或手动配置它。

“ Linux磁盘缓存非常不引人注目。它使用备用内存来大大提高磁盘访问速度,并且不会占用应用程序任何内存。在Linux上完全使用的ram存储是有效的硬件使用,而不是警告信号。”

这是一个非常普遍的问题,整个网站都专门针对此问题:

http://www.linuxatemyram.com

该网站甚至可以清空磁盘缓存,因此您可以运行一些应用程序,并查看启用缓存后它们的运行速度:)


4
喜欢这个答案,但是由于声誉欠佳,我无法升级它(至今)。抱歉。
2012年

4
不用担心,我很高兴能为您提供帮助。希望这些信息有用!
roadmr 2012年

这应该是公认的答案。那好吧 。。。:(
ankush981 '18

绝对应该是公认的答案。linuxatemyram是个很棒的信息!
rafaelbattesti
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.