分配大(32mb)连续区域

2023-12-27

是否有可能在运行时从内核代码分配大的(即 32mb)物理连续的内存区域(即不使用 bootmem)?从我的实验来看,无论我使用什么 GFP 标志,似乎都不可能成功获得超过 4mb 的块。根据我读过的文档, GFP_NOFAIL 应该让 kmalloc 只需等待释放请求的数量,但据我所知,如果您请求的数量超过可用数量,它只会使请求无限期挂起 -它似乎没有主动尝试释放内存来满足请求(即 kswapd 似乎没有运行)。有没有某种方法可以告诉内核积极地开始交换内容以释放请求的分配?

编辑:所以我从 Eugene 的回复中看到,不可能从单个 kmalloc 获得 32mb 区域......但是是否有可能以更黑客的方式完成它?就像确定最大的可用连续区域,然后手动迁移/交换其两侧的数据一样?

或者像这样的事情怎么样:

1) Grab a bunch of 4mb chunks until you're out of memory.
2) Check them all to see if any of them happen to be contiguous, if so,
   combine them.
3) kfree the rest
4) goto 1)

如果有足够的时间运行,这可能有效吗?


您可能想看看连续内存分配器补丁 https://lkml.org/lkml/2011/7/20/45。从绿网文章 http://lwn.net/Articles/396702/,这些补丁正是您所需要的。

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

