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

2023-12-31

为了与正在构建的 PCI 设备进行一些交互,我们希望创建主板可以访问的大块连续内存。就目前情况而言,我能够分配的最大内存大小为 4 MB。我想知道是否有任何方法可以创建更大的区域。

我知道我可以使用启动选项mem=这样做,但出于 numa 的原因,我宁愿不走这条路。另一方面,如果有人知道一种方法来做到这一点,但将其分布在 numa 节点上,那就没问题了。

正如我最初所说,目前我的内存限制为 4 MB。目前的分配是由__alloc_pages http://lxr.linux.no/linux+v2.6.38/include/linux/gfp.h#L302,其限制为MAX_ORDER http://lxr.linux.no/linux+v2.6.38/include/linux/mmzone.h#L24. MAX_ORDER是一个编译时常量,我还担心编辑它可能会影响其他地方。

Thanks.


如果您可以将 PCI 设备驱动程序编译到内核中(即不作为模块链接),则可以尝试在启动时分配内存。这应该可以让您绕过动态分配的上限。参考Linux 设备驱动程序,编辑。 3 通道。 8 http://www.makelinux.net/ldd3/chp-8-sect-6了解详情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Linux 内核中分配超过 4 MB 的固定连续内存 的相关文章

  • Linux、ARM:为什么仅当启动时存在 I2C GPIO 扩展器时才创建 gpiochip

    在 imx6sx 硬件平台 NXP 嵌入式 ARM 上使用 Linux 3 14 52 问题是设备树中指定的 PCF8575 I2C GPIO 扩展器不会实例化为 sys class gpio 结构中的设备 除非它们在内核启动期间存在 这些
  • 了解 U-Boot 内存占用

    我不明白加载 U Boot 时 RAM 中发生了什么 我正在开发 Xilinx Zynq ZC702 评估套件 并尝试使用 U Boot 在其上加载 Linux 内核 于是我使用Xilinx工具Vivado和SDK生成了一个BOOT bin
  • 当结构体包含字符串时为其分配内存

    假设如果我有一个这样的结构 struct node note that i have changed the struct code according to my convenience char lastname char employ
  • 哪个更快:堆栈分配或堆分配

    这个问题听起来可能相当简单 但这是我与另一位合作的开发人员进行的辩论 我小心翼翼地在可能的地方进行堆栈分配 而不是堆分配它们 他一边跟我说话 一边看着我 并评论说没有必要 因为他们的表现是一样的 我总是有这样的印象 堆栈的增长是恒定的时间
  • iOS AVCaptureVideoDataOutput 消耗太多内存

    我在用AVFoundation使用iPhone相机捕获视频的框架 我的代码 self session AVCaptureSession alloc init self output AVCaptureVideoDataOutput allo
  • 在 python 中将变量设置为“None”是否更节省内存?

    这是一个简单的问题 但由于我没有找到任何答案 我认为答案是否定的 但是 为了确保这一点 我要问 将变量设置为是否会使Python代码更有效None当我们在函数中使用完它们之后 举个例子 def foo fname temp 1 temp 2
  • 64 位大型 malloc

    malloc 失败的原因是什么 尤其是在 64 位中 我的具体问题是尝试在 64 位系统上分配一大块 10GB RAM 该机器有 12GB RAM 和 32GB 交换空间 是的 malloc 是极端的 但是为什么它会成为一个问题呢 这是在带
  • UseCompressedOops JVM 标志有什么作用以及何时应该使用它?

    HotSpot JVM 标志是什么 XX UseCompressedOops我应该做什么以及什么时候使用它 在 64 位 Java 实例上使用它 与不使用它 时 我会看到什么样的性能和内存使用差异 去年大多数 HotSpot JVM 都默认
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • Chrome 内存/垃圾收集问题

    我在使用 Chrome 时遇到内存 垃圾收集问题 我正在开发一个照片上传网站 该网站允许我的客户使用 HTML5 和文件 API 拖放照片进行上传 因此这在 IE 中不起作用 它仅适用于 Chrome 和 FF 我还没有在 Safari O
  • “perf record”或“perf-record”可以对子进程进行采样吗?

    假设我有一个harness二进制文件 它可以根据命令行选项生成不同的基准 我对这些基准测试非常感兴趣 我有3个选择 更改线束二进制文件以生成perf record运行基准测试并进行采样的子进程 just do perf record har
  • Objective-C:int值无故改变

    Objective C 我需要帮助保留 int 的值 无需我的命令 它就在我身上发生变化 最初的问题是 如何声明和保留 int 这在另一篇文章中得到了满足 Objective C 如何声明和保留 int https stackoverflo
  • 树莓派的设备树驱动内核

    我想用设备树驱动的 Linux 内核启动树莓派 有什么特别的事情要做吗 谁能指出为树莓派设置基于设备树的内核启动需要什么 我可能需要有树莓派内核源代码 其中设备驱动程序应与设备树兼容 如果是这样 我在哪里可以找到 Raspberry Pi
  • 为什么内核需要虚拟寻址?

    在Linux中 每个进程都有其虚拟地址空间 例如 32位系统为4GB 其中3GB为进程保留 1GB为内核保留 这种虚拟寻址机制有助于隔离每个进程的地址空间 对于流程来说这是可以理解的 因为有很多流程 但既然我们只有 1 个内核 那么为什么我
  • 如何在Windows下调试Python中的访问冲突内存问题?

    您建议使用哪些工具或流程来调试 ctypes 内存问题 为什么可以打印数组的内容但无法复制它 我已将问题范围缩小到以下几行 lots of code valid data as bytes bytearray self output buf
  • Linux内核container_of宏和C90中的通用容器

    是否有可能实施容器的 http lxr linux no linux tools perf util include linux kernel h L18纯C90中的宏 我不确定如何做到这一点 因为内核实现取决于海湾合作委员会黑客 http
  • 是否有 java.lang.String 的内存高效替代品?

    看完之后这篇旧文章 http www javaworld com javaworld javatips jw javatip130 html page 2测量几种对象类型的内存消耗 我惊讶地发现有多少内存String在Java中的使用 le
  • 监控子进程的内存使用情况

    我有一个 Linux 守护进程 它分叉几个子进程并监视它们是否崩溃 根据需要重新启动 如果父进程可以监视子进程的内存使用情况 以检测内存泄漏并在超出一定大小时重新启动子进程 那就太好了 我怎样才能做到这一点 您应该能够从 proc PID
  • PHP - 调整 PNG 图像大小时出现内存错误

    我有一个脚本可以根据上传的图像创建缩略图 它对 jpg 工作正常 但给我一个错误 致命错误 允许的内存大小 67108864 字节已耗尽 尝试分配 26250000 字节 当我上传 png 图像时 脚本是 create thumbnail
  • 一个地址有多少字节? [复制]

    这个问题在这里已经有答案了 在64位机器上 我们知道一个地址是8个字节 然而 我并不完全清楚一个地址中有多少字节的信息 虚拟内存中的每个字节都有一个地址吗 或者内存中的每 64 位都有一个地址 还是取决于架构 如果这取决于架构 那么我应该如

随机推荐