ifstat コマンドでネットワーク速度を調査する
稼働中の Linux サーバでリアルタイムのネットワーク速度を確認したい、というときには ifstat コマンドが使えます。CentOS 8 や RedHat Enterprise Linux 8 等にデフォルトでインストールされています。
ifstat の見方
[root@localhost ~]# ifstat #kernel Interface RX Pkts/Rate TX Pkts/Rate RX Data/Rate TX Data/Rate RX Errs/Drop TX Errs/Drop RX Over/Rate TX Coll/Rate lo 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 enp0s3 173 0 113 0 32714 0 11741 0 0 0 0 0 0 0 0 0 [root@localhost ~]#
ヘッダの見方は以下のようになります。
- RX = 受信 (Receive)
- TX = 送信 (Transmit)
- Pkts = パケット数
- Rate = (常に 0 が表示される)
- Data = 通信量 (Bytes, 前回コマンド実行時からの差分)
- Errs = CRC エラーのパケット数
- Drop = Drop となったパケット数
- Over = Overrun となったパケット数
- Coll = Collision (コリジョン) となったパケット数
速度 (スループット) を見る場合は Data に着目しますが、ポイントとしては、Data は前回コマンド実行時からの差分であることです。つまり前回の ifstat 実行から何秒経過したかによって速度計算は異なります。
例えば ifstat を一度実行し、8 秒後に再び ifstat を実行した結果が上記だったとすると、その 2 秒の間の受信 (RX) の平均速度は
32714 [Bytes] * 8 [bits/Bytes] / 8 [sec] = 32,714 bps ≒ 32.7 Kbps
となります。
もし 1 秒間隔で実行した結果だったとすれば
32714 [Bytes] * 8 [bits/Bytes] = 261.7 Kbps
となります。
なので以下のコマンド等で 1 秒間隔で実行すれば、表示された値を 8 倍するだけで bps 速度が分かります。
# watch -n 1 ifstat
なお、前回実行時の情報は /tmp/.ifstat.u$UID に保存されています。
また、drop や over, coll 等についての詳細は以下をご参照下さい。
Linuxのインタフェースのエラーカウンタの状態確認と原因 〜dropped, overrun, frame, carrier等~
Linuxのインタフェースのエラーカウンタ等の確認コマンド Linuxの通信速度...
コメント