我如何知道是否正在从磁盘缓存中读取文件?

我如何知道是否正在从磁盘缓存中读取文件?

我有两个进程在两个除了内存大小之外完全相同的机器上执行情况不同。一个机器有 32GB,另一个有 16GB,进程在前者上执行情况明显更好。进程本身不会占用太多内存,但它确实读取了许多大文件。我怀疑它在 32GB 的机器上执行情况更好,因为 Linux 能够缓存更多文件,因为内存更多。但是,我不确定如何证明这一点。我如何判断文件是从缓存中读取的还是从磁盘中读取的?当然,我可以简单地计算读取时间,看看它们是否表现更好,但我希望看到为什么他们的表现更好。

答案1

使用iostatsar检查正在运行的系统上的磁盘 I/O 统计信息。假设 I/O 请求量相同,则执行更多缓存的计算机将显示较低的磁盘 I/O 速率。

答案2

我可以使用 mincore() 函数来做到这一点

相关内容