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。

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

尽管处于“交换:”行,但它实际上与SWAP无关。

要通过一个小实验来validation我的答案,请尝试以下方法:

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

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

如果再次跑到顶部,你会注意到’缓存’增长了128M

现在删除该文件

 rm ~/trick 

再次运行顶部,你会看到’缓存’已经下降了128M

对于Mem:

total = used + free

used = + buffers + cached

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

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

这被认为是好的; 假设您有4 GB RAM,并且您的程序仅使用1 GB。 其他3 GB将浪费。 虽然知道你只使用了25%的记忆,但感觉“感觉良好”,但另一方面是其他75%的未使用。 因此内核使用它来缓存文件,从而显着提高性能。 这是自动的; 与旧操作系统不同,您无需决定投入多少磁盘缓存或手动配置它。

“Linux磁盘缓存非常不引人注目。它使用备用内存来大大提高磁盘访问速度,而且不需要从应用程序中取出任何内存。在Linux上完全使用的ram存储是有效的硬件使用,而不是警告标志。”

这是一个常见问题,有一个专门讨论它的整个网站:

http://www.linuxatemyram.com

该网站甚至有办法清空磁盘缓存,这样你就可以运行一些应用程序,看看启用缓存的速度有多快:)