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