gc_thresh カーネル構成の問題

gc_thresh カーネル構成の問題

データセンターのカーネルログに問題があります。

arp_cache: neighbor table overflow!

これは、ゴシッププロトコルを使用し、arpキャッシュを「フラッディング」するすべてのサーバーに投影することに関連しています。約300人のメンバーがいるため、フラッディングを自由に使用していますが、これはデフォルトのgc_thresh3制限よりはるかに低く、指定された時間に25人しか表示されません。すべてのサーバーで、次の設定を両方倍にしました。

gc_thresh1 (Linux 2.2 以降) ARP キャッシュに保持するエントリの最小数。キャッシュ内のこのエントリ数より少ない場合、ガベージコレクタは実行されません。デフォルト値は 128 です。

gc_thresh2 (Linux 2.2 以降) ARP キャッシュに保持するソフト最大エントリ数。ガベージコレクタは、収集を実行する前に5秒間、アイテム数がこの値を超えることを許可します。デフォルト値は 512 です。

gc_thresh3 (Linux 2.2 以降) ARP キャッシュに保持するエントリの最大数を指定します。キャッシュ内のエントリ数がこの数を超えると、ガベージコレクタは常に実行されます。デフォルト値は 1024 です。

これで問題は解決しましたが、理由がわかりません。なぜなら、arp -nを実行すると、gc_thresh3に到達するのに必要な1024項目の近くにもないからです。カーネルバージョンのコードを見ました。

https://github.com/torvalds/linux/blob/31cc088a4f5d83481c6f5041bd6eb06115b974af/net/core/neighbour.c#L388

これは、文書に一致する単純な増分のように見えますが、制限の前に削除され、上記のエラーメッセージが表示されます。私が理解していない部分や、私の分析がどのように間違っているかを教えてくれる人はいますか?これを把握して、それを適切に設定する方法を計画できるようにしたいと思います。よろしくお願いします!

関連情報