如何创建 100M 字节缓冲区

2023-12-04

我正在测试 Linux 上接口的吞吐量。我正在使用 DMA 进行数据传输。 DMA 需要连续的内存位置。但 kmalloc 无法分配超过 1MB 的空间。有没有其他方法可以创建高达 100M 字节的大缓冲区位置?


我认为 kmalloc 无法分配超过 128kB,你是如何让它分配 1MB 的?

不管怎样,假设您正在新启动的系统上工作,您最多可以保留 2048 个连续页面。页面通常为 4k,因此这就是 8MB。

_get_free_pages(_GFP_DMA, get_order(2048));

但是,如果您需要更多内存,则应该在启动时进行分配。 如果您正在编写驱动程序,则可以通过以下方式实现alloc_bootmem_*功能。 如果你正在写一个模块,你必须通过mem=给你的内核参数并稍后使用ioremap.

例如,如果你有2GB,你可以通过mem=1GB禁止内核使用上面的1GB,稍后调用ioremap(0x40000000, 0x40000000)只为您提供最高 1GB 的访问权限。

但你知道,你应该将巨大的缓冲区分成许多小的缓冲区,这会更容易,而且更像现实生活中的应用程序。

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

如何创建 100M 字节缓冲区 的相关文章

  • 使用Linux虚拟鼠标驱动

    我正在尝试实施一个虚拟鼠标驱动程序根据基本 Linux 设备驱动程序书 有一个用户空间应用程序 它生成坐标以及内核模块 See 虚拟鼠标驱动程序和用户空间应用程序代码 http www embeddedlinux org cn Essent
  • vm.dirty_ratio 和 vm.dirty_background_ratio 之间的区别?

    我目前正在试验中找到的内核参数 proc sys vm 尤其dirty ratio and dirty background ratio 内核文档对两者都有以下解释 脏背景比例 包含 以包含空闲页面的总可用内存的百分比表示 和可回收页 后台
  • 是否可以将 CFLAGS 设置为 Linux 内核模块 Makefile?

    例如 常见设备模块的Makefile obj m jc o default MAKE C lib modules shell uname r build M shell pwd modules clean MAKE C lib module
  • 尝试映射大页面 (1GB) 时 mmap 失败

    我做了什么 使用 root 启用大页 我的系统支持 1MB 大页 echo 20 gt proc sys vm nr hugepages 将大页文件系统挂载到 mnt hugepages mount t hugetlbfs nodev mn
  • Linux 中热插拔设备时检测设备是否存在

    我正在运行 SPIcode http lxr free electrons com source drivers spi spi omap2 mcspi c在熊猫板上 我想知道其中的哪个功能code http lxr free electr
  • 在Linux中断上下文中运行用户线程

    我正在编写一些定制的应用程序 并允许更改 Linux 内核中的中断处理程序代码 我有一个用户线程正在等待中断发生 如果发生中断 那么我要做的第一件事就是执行该用户线程 有什么办法让它发挥作用吗 Thanks 创建一个字符设备 这就是内核所做
  • 为什么内核需要虚拟寻址?

    在Linux中 每个进程都有其虚拟地址空间 例如 32位系统为4GB 其中3GB为进程保留 1GB为内核保留 这种虚拟寻址机制有助于隔离每个进程的地址空间 对于流程来说这是可以理解的 因为有很多流程 但既然我们只有 1 个内核 那么为什么我
  • 这些工作队列标志意味着什么?

    在研究工作队列时 我遇到了内核中定义的工作队列标志和常量 我有以下我无法理解的疑问 这里的排水和救援到底是什么意思 WQ DRAINING 1 lt lt 6 internal workqueue is draining WQ RESCUE
  • 在 4.x 内核上的 64 位内存中查找系统调用表

    我正在尝试编写一个简单的内核模块来查找 Linux 中的 sys call table 但遇到了一些麻烦 我在这里找到了 32 位 Linux 的基本指南 https memset wordpress com 2011 03 18 sysc
  • C 标准库函数与系统调用。哪个是“open()”?

    I know fopen 在C标准库中 所以我绝对可以调用fopen C 程序中的函数 我感到困惑的是为什么我可以打电话给open 功能也一样 open 应该是系统调用 所以它不是标准库中的C函数 因为我能够成功地调用open 函数 我调用
  • 多线程进程的线程ID可以与另一个正在运行的进程的进程ID相同吗?

    我正在尝试找到一种方法来唯一标识多进程环境中的线程 我有一个服务器 它跟踪连接到它的不同进程 其中一些是多线程的 一些不是 为了识别多线程连接中的线程 我使用线程 ID 作为唯一标识符 在任何给定时间最多有 1 个多线程进程连接 我的问题是
  • /proc/kmsg 和 dmsg 有什么区别?

    我们通常这样做cat proc kmsg or dmesg从用户空间查看内核日志 我明白了dmesg是一个循环缓冲区 它从kmsg 但是kmsg也不是循环缓冲区 它们之间有什么区别和联系呢 宽松地说 dmesg 是一个转储 proc kms
  • 未找到 DEADLINE 调度策略

    我想在 C 中实现 DEADLINE 调度策略 我知道该功能已实现Linux 3 14 10我正在使用 Ubuntu 14 04Linux 3 17 0 031700 lowlatency 201410060605 SMP PREEMPT这
  • 已编译 LKM 的互换性

    是否可以使用可加载内核模块 编译为3 0 8 mod unload ARMv5 我自制的内核 在具有版本的内核中3 0 31 gd5a18e0 SMP preempt mod unload ARMv7 安卓股票内核 该模块本身几乎不包含任何
  • Linux CFS 调度程序代码在哪里?

    我有3 13版本的完整linux源代码 我试图找到 CFS 调度程序的源代码 根据流行书籍 它应该驻留在 kernel sched c 中作为基本调度程序代码 而 kernel sched fair c 专门针对 CFS 代码 我刚刚在 3
  • linux新手关于嵌入式linux设备驱动的问题

    最近在研究linux驱动 正如我读过的那些文章所说 设备驱动程序模块很可能会根据内核的需要自动加载 因此我想知道内核如何确定为特定设备 声卡 I2C spi 设备 等 我也无法彻底想象内核如何在启动时检测每个硬件设备 与嵌入式linux相关
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 使用 MAX_ORDER / 包含 mmzone.h

    根据https www kernel org doc Documentation networking packet mmap txt https www kernel org doc Documentation networking pa
  • Linux 内核模块中的文件 I/O

    我正在编写一个需要打开和读取文件的 Linux 内核模块 实现这一目标的最佳方法是什么 我能问一下你为什么要打开文件吗 我喜欢关注Linux开发 出于好奇 我不是内核开发人员 我是做Java的 而且我以前看过关于这个问题的讨论 我找到了一个
  • 如何在内核内部使用性能计数器?

    我想访问内核内部的性能计数器 我发现了很多在用户空间中使用性能计数器的方法 但是你能告诉我一些在内核空间中使用这些计数器的方法吗 Please 不指定工具名称 我想写自己的代码 最好是内核模块 我使用的是内核为 3 18 1 的 Ubunt

