2016-08-16 1 views
1

典型的なDPDKアプリケーションでは、lcoreはキュー0ポート0からパケットのストリームを受信すると仮定します。処理後、パケットはキュー0ポート1に転送されます。私。処理速度は所得率よりも低く、バックログパケットの量は受信キューのサイズを超えようとしています。たとえば、rte_eth_rx_burst()を使用してパケットを受信し、可能性のあるMAXパケットをretieveすると、何が言えるでしょうか?パケット損失またはパケット損失のリスクをどのように検出できますか?DPDKのパケット損失のリスクを検出するにはどうすればよいですか?

+0

あなたはポートカウンタを持っています。 http://dpdk.org/doc/api/rte__ethdev_8h.htmlカウンタを取得する方法を参照してください。ドロップ/エラーが表示されます。 – roni

答えて

1

rte_eth_stats_getを使用すると、インターフェイスの統計情報を取得できます。前記機能によって充填されたrte_eth_stats構造体は、あなたが探しているかもしれないフィールドrx_nombufおよびimissedを含む。

詳細については、rte_ethdevdocsを確認してください。

+0

私が探しているのは、各受信キューがプログラムにパケット損失の早期の危険を通知するための警告信号です。パケット上でやっているプロセスの量をどうにか減らしたり、最悪の場合にはそれらを落とすことができます。 'rte_eth_stats_get()'は受信キューではないデバイスの統計情報を返します。正確に私が望むのは、特定のキューの受信リング内のパケット数です。受信キューをセットアップするのに 'rte_eth_rx_queue_setup()'を使いますが、すでに設定されている受信リングにはアクセスできません。もしそれがあったら、 'rte_ring_count()'を使うことができました。 – Kamiar

+0

パケットを処理するときに、受信キュー内のバックログパケットの量が増加しているか減少しているかを知ることは有用です。だから、あなたはこの変更に対処する方法を選択することができます。 – Kamiar

+0

リングには、残りのバックログが所定のしきい値を超えた場合にデバイスに通知する「透かし入れ」メカニズムもあります。それは 'rte_ring_set_water_mark()'によって設定されます。ただし、受信者プログラムには通知されません。私は呼び出し元のプログラムに信号を送るようなものを探しています。 – Kamiar

関連する問題