gpt4 book ai didi

linux-kernel - 在内核模块中分配大页面

转载 作者:行者123 更新时间:2023-12-04 03:56:55 28 4
gpt4 key购买 nike

我正在寻找一种在内核模块中分配大页面(2M 或 1G)的方法(我使用的是内核版本 4.15.0)。

在用户空间,我可以挂载 hugetlbfs文件系统,然后使用 mmap 分配大页面(参见,例如,https://blog.kevinhu.me/2018/07/01/01-Linux-Hugepages/)。在内核空间中是否有类似的方法可以做到这一点?

我知道我可以先在用户空间分配它们,然后使用 get_user_pages 将它们传递给内核,如 Sequential access to hugepages in kernel driver 中所述.但是,我正在寻找一种更直接的方式来分配它们,因为我只需要在内核空间中使用它们。

最佳答案

类似的东西

kmalloc(0x200000, GFP_KERNEL | __GFP_COMP)
应该管用。
如本文所述 LWN article :

A compound page is simply a grouping of two or more physically contiguous pages into a unit that can, in many ways, be treated as a single, larger page. They are most commonly used to create huge pages, used within hugetlbfs or the transparent huge pages subsystem, but they show up in other contexts as well. Compound pages can serve as anonymous memory or be used as buffers within the kernel; they cannot, however, appear in the page cache, which is only prepared to deal with singleton pages.


这假设大页面已配置且可用。

关于linux-kernel - 在内核模块中分配大页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55251790/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com