gpt4 book ai didi

Linux 内核、iptables 和 vmalloc 大小

转载 作者:IT王子 更新时间:2023-10-29 01:02:19 28 4
gpt4 key购买 nike

我们的一些 Linux 机器上的 iptables 一直存在问题,似乎加载的规则数量过少导致 vmalloc 错误(大小为 3506176 的 vmap 分配失败:使用 vmalloc= 增加大小。)出现在dmesg 和任何附加规则停止加载。

经过大量研究,我们将 vmalloc 大小从 128MB 增加到 512MB 并重新启动,这暂时解决了这个问题。64 位内核似乎没有这个问题(?)。我检查了我的 CentOS 6 盒子(64 位),它有 VmallocTotal:34,359,738,367 kB (!)。

所以我的问题是,32 位 PAE 内核是否也能解决这个问题?与跨多个站点更改操作系统相比,更改内核要容易得多...

谢谢, jack

最佳答案

32 位 PAE 内核无法解决这个问题,因为这个问题源于 vmalloc 空间中的分配碎片。在 x86-64 中,vmalloc 空间非常大(比物理 RAM 大小大得多),因此您不会遇到碎片过多而导致分配失败的情况。然而,在 32 位中,vmalloc 空间要小得多——几百 MB。迁移到 PAE 不会使这个虚拟分配空间变大。

如果您想保留 32 位,解决您的问题的方法是修改内核,以便 iptables 从预先分配的 vmalloc 空间进行分配,从而避免其他调用者对 vmalloc 造成的碎片(尽管,不能保证这会完美地解决您的问题,因为它取决于 iptables 如何根据您的操作分配内存的配置文件,这在这个问题的范围内是未知的)。

关于Linux 内核、iptables 和 vmalloc 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8093751/

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