ping結果がCPU負荷に依存する理由

ping結果がCPU負荷に依存する理由

レイヤ2スイッチを介して接続されたUbuntu 20.04を実行している2台のPC間でpingを試みています。私の目標は、「ほぼ」安定したping待ち時間を取得することです。他の人と同様に、CPU負荷が高い場合よりも、CPU負荷が低いときにping待ち時間(往復時間)が悪いことがわかりました。

https://superuser.com/questions/543503/ping-vs-cpu-usage

https://superuser.com/questions/1189531/kvm-how-is-cpu-usage-lated-to-ping

たとえば、PC-AからPC-Bへのpingを実行しているとします。 PC-Bがオペレーティングシステムの基本プログラム以外のプログラムを実行していない場合、PC-Aで受信されるping待ち時間は約0.5〜0.6ミリ秒です。ただし、CPU負荷を高めるためにストレスツールを使用した場合(たとえば、1つのコアストレスを80%の負荷に増やす)、PC-Aで受信されたping待ち時間は約0.2〜0.3ミリ秒にすぎません。

PC-AとPC-Bの間に直接ケーブルを接続してみましたが、まだ同じ現象が発生するため、問題はスイッチが原因ではないと確信しています。私はこの動作がデフォルトのCPUインジケータであるスリープモードによって引き起こされると確信しています。しかし、驚くべきことに、次のようにCPUインジケータをスリープモードからパフォーマンスモードに変更したときCPU周波数ツール、PC-Aで受信されたping待ち時間はまだ約0.5 - 0.6msです(PC-Bには負荷がありません)。 CPU負荷を増やすと同じ動作が発生します(ping待ち時間約0.2 - 0.3ms)。 CPU指標を変更する以外に、他のタスクを実行する必要があるようです。

ベストアンサー1

低負荷でEEE(Energy Efficient Ethernet)が有効になると、ネットワークハードウェアはスリープモードになります。これにより遅延が発生する可能性があります。カーネルは、ネットワーク使用量に基づいていつ昼寝するかを動的に推測します。

次の方法でこの機能を無効にできます。この回答に従ってください

おすすめ記事