Dev*_*ven 5 linux cache buffer
我想知道是否可以看到哪个应用程序正在使用我的 ram 缓冲区和缓存。当数据从缓存中删除时,内核中是否还指定了任何时间。我的 Ram 被缓冲区和缓存完全使用,它也开始吃掉交换。
free -m 的输出:
$ free -m
total used free shared buffers cached
Mem: 14034 13878 156 0 10 11362
-/+ buffers/cache: 2505 11528
Swap: 8187 478 7709
Run Code Online (Sandbox Code Playgroud)
不,它不吃交换。它仅用作块缓存。对于大多数缓存来说,缓存不能进入交换区,但此规则也存在一些例外情况。例如,将慢速硬盘缓存在快速 SSD 上可能是一件好事。
但是,就您而言,情况要简单得多:Linux(以及任何其他操作系统)使用所有(或几乎所有)空闲内存来缓存硬盘。而且,不,这不是问题,因为如果需要新的内存页,则始终可以释放读取缓存页。并使用尽可能多的块缓存,使平均文件操作速度更好。
实际上,如果您想知道系统的真实可用内存,您应该像空闲一样计算“缓冲区”和“缓存”。
您可以在“免费”标题上看到的内容实际上是(大部分是非常小的)内存大小,甚至不能(不能)用于缓存。这不是问题,如果您的系统速度很慢,也不是因为这个。
交换使用的原因:某些内存块,对于内核来说似乎非常未使用,可以完全换出。这些尤其是不同守护进程的内存区域,它们只保留在内存中,不执行任何操作。交换它们的内存不是问题,因为它们不用于任何用途,但是使用它们现在空闲的 RAM 页进行缓存可以使您的系统更快。
什么进程使用缓存?实际上很难找到,几乎不可能。块缓存不是由进程填充的,而是由磁盘读取操作填充的。如果一个磁盘块当前在缓存中(这意味着再次读取这个块不需要等待你的硬盘),则意味着有人读取了这个块,但它没有注册,是哪个进程。如果你想知道这些数据,你需要在它发生时观察你的磁盘读取使用情况!
有一个工具可以做到这一点,它的名字是blkmon。它能够监视块设备读取(和写入)操作,google 是您的朋友(或者我们正在等待您的下一个问题,在这里或在 unix SE 上)。
| 归档时间: |
|
| 查看次数: |
2448 次 |
| 最近记录: |