Onload を使用する
このページでは、超低レイテンシ(ULL)Compute Engine インスタンスで Onload を使用する方法について説明します。
Onload は、超低レイテンシ、最小限のジッター、一貫したパフォーマンスを必要とするレイテンシの影響を受けやすいアプリケーション向けの高性能ネットワーク スタックです。Onload は、オペレーティング システムのカーネルをバイパスしてユーザー空間で直接実行する TCP/IP 実装を提供し、アプリケーションが標準の BSD ソケット API を使用できるようにします。
ULL Solution で Onload を使用すると、次のものがサポートされます。
- フロー ステアリング: ULL ネットワーク インターフェースを使用すると、特定のトラフィック フローを、指定された受信キュー(RX)に直接ステアリングすることで、デフォルトの受信側スケーリング(RSS)ハッシュをバイパスできます。ULL ユニキャスト トラフィックとマルチキャスト トラフィックの場合、3 タプル フロー ステアリング(プロトコル、宛先 IP アドレス、宛先ポート)がサポートされています。
必要なインスタンス タイプと OS イメージ
Onload を使用するには、ULL Compute Engine インスタンスを作成するで説明されているように、Google がテスト用に提供するイメージ プロジェクトとイメージを使用して ULL Compute Engine インスタンス(U4P または U4C)を作成する必要があります。
必要なイメージを使用すると、Onload がプリインストールされ、起動時に読み込まれます。このページの手順に沿って、Onload でプロセスを実行できます。
onload の開始と停止
このセクションでは、Onload の起動方法と停止方法について説明します。次のセクションの手順を完了するには、Onload を起動する必要があります。
Onload を起動するには、次のコマンドを実行します。
sudo /opt/gcp_tp-scripts/load-onload-and-tune
Onload を停止するには、次のコマンドを実行します。
sudo /opt/gcp_tp-scripts/unload-onload
ビジー ポーリングを有効にする
超低レイテンシを実現し、ジッターを最小限に抑えるには、ビジー ポーリングを有効にします。
ビジー ポーリングを有効にするには、次の操作を行います。
まだインスタンスに接続していない場合は、SSH を使用してインスタンスに接続します。
ビジー ポーリングは、すべてのキューに対して有効にすることも、より細かく設定することもできます。ユースケースに対応するオプションを選択します。
すべてのキュー:
sudo /opt/gcp_tp-scripts/busypoll-all-queues
Onload スタックが使用している特定の RX キュー:
まだ実行していない場合は、次のコマンドを実行して Onload スタックを起動します。
gcp_tp-onload /opt/neper/tcp_rr &
開始したスタックの
stack-idを取得するには、次のコマンドを実行します。onload_stackdump
ネットワーク インターフェースのインデックス番号を取得するには、次のコマンドを実行します。
cat /sys/class/net/NIC_NAME/ifindex
NIC_NAMEは、ゲスト OS のネットワーク インターフェースの名前(eth1、eth2など)に置き換えます。ビジー ポーリングを有効にするには、次のコマンドを実行します。
sudo /opt/gcp_tp-scripts/busypoll-onload-stack STACK_ID enable NIC_INDEX CPU_ID
次のように置き換えます。
STACK_ID: 前の手順で取得したスタック IDNIC_INDEX: ビジー ポーリングを有効にするネットワーク インターフェースのインデックス番号(例:1、2)。CPU_ID: ビジーポーリングを有効にする CPU の ID。- CPU
0や、アプリケーションで使用されている CPU は使用しないことをおすすめします。 指定したネットワーク インターフェースの NUMA ノードにローカルな CPU コアを使用していることを確認します。次に例を示します。
eth1は NUMA ノード0を使用し、これは CPU コア0-29を使用します。eth2は NUMA ノード2を使用します。CPU コア60-89を使用します。
- CPU
ビジーポーリングを無効にするには、次のコマンドを使用します。
sudo /opt/gcp_tp-scripts/busypoll-onload-stack STACK_ID disable NIC_INDEX CPU_ID
次のステップ
- インスタンスのシステム クロックをホストサーバーの物理 NIC クロックと同期するには、正確な時刻を構成するをご覧ください。