linux - 如何处理 linux 页面缓存(标签查找)返回的页面少于所要求的页面?
问题描述
这是从文件系统的角度来看的。
文件系统页面大小为 8K(即块大小的两倍,4k)。因此,当我弄脏页面并进行刷新时,我会不惜一切代价
确保传递给的范围是 8k 对齐的。pvec_lookup_tag()
页面缓存应该给我从 8k 对齐地址开始的页面(即偶数索引)
所以,归结为问题。
我已经弄脏了页面,然后我向页面缓存询问某些指定范围和映射中的 14 个脏页。
但是,令人惊讶的是,它只给了我一页奇怪的对齐。
简而言之,我得到的只是我最初打算的 8k 页面的第二个 4k 页面。
另外,我通过故障转储检查了映射。我问过的所有 14 页都在那里,而且还标有脏页。
只需重试相同的查找即可获得正确的页面。但我觉得这里一定有更好的解决方案。
在将页面标记为脏页面和尝试导致此问题的标签查找之间是否存在一些奇怪的窗口?
(我在 Linux Kernel v3.10.x 上)
好的,让我用更简单的术语重新表述这个问题。
linux中的标签查找是否有可能给我的页面比我要求的少?
如果是,如何处理此类情况?
解决方案
推荐阅读
- json - 数组元素上的 sort_by 给出错误 'Cannot index string with string "key"'
- android - 如何使用 koin 在视图模型中注入 Room
- python - 在 Pandas 中转换为字符串时出现错误:“AttributeError:‘str’对象没有属性‘strftime’”
- c++ - std::bind 未绑定到库 `typedef` ed 函数
- javascript - 具有多个值的javascript select2
- ruby-on-rails - 设计令牌身份验证响应不包括手动生成的标头令牌
- raku - Raku 如何将指向 Buf 的指针传递给本地写入调用
- javascript - Bootstrap 按钮下拉菜单不会删除活动类
- arrays - 从数组中随机抓取字符串,用作占位符文本,并等同于快速回答字符串
- rust - Fmt::Display 'Cleaner' 比 Fmt::Debug 怎么样?