我正在尝试使用内核3.4跟踪Android 5.1.1中的页面缓存中的一些脏页面。我的设备是带有处理器Qualcomm Snapdragon S4 Pro APQ8064的Nexus 7 2013。
我知道一个进程可以(1)从其缓冲区写入页面缓存,或者(2)它可以使用Mmap将页面缓存直接映射到其虚拟地址空间。 在(1)中,将调用某些函数,如generic_perform_write。但在(2)中,进程是否使用memcpy()写入页面缓存?
此外,内核源代码中有很多“memcpy”的定义,实在令人困惑。如何跟踪进程何时使用Mmap写入页面缓存而不是使用其缓冲区。如何对内核源代码中定义的许多memcpy进行分类?
还有一个问题,当我查看写回功能时,我发现一些写回磁盘的文件,其inode编号为0.我也对此感到困惑。我认为inode号应该从1开始。 谢谢你的帮助。
答案 0 :(得分:0)
最好的方法是进行性能分析,而memcpy完全是针对特定于体系结构的。 对于您的问题,您可以检查mm / mmap.c -----> mmap_pgoff API。