我现在的 RAM 和 SWAP 情况如下:
$ free -h
total used free shared buffers cached
Mem: 7,7G 7,5G 159M 100M 75M 5,9G
-/+ buffers/cache: 1,5G 6,1G
Swap: 7,9G 408M 7,5G
我很想知道...
有没有办法知道哪些程序/数据是 RAM 缓存的和/或它们来自哪个进程?
提前非常感谢您。
编辑:要了解 SWAP 中的程序/数据,请点击@xubu-tur 提供的链接。
答案1
LinuxQuestions.org 上也提出了同样的问题:http://www.linuxquestions.org/questions/linux-general-1/command-to-check-process-taking-high-cached-memory-927756/
答案的重要部分是:
缓存本身与进程无关,它与系统的 I/O 相关。
Linux 会尝试缓存尽可能多的 I/O 数据。如果将来需要读取该数据,则该数据已存储在存储中。缓存是一种避免执行实际 I/O 操作的机制,因为与仅从内存中检索相比,对磁盘的实际 I/O 非常慢。因此,缓存数量高通常是好事,无需担心。
因此,您无法知道哪些程序或进程在缓存中,因为那里没有这样的项目。
您可以在那里找到缓存的 I/O,并且正如 @bseiblod 在他的评论中提到的那样,您可以在这里找到解决方案:如何判断一个文件是否被缓存在 Linux 内存中?