确定缓存文件页面的有效方法

时间:2014-09-06 04:47:41

标签: c linux

我想到的问题是在常规文件上有效地进行多次异步随机访问读取,其中读取的顺序无关紧要,但我想尽快开始获取数据。除非我能为每次读取提供一个线程,否则从文件中已经存在于缓存中的部分读取开始是有意义的,并且为其他人发出fadvise个请求,希望他们能够在读取已经缓存的文件时可用。

确定文件的哪些部分已被缓存的一种方法是mmap该文件,然后打开/proc/self/pagemap并在其上使用readv以获取有关映射是否存在的信息对应于文件所需区域的页面。如果整个文件不适合虚拟地址空间,那么这种方法的缺点是它不起作用(或者至少需要多个mmapmunmap步骤)打开和阅读/proc文件的速度往往很慢(但我还没有特别针对pagemap进行测试)。

有没有更直接的方法来获取文件的缓存存在信息,给定fd?也许某种ioctl

0 个答案:

没有答案