随机推荐

  • 从数组创建对象树

    我想从数组中创建一个对象树 这里向我提供了一个很好的解决方案 我发现了 reduce 方法 Javascript 使用 object create 从字符串构建一棵树实际上 我的需求有点不同 而且我无法适应提供的代码 所以我回到这里寻求帮助
  • 32位pyodbc读取64位访问(accdb)

    我在 Windows 8 1 64 位机器上运行 python 2 7 32 位 我有 Access 2013 和一个 accdb 文件 我试图从 python 和 pyodbc 访问该文件 我可以在 64 位 ODBC 管理器中创建 64
  • gnuplot 无法通过 ssh 命令工作

    所以我有一个 csv 还有一个 plt 文件 我跑gnuplot plt file plt一个png就诞生了 但如果我跑ssh sameuser samemachine gnuplot plt file plt 我收到 pngcario 错
  • ASP.NET Web API获取子列表(分层资源)

    我想使用 ASP NET Web Api 实现以下剩余架构 http mydomain api students http mydomain api students s123 http mydomain api students s123
  • 页面加载时显示 Firefox WebExtension 页面操作

    我一直在尝试通过阅读以下文档来了解如何使用 WebExtension 页面操作 https developer mozilla org en US Add ons WebExtensions manifest json page actio
  • Java 打包/构建 Jar 文件具体常用技术

    我浏览了该网站的所有常见帖子 但我的问题略有不同 打包具有许多其他 jar 文件作为依赖项的简单 Java 应用程序的最佳实践是什么 例如 我有 foo java 其中包含 main 以及从 foo java 访问的 foo1 java f
  • 取矩阵 r 中行的平均值

    我有以下深度和温度数据矩阵 855 行 2 列 并且想取每列中每 3 行的平均值 例如 1 6 7 18 91 2 5 4 18 91 3 4 0 18 59 4 6 7 20 37 5 6 7 20 05 6 2 7 20 21 7 4
  • PYQT:如何捕获python解释器的输出并将其显示在QEditText中?

    参考帖子here 有人可以给我详细解释如何将 print 语句的输出附加到 PYQT 中的 QEditext 我尝试了上面给出的代码 但它不完整 我得到 TypeError connect slot argument should be a
  • PHP 和 MySQL 错误:类 mysqli_result 的对象无法转换为字符串 [重复]

    这个问题在这里已经有答案了 我收到错误 mysqli result 类的对象无法转换为字符串 Code
  • 强命名会导致 C# 中的对象序列化出现问题吗?

    我序列化一些配置对象并将结果字节存储在数据库中 new BinaryFormatter Serialize memoryStream instance Convert ToBase64String memoryStream ToArray
  • 像 facebook 一样从 Javascript 更改 URL

    我目前正在开发一个面向 AJAX 的 Web 应用程序 我一直在寻找使用浏览器 URL 复制当前 AJAX 状态 或应用程序状态 的不同方法 因此刷新和后退按钮也可以工作 在过去的几周里 我看到了涉及使用哈希 和不同 JS 框架的不同方法
  • 如何在现有表单中显示 FSharp.Charting 图表?

    我不明白如何创建图表控件并将图表放置在现有表单中 我在网上找到的所有示例都以新表单显示图表 但我想将图表添加到我现有的表单之一 我在想这样的事情 let form new Form Text My form let lbl new Labe
  • R 函数识别不匹配的行

    我正在尝试比较 2 个 data frames V1 代表我的 CRM V2 代表我想要发送的潜在客户 V1 大约有 8k 个元素 V2 大约有 25k 个元素 我需要将 V2 中的每一行与 V1 中的每一行进行比较 丢弃 V1 中存在 V
  • 如何在.Net Framework中将方法注入到自动属性中

    我有一些具有许多属性的 Foo 类 public class Foo public int Property1 get set public int Property2 get set public int Property3 get se
  • 在 Redshift 中拆分行

    在我的表中 数据如下 col1 col2 col3 col4 A1 A2 A3 4 B1 B2 B3 3 C1 C2 C3 1 我需要如下输出 col1 col2 col3 col4 A1 A2 A3 1 A1 A2 A3 2 A1 A2
  • 如何在更多线程上运行 boost asio 解析器服务?

    我在 SNMPV2 实现中使用 boost asio ip udp resolver 来确定主机是否可达 using Resolver boost asio ip udp resolver Resolver resolver ioServi
  • 如何在 Perl 源代码中嵌入中文字符?

    在我的脚本中 我需要将一些汉字 qw 到字符串中 当我运行脚本时 perl 指出脚本中存在无法识别的字符 虽然我知道它一定与编码相关的东西有关 但我不知道如何解决它 所以向你寻求帮助 提前致谢 在 Perl 源代码中嵌入文字字符串很容易 使
  • 如何防止应用程序在完成任务之前关闭?

    我用 C 制作了一个 Windows 控制台应用程序 可以进行一些计算 应用程序窗口对用户来说是不可见的 应用程序作为任务运行 这些计算结果保存到数据库中 不幸的是 如果用户在保存数据期间关闭此应用程序 通过关闭计算机 并且并非所有数据都会
  • 使用 Spark 并行缓存和查询数据集

    我有一个要求 我想缓存一个数据集 然后通过在该数据集上并行触发 N 个查询来计算一些指标 并且所有这些查询都会计算类似的指标 只是过滤器会发生变化 并且我想在其中运行这些查询并行 因为响应时间至关重要 并且我想要缓存的数据集大小始终小于 G
  • 如何创建 100M 字节缓冲区

    我正在测试 Linux 上接口的吞吐量 我正在使用 DMA 进行数据传输 DMA 需要连续的内存位置 但 kmalloc 无法分配超过 1MB 的空间 有没有其他方法可以创建高达 100M 字节的大缓冲区位置 我认为 kmalloc 无法分