linux系统vmalloc分配过大,Linux内核,iptables和vmalloc大小
在我們的一些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如何分配內存與你用它做什么的配置文件,這在這個問題的范圍內是未知的).
標簽:linux,linux-kernel
來源: https://codeday.me/bug/20190610/1209243.html
總結
以上是生活随笔為你收集整理的linux系统vmalloc分配过大,Linux内核,iptables和vmalloc大小的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用odac连接oracle 12154,
- 下一篇: linux系统添加网卡驱动,Linux