web-dev-qa-db-ja.com

ベンチマーク中にNetHogsが0KB /秒を報告するのはなぜですか?

Linuxカーネルがループバックネットワークで処理できるトラフィックの量を知りたいと思ったので、ベンチマークを行うことにしました。あるターミナルで、私は実行しました:

% nc -l -p 5235 127.0.0.1 > /dev/null

そして別の中で私は走った:

% nc 127.0.0.1 5235 < /dev/zero

次に、実際にトラフィックを測定するためにSudo nethogs lo。これは、2番目のncのエントリを示しており、(平均で)約570,000KB /秒を送信していることを示しています。最初のncは平均で約1,300KB /秒を送信しているようです。これはTCP制御パケットだと思います。ただし、両方のncプロセスは0KB /を示しています。これはなぜですか?各プロセスは、他のプロセスの送信値と等しい受信値を報告する必要があるようです。

バージョン情報:

% nethogs -V
 version 0.8.1

% uname -a
Linux file-not-regular.strugee.net 3.16.0-4-AMD64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux

% nc -h |& head -1
[v1.10-41]
2
strugee

これは、カーネルが送信元IPアドレスと宛先IPアドレスを超えてインバウンドトラフィックとアウトバウンドトラフィックを実際に区別しないためです。カーネルが送信元IPを調べ、それがローカルであることを確認し、それをアウトバウンドとして分類し、パケットをそれ以上分類しない(たとえば、インバウンドとして)ため、パケットは「ダブルカウント」されません。

0
strugee