8.3. パケット受信の概要


ネットワークのボトルネックとパフォーマンス問題をさらに分析するには、パケット受信の機能方法を理解する必要があります。パケット受信がネットワークパフォーマンスのチューニングで重要なのは、受信パスでフレームが失われることが多いからです。受信パスでフレームが失われると、ネットワークパフォーマンスに多大なペナルティーを引き起こします。
ネットワーク受信パスの図

図8.1 ネットワーク受信パスの図

Linux カーネルはフレームを受信するごとに以下の 4 ステップのプロセスを行います。
  1. ハードウェア受信: ネットワークインターフェースカード (NIC) が接続線上でフレームを受信します。そのドライバー設定により、NIC はフレームを内部のハードウェアバッファーメモリか指定されたリングバッファーに移動します。
  2. ハード IRQ: NIC が CPU に割り込むことでネットフレームの存在をアサートします。これにより NIC ドライバーは割り込みを承認し、ソフト IRQ オペレーション をスケジュールします。
  3. ソフト IRQ: このステージでは、実際のフレーム受信プロセスを実装し、softirq コンテキストで実行します。つまり、このステージは指定された CPU上で実行されている全アプリケーションよりも先に行われますが、ハード IRQ のアサートは許可します。
    (ハード IRQ と同じ CPU 上で実行することでロッキングオーバーヘッドを最小化している) このコンテキストでは、カーネルは実際に NIC ハードウェアバッファーからフレームを削除し、ネットワークスタックで処理します。ここからは、フレームはターゲットのリスニングソケットへの転送、破棄、パスのいずれかが行われます。
    フレームはソケットにパスされると、ソケットを所有するアプリケーションに追加されます。このプロセスは、NIC ハードウェアバッファーのフレームがなくなるまで、または device weight (dev_weight) まで繰り返されます。device weight についての詳細は 「NIC ハードウェアバッファー」 を参照してください。
  4. アプリケーション受信: アプリケーションがフレームを受信し、標準 POSIX コール (readrecvrecvfrom) で所有されているソケットからキューを外します。この時点で、ネットワークで受信されたデータはネットワークソケット上には存在しなくなります。

CPU/キャッシュアフィニティ

受信パス上で高スループットを維持するには、L2 キャッシュを hot に保つことが推奨されます。すでに説明したように、ネットワークバッファーは存在を知らせる IRQ と同じ CPU 上で受信されます。つまり、バッファーデータはその受信 CPU の L2 キャッシュ上にあることになります。
これを活用するには、L2 キャッシュと同じコアを共有する NIC 上でデータを最も多く受信すると予想されるアプリケーション上にプロセスアフィニティを置きます。こうすることで、キャッシュヒットの確率を最大化し、その結果パフォーマンスが改善します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.