当前位置: 首页>>技术教程>>正文


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

最佳解决办法

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

这是与SWAP相关的not actually,尽管它位于”Swap:”线上。

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

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

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

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

现在删除该文件

rm ~/trick

再次跑到顶部,你会看到’cached’下降了128M

对于Mem:

total = used + free

used = <all apps> + buffers + cached

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

次佳解决办法

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

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

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

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

http://www.linuxatemyram.com

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1801.html,未经允许,请勿转载。