![监控页面缓存/内存映射文件访问](https://linux22.com/image/134610/%E7%9B%91%E6%8E%A7%E9%A1%B5%E9%9D%A2%E7%BC%93%E5%AD%98%2F%E5%86%85%E5%AD%98%E6%98%A0%E5%B0%84%E6%96%87%E4%BB%B6%E8%AE%BF%E9%97%AE.png)
我有一个使用多个内存映射文件的应用程序。如果我检查主要页面错误数量(使用/proc/<pid>/stat
),它们就会飙升。
我想知道是否可以以某种方式监视哪些内存映射文件受到进程的页面交换进出的影响?
至少我想看看进程访问了哪些映射文件。我尝试使用 strace,但发现没有读取,因为我猜直接访问内存不需要系统调用。
我也很高兴知道它们发生的进程空间中的虚拟地址,所以至少我可以将它们手动映射到 pmap 输出中的文件
答案1
perf trace -F maj
http://man7.org/linux/man-pages/man1/perf-trace.1.html
要连接到现有进程,请使用-p $PID
.如果您不想显示系统调用,--no-syscalls
也可以忽略。系统调用参数不会以与 相同的详细程度显示strace
。