关于page_address()的实现的问题

发布于 2024-11-10 13:20:36 字数 390 浏览 4 评论 0原文

在具有 highmem 的 x86 机器上,当内核想要查询物理帧的内核虚拟地址时,它将使用 page_address。它的工作原理取决于是否定义了宏WANT_PAGE_VIRTUAL,该宏决定了struct page中是否添加void *virtual。如果没有void *virtual,内核将使用哈希表page_address_htable来进行转换,这似乎是x86适用的方法。相反,mips 和 m68k 只是采用 void *virtual(我对此不太确定)。

所以我的问题是,为什么 x86 更喜欢哈希表而不是改进的struct page?它带来了哪些好处?

On x86 machines with highmem, when the kernel wants to query the kernel virtual address of a physical frame, it will use page_address. How it works depends on whether the macro WANT_PAGE_VIRTUAL is defined, which decides if void *virtual is added in struct page. If there is no void *virtual, the kernel will use a hash table page_address_htable to do the conversion, and this seems the method x86 applies. On the contrary, mips and m68k just take void *virtual(I'm not very sure for this).

So my question is, why x86 prefers a hash table to a improved struct page? What are the benefits it brings about?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

残疾 2024-11-17 13:20:36

由于需要大量的struct page(每一页一个!),因此在结构中再添加一个单词是非常昂贵的(或者相反,将结构缩小一个单词会带来很多损失)的利益)。在 32 位架构上,WANT_PAGE_VIRTUAL 特别昂贵——没有它,struct page 正好是 32 字节,这意味着它可以很好地打包到缓存行等中。

在 x86 上,哈希查找足够快(因为乘法很快)在 x86 上),这种权衡强烈支持使结构页更小。我想在 m68k 上乘法足够昂贵,将结构页膨胀到 36 字节是值得的。

Since there are a lot of struct page needed (one for every page!) it is very expensive to add even one more word to the structure (or conversely, shrinking the struct by even one word gives a lot of benefit). On 32-bit architectures WANT_PAGE_VIRTUAL is especially expensive -- without it, struct page is exactly 32 bytes, which means it packs nicely into cachelines etc.

On x86 the hash lookup is fast enough (since multiplication is fast on x86) that the tradeoff is strongly in favor of making struct page smaller. I guess on m68k multiplication is expensive enough that bloating struct page to 36 bytes is worth it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文