- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的物理内存是 4G,我使用的是 32 位的 Android x86,启用了 HIGHMEM4G。我想尽可能地扩大 vmalloc() 空间。
正如我所尝试的,如果改为2G/2G VMsplit并使VMALLOC_RESERVED更大,vmalloc()空间有望达到1G。但是如果我想获得更大的 vmalloc(),例如2G,可以吗?
Vmalloc() 从 ZONE_HIGHMEM 和 ZONE_NORMAL 分配。如果我有足够的物理内存,ZONE_HIGHMEM 就足够大了。使 vmalloc() 超过 2G 有帮助吗?或者vmalloc()受其虚拟空间的限制,那么如果内核虚拟空间一共是2G,vmalloc()绝对不能大于?
最佳答案
您可以接近 2G(在 2G/2G 拆分上),但是当您这样做时,您的正常区域会缩小。
大多数内核分配都是从正常区域完成的,因此您会开始看到那里的短缺,从而导致严重的问题。
将 VMALLOC_RESERVE 从 1G 增加到 2G 通常是一个糟糕的交易。例如。当从 1G 移动到 1.5G 时,您获得了 50% 以上的 vmalloc,但您的正常区域缩小了一半。当您接近 2G 时,权衡会变得更糟。
我最好的建议是更改您的代码,不要使用太多 vmalloc
。
您可以改用 kmalloc
和 __get_free_pages
。
或者您可以考虑为什么实际上需要这么多内核内存。
关于android - 32 位 x86 中的 VMALLOC 空间有多大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10625674/
我想分配虚拟连续的范围内存,以便在访问数据时可以使用局部性属性(空间局部性),同时考虑到更好的性能。我在下一页发现我需要使用 vmalloc 来更好地访问内存位置(如果我错了并且必须使用 kmallo
我看到 Linux 内核使用 vmalloc 为 fdtable 分配内存,当它大于某个阈值时。我想知道这种情况何时发生,并有一些更明确的信息。 static void *alloc_fdmem(si
我正在尝试了解 Linux 中的内存管理。在 vmalloc 的情况下,我发现了这个 Addresses returned cannot be translated into physical one
我正在尝试使用 vmalloc() 为内核模块分配大内存。我无法在具有 64GB 内存的 64 位 Linux (3.10.0-514.2.2.el7.x86_64) 上分配超过 2GB 的内存。 这
我正在开发一个 LKM,并且在分配它之后将一个 8192 字节的 vmalloc 区域归零。我知道我可以使用 vzalloc(),但它让我感到困惑,为什么我这样做: pmem = vmalloc(81
我四处搜索,发现大多数人都提倡使用 kmalloc,因为您可以保证获得连续的物理内存块。但是,如果找不到您想要的连续物理 block ,似乎 kmalloc 也会失败。 拥有连续的内存块有什么好处?具
我认为 kmalloc() 在内核中分配连续的物理页,因为虚拟内存空间直接映射到物理内存空间,只需添加一个偏移量即可。 但是,我还是不明白为什么它比vmalloc()效率更高。它仍然需要通过页表(内核
我正在向 Linux 内核 6.22 添加系统调用。 #include #incldue #include #include #include #include asmlinkage lo
我们的一些 Linux 机器上的 iptables 一直存在问题,似乎加载的规则数量过少导致 vmalloc 错误(大小为 3506176 的 vmap 分配失败:使用 vmalloc= 增加大小。)
我正在研究 Linux 中的堆栈保护。我发现 Linux 内核 VMAP_STACK 配置参数使用保护页面机制以及 vmalloc() 来提供堆栈保护。 我正在尝试找到一种方法来检查此保护页在 Lin
我的物理内存是 4G,我使用的是 32 位的 Android x86,启用了 HIGHMEM4G。我想尽可能地扩大 vmalloc() 空间。 正如我所尝试的,如果改为2G/2G VMsplit并使V
Hi all, 我目前正在调试设备驱动程序,但遇到了内核崩溃。检查回溯或错误日志后,问题似乎出在 kmalloc 上。我在想也许我可以用其他分配函数来改变 kmalloc。他们有什么区别? 这是错误日
我正在研究 PCIe/DMA 驱动程序。 DMA 目标内存不在用户空间中分配,而是通过 vmalloc 或 kmalloc 分配。我见过很多使用 get_user_pages_fast 获取结构页面信
在32位x86平台上,如果vmalloc()可以从ZONE_NORMAL或ZONE_HIGHMEM分配内存,是否意味着即使我扩大ZONE_HIGHMEM,vmalloc()实际可以使用的总范围不变?我
为什么在VMALLOC_START~VMALLOC_END发生page fault时do_translation_fault不填充Page table entry而只填充PG, PUD和PMD? ar
我是一名优秀的程序员,十分优秀!