首页 > 解决方案 > 如何处理 linux 页面缓存(标签查找)返回的页面少于所要求的页面?

问题描述

这是从文件系统的角度来看的。

文件系统页面大小为 8K(即块大小的两倍,4k)。因此,当我弄脏页面并进行刷新时,我会不惜一切代价
确保传递给的范围是 8k 对齐的。pvec_lookup_tag()页面缓存应该给我从 8k 对齐地址开始的页面(即偶数索引)

所以,归结为问题。

我已经弄脏了页面,然后我向页面缓存询问某些指定范围和映射中的 14 个脏页。
但是,令人惊讶的是,它只给了我一页奇怪的对齐。
简而言之,我得到的只是我最初打算的 8k 页面的第二个 4k 页面。
另外,我通过故障转储检查了映射。我问过的所有 14 页都在那里,而且还标有脏页。

只需重试相同的查找即可获得正确的页面。但我觉得这里一定有更好的解决方案。
在将页面标记为脏页面和尝试导致此问题的标签查找之间是否存在一些奇怪的窗口?

(我在 Linux Kernel v3.10.x 上)


好的,让我用更简单的术语重新表述这个问题。

linux中的标签查找是否有可能给我的页面比我要求的少?
如果是,如何处理此类情况?

标签: linuxlinux-kernelflushpage-caching

解决方案


推荐阅读