top 命令中的“cached”是什么意思?

top 命令中的“cached”是什么意思?

运行时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,这个提供商的 VPS 总是有大量内存(已用内存的 70%),而另一个 VPS 提供商的 VPS 总是显示 0。

答案1

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

这被认为是好的;假设你有 4 GB 的 RAM,而你的程序只使用了 1 GB。其他 3 GB 将被浪费。尽管知道你只使用了 25% 的内存会让人感觉“良好”,但相反的是,其他 75% 的内存未被使用。因此内核会使用它来缓存文件,从而显著提高性能。它是自动的;与旧操作系统不同,你不需要决定将多少内存用于磁盘缓存,也不需要手动配置它。

“Linux 磁盘缓存非常不显眼。它使用空闲内存来大大提高磁盘访问速度,并且不会占用应用程序的任何内存。Linux 上充分利用的 RAM 存储意味着硬件使用效率高,而不是警告信号。”

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

http://www.linuxatemyram.com

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

答案2

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

它是实际上不与 SWAP 相关,尽管位于“Swap:”行上。

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

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

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

如果你再次运行 top,你会注意到“cached”已经增长了128米

现在删除文件

rm ~/trick

再次运行 top,你会看到“缓存”已经下降128米

因此对于 Mem 来说:

total = used + free

used = <all apps> + buffers + cached

(缓冲区基本上是元数据用于缓存)。用户界面有点混乱。

相关内容