速度が不明なネットワークインタフェース

速度が不明なネットワークインタフェース

ネットワークインターフェイスの最大スループットを印刷しようとすると、次のエラーが発生します。

$ cat /sys/class/net/<interface>/speed
cat: /sys/class/net/<interface>/speed: Invalid argument

返信する私が調査したところ、この属性はget_link_ksettingsethtoolメソッドを実装するインターフェースにのみ有効です(源泉)。

私の目標は、1秒/proc/net/devあたりに送受信されたバイト数を取得し(疑似ファイルの解析)、スループットを使用して使用率を計算することによって、各インターフェイスのネットワーク使用率を計算することです。ioctl()速度が不明なインターフェイスでは、成功しない機能で最大スループットを達成するためにCでこれを行っています。

速度属性を取得する他の方法はありますか?私が考えることができる最も簡単な解決策は、インターフェイスの基本速度が標準10Mbpsで使用率が100%を超える場合、最大速度を次の標準速度である1000Mbpsに、1Gbps、2.5Gbps、10Gbpsに増やすことです。これはどういうわけか動作しますが、非標準速度でバンドルインターフェイスを使用すると問題が発生する可能性があります。たとえば、2 つの 1 Gbps カードを 1 つの 2 Gbps にまとめます。インターフェイスをバンドルすることは私にとって大きな問題ではありませんが、ユニバーサルソリューションがあれば良いでしょう。

関連情報