分配大(32mb)连续区域 的相关文章

  • 在 strace 中捕获 vDSO

    我想知道是否有一种方法可以捕获 换句话说观察 vDSO 调用 例如gettimeofday in strace 另外 有没有一种方法可以在不加载的情况下执行二进制文件linux vdso so 1 标志或环境变量 最后 如果我编写一个程序来
  • 环形缓冲区和 DMA

    我试图了解从数据包到达网卡到目标应用程序收到数据包之间发生的所有事情 假设 缓冲区足够大 可以容纳整个数据包 我知道情况并非总是如此 但我不想介绍太多技术细节 一种选择是 1 Packet reaches the NIC 2 Interru
  • 尝试将 GCC 特定的 asm goto 移植到 Clang

    我一直在尝试将一些 GNU 扩展转换为实际的标准 C 这样它就可以在 clang 上运行 知道标准 C 而不是 GNU 扩展 我有点不知所措 asm goto 1 STATIC KEY INITIAL NOP pushsection jum
  • 如何在Linux内核中启用CONFIG_PREEMPT选项?

    我是 Linux 内核编程的新手 尝试在 x86 64 上使用旧内核 Linux 2 6 32 我想启用其中的 CONFIG PREEMPT 选项 但找不到有关如何执行此操作的信息 我可以使用我的首选选项编译新内核 但不知道在这种情况下我需
  • USB 端口速度 Linux [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何以编程方式确定运行 Linux 内核的嵌入式设备中的 USB 端口速度 你可以阅读 sys bus usb devices usb s
  • 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
  • 从内核空间中的块设备读取

    我正在编写一个内核模块 需要从现有的块设备执行读取 dev 东西 有谁知道有任何其他模块可以执行这些操作 我可以用作参考吗 欢迎任何指点 Linux 2 6 30 如果你真的绝对必须那么使用filp open filp close vfs
  • Xenomai 中的周期性线程实时失败

    我正在创建一个周期性线程 它在模拟输出上输出方波信号 我正在使用 Xenomai API 中的 Posix Skin 和 Analogy 我使用示波器测试了代码的实时性能 并查看了方波信号 频率为 1kHz 的延迟 我应该实现 250us
  • Linux、ARM:为什么仅当启动时存在 I2C GPIO 扩展器时才创建 gpiochip

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

    在linux x86 中分页 每个进程都有它自己的页面目录 页表遍历从 CR3 指向的页目录开始 每个进程共享内核页目录内容 假设三个句子是正确的 假设某个进程进入内核 模式并更新他的内核页目录内容 地址映射 访问 权利等 问题 由于内核地
  • 了解 U-Boot 内存占用

    我不明白加载 U Boot 时 RAM 中发生了什么 我正在开发 Xilinx Zynq ZC702 评估套件 并尝试使用 U Boot 在其上加载 Linux 内核 于是我使用Xilinx工具Vivado和SDK生成了一个BOOT bin
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • 内存调试:如何获取 Linux 用户空间/内核空间中的锁定页面信息

    有什么方法可以获取Linux用户空间 内核空间中的锁定页面 虚拟内存页面 信息 我想了解详细信息 例如 谁锁定了页面 有多少页被锁定 进程名称 谁锁定了页面 还让我了解内核空间和用户空间的内存调试技术 对于内存中的每个页面 都会为其分配标志
  • Linux中的CONFIG_OF是什么?

    我看到它在很多地方被广泛使用 但不明白在什么场景下我需要使用它 What is 配置 OF OF 的全名是什么 打开固件 这是很久以前发明的 当时苹果公司正在生产基于 PowerPC CPU 的笔记本电脑 而 Sun Microsystem
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 读取文件而不从操作系统页面缓存中逐出

    这主要适用于 Linux 或者理想情况下适用于任何 POSIX 系统 当我阅读以下页面时 我正在寻找一种读取大量文件 其中任何一个文件本身可能高达 1GB 的方法 具有以下特征 如果相关磁盘页面已在文件系统缓存中 则使用该页面 如果相关页面
  • 在ubuntu内核中启用cgroup cpu实时运行时

    我正在尝试在 Ubuntu 18 04 上运行的 docker 容器中使用实时调度 我已经按照给定的方法安装了实时内核here https stackoverflow com questions 51669724 install rt li
  • 我应该如何以非 root 身份读取 Linux 上的 Intel PCI 非核心性能计数器?

    我想要一个库 允许对 Linux 可执行文件的关键部分进行 自我分析 就像人们可以使用一个部分计时一样获取当日时间 http linux die net man 2 gettimeofday or RDTSC http www strchr

随机推荐

  • SQL代理作业:确定它已经运行了多长时间

    场景 某些 SQL 代理作业计划全天每隔几分钟运行一次 在某些情况下 它会错过下一个时间表 因为它仍在按照上一个时间表运行 有时 工作可能会 挂起 这不会产生失败 因为作业尚未停止 发生这种情况时 可以手动停止该作业 并在下次运行时正常工作
  • React 如何在调用 onSubmit 时绑定到组件

    在我的组件中 我尝试调用组件的handleChange 和handleSubmit 函数 如果我像这样渲染表格示例 https facebook github io react docs forms html
  • JQuery如何从href标签中提取值?

    我是 JQuery 新手 如果我有以下标签 最好的 JQuery 方法是什么 从 href 中提取 page 的值 a href Search Advanced page 2 2 a Malcolm 我首先想到的是单行正则表达式 var p
  • 如何为来自同一链接的页面添加规范标签?

    我正在使用 symfony 1 0 6 在我的网站中 我有两个 URL http newe4s com news articles view 033 job news and information and http newe4s com
  • 从 DropdownButtonFormField 中删除下划线

    如何从 DropdownButtonFormField 中删除下划线 检查下面的照片 我尝试了 InputDecortaion 的各种选项组合 但找不到任何方法 SizedBox width 100 0 child DropdownButt
  • get/set 已被弃用,取而代之的是 config 命令

    在命令行中使用 angular cli 我执行了 ng set defaults styleExt styl 将默认样式设置为 Stylus 我得到了以下响应 get set 已被弃用 取而代之的是 config 命令 我想更改现有项目的样
  • Prolog递归过程解释

    如果可能的话 我希望有人解释这个过程 来自 立即学习序言 一书 它需要两个数字并将它们加在一起 add 0 Y Y add s X Y s Z add X Y Z 原则上我明白 但我有一些问题 假设我发出查询 add s s 0 s 0 R
  • 寻找一种有效的方法或算法来检查文件是否属于某个文件夹路径列表中的某个项目

    我有一个文件夹路径列表 此列表中可能有许多 数十个甚至数百个文件夹路径 例如 C Program Files 7 Zip many directories under C Program Files C ProgramData Adobe
  • 通过 microsoft webtest 上传文件

    我有一个 webtest 我打算用它来加载测试将文件上传到网站 我正在使用 Visual Studio 中内置的 WebTest 框架 目的是从 Azure 运行更大规模的测试 我创建了一个新的网络测试并记录了步骤 包括文件上传 这一切都记
  • 在哪里可以找到特定 Git 提交的快照?

    我了解到 Git 为每次提交保留一个快照 快照本质上是copies of changed文件和一些references to unchanged files 所有Git相关数据都存储在 git存储库目录内的目录 duong2179 mbpr
  • weakhashmap是如何工作的? [复制]

    这个问题在这里已经有答案了 就像weakhashmap如何理解对其键之一的引用现在已经过时一样 尤其是如果键是池化的字符串的话 您不能将字符串文字与 WeakHashMap 一起使用 当然可以 但这样做没有意义 String myKey s
  • 如何在 Swift 中的泛型扩展中使用带有可选类方法的协议?

    我正在尝试使用类方法对现有类进行扩展 例如 objc public protocol MyProtocol optional class func foo gt Int 我在扩展中使用这个协议 通用如下 extension MyClass
  • 如果会话超时,MVC 中的 jquery ajax 调用后如何重定向到新页面?

    1 我有一个调用操作的Ajax链接 该操作返回一个视图 该视图在特定的Div中打开 将其视为使用相应视图更新div的菜单 2 如果会话超时 则返回我的登录视图 因此 如果我单击链接并且会话超时 登录视图将在 div 中打开 而不是在整个页面
  • 每天执行一次查询

    基本上我有一个MySQL数据库 其中有一个表存储我网站用户的请求 我想自动执行一个查询 删除所有已完成的请求 已完成意味着该列Status 3 根据该列 超过 180 天ArchivingDate My Requests table Req
  • 六个月内保留的参与者百分比

    我是一名学校老师 对 MS SQL Server 非常陌生 每个人都建议尝试一下这个网站 开始 我正在尝试编写查询来测试参与学术项目的不同类型的结果衡量标准 我想尝试几种不同的方法来计算这个结果测量 我试图计算的结果是 在该计划的六个月内保
  • 如何在不同的计算机上克隆 RStudio 环境

    我最近一直在加快使用 R 的速度 并且想知道最有效的方法是将 RStudio 环境 尤其是软件包安装 从一台计算机克隆到另一台计算机 我希望能够从台式机切换到笔记本电脑 但我在工作时经常向台式机添加软件包 并且希望有一种简单的方法来确保在笔
  • Python 中的持久记忆

    我有一个昂贵的函数 它接受并返回少量数据 一些整数和浮点数 我已经memoized http en wikipedia org wiki Memoization这个功能 但我想让备忘录持久化 已经有几个与此相关的线程 但我不确定某些建议方法
  • avformat_open_input 返回值,NaCl 模块上的错误代码

    我正在尝试将 FFmpeg 移植到我的 NaCl 模块中 到目前为止 我的模块链接了 ffmpeg 和 SDL 库 它已经可以播放 YUV 格式的视频 该视频被直接加载到内存中并复制到 YUVOverlay 缓冲区中 这非常简单 现在 我想
  • Excel 转 PDF 无需 Office

    我需要在我正在开发的 Windows 应用程序中生成 PDF 报告 我通过将 xlsx 文件导出为 pdf 来完成此操作 不过 我目前正在为此使用互操作 我需要在不要求用户购买软件的情况下执行此操作 因此不需要 Microsoft Offi
  • 分配大(32mb)连续区域

    是否有可能在运行时从内核代码分配大的 即 32mb 物理连续的内存区域 即不使用 bootmem 从我的实验来看 无论我使用什么 GFP 标志 似乎都不可能成功获得超过 4mb 的块 根据我读过的文档 GFP NOFAIL 应该让 kmal