VPP buffer不足
1666 ワード
げんしょう
VPPは転送時に、何かあったらパケットを失う.また、コマンドライン入力vppctl show error
のときにノードno available bufferの文字が表示されます.あるいはshow interface
の時にout of bufferなどの文字が現れます.説明はbuffer不足によるパケット損失かもしれません.
デバッグ
コマンドライン入力vppctl show buffers
でavailフィールドが0になったかどうかを確認します.0なら利用可能なbufferはありません.次のようにAvailフィールドは0ですvpp# show buffers
Pool Name Index NUMA Size Data Size Total Avail Cached Used
default-numa-0 0 0 2496 2048 16800 0 0 16800
default-numa-1 1 1 2496 2048 16800 16800 0 0
現在、この問題の原因はいくつかある可能性がある.主に起動プロファイルstartupを調整する.conf,起動dpdk項目ではnum-rx-queues 4やnum-tx-queues 4などのフィールドがbuffer占有に影響し,このキューの数値が大きいほど占有するbufferが多くなる.適当に小さくしてみてもいいです.bufferのスペースを大きくすることもできます.私が使っているVPPバージョンは19.04 releaseバージョンで、startup.confに以下の内容を追加し、数値は自分で調整できます.buffers
{
buffers-per-numa 30000
}
VPPのバージョンの更新は比較的速いですが、資料の更新が遅いので、多くの資料のパラメータが適用されない可能性があります.私も異なるバージョンが適用できることを保証しません.主な考え方は自分のバージョンに対応するVPPソースコードを見て、src\vlib\buffer.c
ディレクトリを見つけて、vlib_buffers_configure
bufferモジュールの配置関数を見て、例えば私のこのバージョンコードは以下で、コマンドラインを解析する時、解析キーワードbuffers-per-numa
があるので、buffers-per-numa
を使ってstartupに追加してみることができます.confファイルでデバッグします.while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
{
if (unformat (input, "buffers-per-numa %u", &bm->buffers_per_numa))
;
else if (unformat (input, "default data-size %u",
&bm->default_data_size))
;
else
return unformat_parse_error (input);
}
コマンドライン入力
vppctl show buffers
でavailフィールドが0になったかどうかを確認します.0なら利用可能なbufferはありません.次のようにAvailフィールドは0ですvpp# show buffers
Pool Name Index NUMA Size Data Size Total Avail Cached Used
default-numa-0 0 0 2496 2048 16800 0 0 16800
default-numa-1 1 1 2496 2048 16800 16800 0 0
現在、この問題の原因はいくつかある可能性がある.主に起動プロファイルstartupを調整する.conf,起動dpdk項目ではnum-rx-queues 4やnum-tx-queues 4などのフィールドがbuffer占有に影響し,このキューの数値が大きいほど占有するbufferが多くなる.適当に小さくしてみてもいいです.bufferのスペースを大きくすることもできます.私が使っているVPPバージョンは19.04 releaseバージョンで、startup.confに以下の内容を追加し、数値は自分で調整できます.
buffers
{
buffers-per-numa 30000
}
VPPのバージョンの更新は比較的速いですが、資料の更新が遅いので、多くの資料のパラメータが適用されない可能性があります.私も異なるバージョンが適用できることを保証しません.主な考え方は自分のバージョンに対応するVPPソースコードを見て、
src\vlib\buffer.c
ディレクトリを見つけて、vlib_buffers_configure
bufferモジュールの配置関数を見て、例えば私のこのバージョンコードは以下で、コマンドラインを解析する時、解析キーワードbuffers-per-numa
があるので、buffers-per-numa
を使ってstartupに追加してみることができます.confファイルでデバッグします.while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
{
if (unformat (input, "buffers-per-numa %u", &bm->buffers_per_numa))
;
else if (unformat (input, "default data-size %u",
&bm->default_data_size))
;
else
return unformat_parse_error (input);
}