Red Hat Training

A Red Hat training course is available for RHEL 8

31.4. receive-Side Scaling

マルチキュー受信とも呼ばれる Receive Side Scaling (RSS) は、ネットワーク受信処理を複数のハードウェアベースの受信キューに分散し、受信ネットワークトラフィックを複数の CPU で処理できるようにします。RSS を使用すると、1 つの CPU をオーバーロードして発生する受信中断プロセッシングにおけるボトルネックを緩和し、ネットワークレイテンシーを低減させることができます。デフォルトでは RSS が有効になっています。

RSS のネットワークアクティビティーを処理するキューまたは CPU の数は、適切なネットワークデバイスドライバーで設定されます。

  • bnx2x ドライバーの場合、num_queues パラメーターで設定されます。
  • sfc ドライバーの場合は、rss_cpus パラメーターで設定されます。

通常、/sys/class/net/device/queues/rx-queue/ ディレクトリーで設定されます。device はネットワークデバイスの名前 (enp1s0)、rx-queue は適切な受信キューの名前です。

irqbalance デーモンを RSS と併用して、複数ノードのメモリー転送とキャッシュラインボンピングの可能性が低減することができます。これにより、ネットワークパケット処理のレイテンシーが短縮されます。

31.4.1. 割り込み要求キューの表示

RSS(Receive-Side Scaling)を構成する場合、Red Hat はキューの数を物理的な CPU コアごとに 1 つに制限することを推奨します。ハイパースレッディングは、分析ツールで個別のコアとして表されますが、ハイパースレッディングなどの論理コアを含むすべてのコアにキューを設定することは、ネットワークパフォーマンスにあまり良い影響はありません。

有効にすると、RSS は各 CPU のがキューした処理量に基づいて、利用可能な CPU 間でネットワーク処理を均等に分散します。ただし、ethtool ユーティリティーの --show-rxfh-indir パラメーターおよび --set-rxfh-indir パラメーターを使用して、RHEL がネットワークアクティビティーをどのように分散し、特定のネットワークアクティビティーの順位付けを行う方法を変更することができます。

この手順では、割り込み要求キューを表示する方法を説明します。

手順

  • ネットワークインターフェースカードが RSS をサポートしているかどうかを確認するには、複数の割り込み要求キューが /proc/interrupts 内のインターフェースに関連付けられているかどうかを確認します。

    # egrep 'CPU|p1p1' /proc/interrupts
     CPU0    CPU1    CPU2    CPU3    CPU4    CPU5
    89:   40187       0       0       0       0       0   IR-PCI-MSI-edge   p1p1-0
    90:       0     790       0       0       0       0   IR-PCI-MSI-edge   p1p1-1
    91:       0       0     959       0       0       0   IR-PCI-MSI-edge   p1p1-2
    92:       0       0       0    3310       0       0   IR-PCI-MSI-edge   p1p1-3
    93:       0       0       0       0     622       0   IR-PCI-MSI-edge   p1p1-4
    94:       0       0       0       0       0    2475   IR-PCI-MSI-edge   p1p1-5

    この出力は、NIC ドライバーが p1p1 インターフェース (p1p1-0 から p1p1-5) の 6 つの受信キューを作成したことを示しています。また、各キューで処理された割り込みの数と、割り込みをした CPU の数も表示されます。この場合、デフォルトではこの特定の NIC ドライバーは CPU ごとに 1 つのキューを作成するため 6 つのクエリーがあります。また、このシステムには CPU が 6 つあります。これは、NIC ドライバー間で非常に一般的なパターンです。

  • 0000:01:00.0 アドレスで PCI デバイスの割り込み要求キューを一覧表示するには、以下を実行します。

    # ls -1 /sys/devices/*/*/0000:01:00.0/msi_irqs
    101
    102
    103
    104
    105
    106
    107
    108
    109