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 =
(其中缓冲区基本上是缓存的元数据 )。 有点混淆UI。
Linux内核将使用可用内存进行磁盘缓存,除非正在运行的程序需要它。
这被认为是好的; 假设您有4 GB RAM,并且您的程序仅使用1 GB。 其他3 GB将浪费。 虽然知道你只使用了25%的记忆,但感觉“感觉良好”,但另一方面是其他75%的未使用。 因此内核使用它来缓存文件,从而显着提高性能。 这是自动的; 与旧操作系统不同,您无需决定投入多少磁盘缓存或手动配置它。
“Linux磁盘缓存非常不引人注目。它使用备用内存来大大提高磁盘访问速度,而且不需要从应用程序中取出任何内存。在Linux上完全使用的ram存储是有效的硬件使用,而不是警告标志。”
这是一个常见问题,有一个专门讨论它的整个网站:
该网站甚至有办法清空磁盘缓存,这样你就可以运行一些应用程序,看看启用缓存的速度有多快:)