web-dev-qa-db-ja.com

OSを分析するためのLinuxコマンドラインツール+ NIC TCPレイテンシー

レイテンシーを測定するための既存のLinuxツールを見つけたいと思っています。

OSとNICカードがLinuxのTCPレイテンシーに追加しているレイテンシーの量を診断しようとしています。次のツールを調べましたが、すべて(少なくとも表面レベルで)遅延(サイズxの1パケットの送信のナノ秒)ではなく、測定された帯域幅(Mbps /秒)。

nttcp nuttcp netperf iperf

カスタムテストを作成すると、次のようになります。

クライアント:

  1. 指定された長さの偽のメッセージを作成し、識別子をインクリメントするためのパディングを付けます。 TCP接続(右側)を開く
    TCP_NODELAYなどのパラメータ)
  2. 増分識別子を含むメッセージをループして送信します。識別子に関連付けられている現在のシステム時刻(ナノ単位)を保存します。
  3. 応答をリッスンし、現在の時刻を記録し、その識別子の待ち時間を非同期で記録します

サーバー

  1. 接続を聞く
  2. 受信したメッセージをエコーバックします

両方のボックスのセットアップが同じ(構成、カード、OS、CPUなど)であり、ネットワーク内で互いに比較的近く、ネットワークの遅延の寄与が大まかにわかっているとすると、OSの概算を得ることができます+ NIC貢献し、さまざまな構成のテストを開始します。

また、ネットワークスニファを使用し、2つのホスト間の回線をスヌーピングし、IDの両側間の遅延を計算し、内部で測定された遅延からそれを差し引くことで、遅延のより正確な画像を取得できます。

それで、誰かがこの種のものをテストするためのツールまたはいくつかの定型コードさえ知っていますか?

4
AnArcticPuffin

そのような統計を提供できるqperfと呼ばれるツールがあります。ただし、OFED/RDMAパッケージにバインドされています。

# qperf -v xx.xx.xx.xx tcp_lat udp_lat
tcp_lat:
    latency        =  29.2 us
    msg_rate       =  34.2 K/sec
    loc_cpus_used  =    41 % cpus
    rem_cpus_used  =  11.5 % cpus
udp_lat:
    latency        =  24.8 us
    msg_rate       =  40.4 K/sec
    loc_cpus_used  =    34 % cpus
    rem_cpus_used  =     4 % cpus
3
user666412

たまたまpingを探していましたか?

1
Paweł Obrok

私が探しているものをほぼ正確に見つけました(スニファーと相互参照できるシーケンスを除いて、それは問題ありません): http://linux.die.net/man/1/netpipe

0
AnArcticPuffin

カーネル内パフォーマンスツール(tools/perf)を見てください。少なくともいくつかのデータを提供できます NIC部分

LTTngスイート もあり、ネットおよびシステムコールのトレースがサポートされています。ソフトウェア側で必要なのは、sys_write()を開始してから、start_xmit()呼び出しチェーンの最後で関数を終了するまでの時間です。したがって、独自の トレースポイント を挿入する必要がある場合があります。

0
Mircea