加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux内核,iptables和vmalloc大小

发布时间:2020-12-14 00:34:12 所属栏目:Linux 来源:网络整理
导读:在我们的一些 Linux机器上我们遇到了iptables的问题,似乎被加载的规则的剪切数导致vmalloc错误(大小3506176的vmap分配失败:使用vmalloc =增加大小.)出现在dmesg和任何其他规则停止加载. 经过大量研究后,我们将vmalloc大小从128MB增加到512MB并重新启动,这暂
在我们的一些 Linux机器上我们遇到了iptables的问题,似乎被加载的规则的剪切数导致vmalloc错误(大小3506176的vmap分配失败:使用vmalloc =增加大小.)出现在dmesg和任何其他规则停止加载.

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

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

谢谢,
JAK

解决方法

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

如果你想保持32位,你的问题的解决方法是修改内核,以便iptables从预先分配的vmalloc空间分配,从而避免其他调用者对vmalloc造成的碎片(尽管如此,没有保证这将完美地解决你的问题,因为它取决于iptables如何分配内存与你用它做什么的配置文件,这在这个问题的范围内是未知的).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读