了解缓存中的程序

dad*_*x86 2 swap cache process ram

我目前在 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
Run Code Online (Sandbox Code Playgroud)

我想知道...

有没有办法知道哪些程序/数据是 RAM 缓存的和/或它们来自哪个进程?

非常感谢您提前。

编辑:要了解 SWAP 中的程序/数据,请遵循 @xubu-tur 提供的链接。

ado*_*uas 5

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 的内存中?