gpt4 book ai didi

android - 32 位 x86 中的 VMALLOC 空间有多大?

转载 作者:行者123 更新时间:2023-11-29 02:04:49 25 4
gpt4 key购买 nike

我的物理内存是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com