首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Linux内核中分配超过4 MB的固定连续内存

在Linux内核中分配超过4 MB的固定连续内存
EN

Stack Overflow用户
提问于 2011-05-10 01:02:01
回答 2查看 8.8K关注 0票数 20

为了与正在构建的PCI设备进行一些交互,我们希望创建电路板可以访问的大片连续内存。现在,我能分配的最大内存是4兆字节。我想知道是否有任何方法可以创建更大的区域。

我知道我可以使用引导选项mem=来做这件事,但是出于numa的原因,我不想走这条路。另一方面,如果有人知道这样做的方法,但将其分发到numa节点上,那就好了。

正如我最初所说的,我目前被限制在4兆字节。分配目前是由__alloc_pages完成的,这受到MAX_ORDER的限制。MAX_ORDER是一个编译时常量,我也担心编辑它可能会对其他地方产生影响。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-10 03:43:44

如果您可以将PCI设备驱动程序编译到内核中(即,不作为模块链接),则可以尝试在引导时分配内存。这应该可以让您绕过动态分配的上限。详情请参考Linux Device Drivers, ed. 3 ch. 8

票数 9
EN

Stack Overflow用户

发布于 2012-07-14 13:30:28

CMA(连续内存分配器)是你需要的最好的解决方案。你只需要发布到最新的内核。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5940101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档