2011-11-11 32 views
4

我々は、ロードされているルールのせん断数はvmallocエラー(サイズ3506176のためのVMAPの割り当てが失敗した原因と思われる当社のLinuxボックスの数にiptablesのに問題を抱えている:に= vmallocを使用サイズを増やしてください)dmesgに表示され、追加ルールがロードされなくなります。Linuxカーネル、iptablesのとvmallocサイズ

は、多くの研究の後、私たちは128メガバイトから512メガバイトにvmallocサイズを増加し、再起動し、それが問題を一時的に固定しています。 64ビットカーネルにはこの問題はありません(?)。私はCentOS 6ボックス(64ビット)をチェックし、VmallocTotal:34,359,738,367 kB(!)を持っています。

だから私の質問は、32ビットPAEカーネルにも、この問題を解決するだろうか? 問題がで割り当て断片化から生じるので、それは複数のサイト間でOS以外のカーネルを変更することがずっと容易になるだろう...

おかげで、 のJak

答えて

6

は32ビットPAEカーネルは、この問題を解決することはできませんvmalloc空間。 x86-64では、vmallocの容量が非常に大きく(物理RAMのサイズよりもはるかに大きい)、割り振りの失敗が発生するのに十分に断片化されていない状況にはなりません。しかし、32ビットでは、vmallocの容量は非常に小さく、100 MBほどです。 PAEに移動しても、この仮想割り当てスペースはそれ以上大きくなりません。

32ビットのままにしたい場合は、カーネルを修正して、iptablesがあらかじめ割り当てられたvmallocスペースから割り当てられるようにして、他の呼び出し元がvmallocあなたの問題を完全に解決するという保証はありません。なぜなら、iptablesがどのようにメモリを割り当てているのかということです(この質問の範囲では分かりません)。

+0

どうもありがとうございました:-) – Jak

+0

非常にクール。洞察に感謝します。 –

2

32ビットのユーザー空間で64ビットのカーネルを使用することができます。これは、カーネルの変更だけで、膨大なvmallocアリーナが得られるという利点があります。

+0

これもありがとう、リモートサイトのための良い修正 – Jak