私はHP DL360p Gen8を使用しています。デュアルブートWindows Server 2008 R2とRHEL7をインストールしました。どちらのシステムもLACPとVLANを設定しました。したがって、同じサーバー、同じハードウェア、同じネットワーク、同じルーティングテーブルなどです。
私はこのサーバーを高周波取引に使用しているため、ネットワーク遅延を含む遅延が心配されます。
これで、WindowsとLinuxで同じホストをpingすると、Linuxが少し良くなることが期待されます。驚くほどまったく良くはありませんでした。実際に同じホストに対してpingを実行すると、Windowsより5〜10マイクロ秒も悪くなります。
hrping
WindowsとLinuxping
で使用します。- Windowsではグループ化にHPユーティリティを使用し、RHEL 7では組み込みの「グループ化」(バインディングではない)を使用します。
私は次の理由でLinuxがより良くなると期待しています。
- RHEL 7ネットワークの実装がWindows Server 2008 R2よりも速いと思います。
- RHEL 7チーム化/LACP/VLANの実装がWindows Server 2008 R2/HPよりも速いと思います。
私の質問:
- そのような数字が存在する場合:RHEL 7のpingはWindows Server 2008 R2より数マイクロ秒速いですか?
- Linuxが5〜10マイクロ秒遅くなる可能性のある問題を示す場合
ping
、それともこれを無視する必要がありますか? - Linux PingをWindowsよりも高速にするために実行/診断/トラブルシューティングの方法は何ですか?
もちろん、実生活ではTCP/UDPなど実際のトラフィックのレイテンシがさらに心配になるでしょうが、これをping
第一段階として扱います。ping
「単純」なので、同じ数字が表示されることがありますが、Linuxは実際のTCP / UDPトラフィックでより速いでしょうか?
答え1
多くの要因があります。最初は実行中のマシンです。 WindowsとLinuxが異なるハードウェアにある場合、測定は意味がありません。
もちろん、複数の試みにわたって平均的なpingを測定する必要があります。最初の数回のpingには追加の遅延が含まれる場合があります。
パケットはカーネル(IPスタックおよびネットワークデバイスドライバ)を出て、応答が受信されたら再び入る必要があります。この段階では、違いに影響を与える多くの要因があります。
- 実際の時間測定:2つの異なるping実装は、タイマーの開始と実際に何かを送信すること(受信パスでも)の間である程度定型句操作を実行できます。
- 追加の手順を導入できるフィルタ:ファイアウォールなどがあります。
- 時計の粒度:カーネルがどのくらい細かくプロセスを多重化できますか?異なるLinuxレベル内でも、ティックの長さは大きく異なる可能性があります。
- プロセス管理:パケットが返されたときにプロセスがどれだけ早く、どのように目覚めますか? WindowsとLinuxはこれをまったく異なる方法で実装します。
- 残りのシステムは何をしていますか?同時に多くのIOが発生し、カーネルが忙しく動作しますか?
nice
より高い優先順位でpingすると変更されますか? - 周波数スケーリング:CPU周波数管理は大きく異なる場合があります。 Linuxにはさまざまなタスクを実行する多くの「ガバナー」があります。その結果、Linuxはアイドル状態のときより低いクロック速度で実行でき、周波数切り替えの瞬間に追加のレイテンシが生成されます。
- ユーティリティの実装とコンパイル
ping
もいくつかの影響を与える可能性があります(カーネルの遅延が大きな影響を与える可能性があります)。
Linuxカーネルのネットワークスループットが限界に達したことは秘密ではありません。10ギガビットレベル。したがって、マイクロ秒の速度では大きな違いはありません。これは、スケジュール、オペレーティングシステムの待ち時間などに関連する問題である可能性があります。そして、ping待ち時間はロード時に実際のパフォーマンスを表しません。この措置は、あなたが決定を下すときに1つの要素になるべきではありません。特に実際のロード時には他の多くのベンチマークが必要です。
最後に、Linuxカーネルの設定はパフォーマンスに大きな影響を与える可能性があります。リアルタイムプロジェクトには、最適なレベルでパフォーマンスを発揮するために専用のカーネルが必要です。これら2つの試みで見られるよりも、両方のプラットフォームで異なる構成間でより多くのバリエーションを見つけることができます。