ハイパースレッドは、アーキテクチャの状態を格納するプロセッサの特定のセクションを複製することによって機能します。しかし、ハイパースレッド コアの論理プロセッサは、実行エンジン、キャッシュ、システム バス インターフェイスなどの実行リソースを共有します。これにより、論理プロセッサは停止した論理コアからリソースを借用できます(両方の論理コアが同じ物理コアに関連付けられていると仮定します)。プロセッサは、キャッシュ ミス、ブランチの予測ミス、またはデータ依存関係による送信データの遅延が原因で停止するため、現在のスレッドの処理を完了できます。
NSX Advanced Load Balancer には、ハイパースレッド コアの使用と、ハイパースレッド CPU 上での se_dps
の配分(配置)を制御する 2 つのノブがあります。これら 2 つのノブは、SE グループの構成要素です。ここでは、これら 2 つのノブについて説明します。
SE でハイパースレッドを有効にするには、以下を使用します。
threaded cores use_hyperthreaded_cores – True [default] | False enable or disable se_dps to use hyper-
ハイパースレッド CPU 上での
se_dps
の配置を制御するには、以下を使用します。
se_hyperthreaded_mode – SE_CPU_HT_AUTO[default] SE_CPU_HT_SPARSE_DISPATCHER_PRIORITY SE_CPU_HT_SPARSE_PROXY_PRIORITY SE_CPU_HT_PACKED_CORES controls the distribution of se_dps on hyper-threads
これらのノブを使用するには:
プロセッサはハイパースレッドをサポートする必要があります。
BIOS でハイパースレッドの使用を有効にする必要があります。
use_hyperthreaded_cores
:このノブにより、se_dps
に対してハイパースレッド コアの使用を有効または無効にすることができます。このノブは、CLI またはユーザー インターフェイスを使用して構成できます。
CLI コマンドは次のとおりです。
[admin:vpr-ctrl]: serviceenginegroup> use_hyperthreaded_cores [admin:vpr-ctrl]: serviceenginegroup> se_hyperthreaded_mode SE_CPU_HT_AUTO [admin:vpr-ctrl]: serviceenginegroup> save
se_hyperthreaded_mode
:データパス プロセスの数がオンラインのハイパースレッド CPU の数よりも少ない場合は、このノブを使用して、ハイパースレッド CPU 上での se_dp
の配分を調整することができます。このノブは、CLI を使用してのみ構成できます。
se_hyperthreaded_mode
を使用して構成したモードを有効にするには、use_hyperthreaded_cores を True
に設定します。
se_hyperthreaded_mode
でサポートされる値は次のとおりです。
SE_CPU_HT_AUTO
:これはデフォルトのモードです。SE が最適な配置を自動的に決定します。このモードでは、CPU のハイパースレッド トポロジに従って、既存の動作が維持されます。データパス プロセスの数が CPU の数より少ない場合は、SE_CPU_HT_SPARSE_PROXY_PRIORITY
モードと同じになります。SE_CPU_HT_SPARSE_DISPATCHER_PRIORITY
:このモードでは、物理 CPU にデータパス プロセスを 1 つだけ配置することで、ディスパッチャー インスタンスが優先されるようにします。このモードでは、最初に物理コアを大量に消費し、その後、CPU 番号の降順でハイパースレッドを消費します。SE_CPU_HT_SPARSE_PROXY_PRIORITY
:このモードでは、物理 CPU にデータパス プロセスを 1 つだけ配置することで、プロキシ(ディスパッチャー以外の)インスタンスが優先されるようにします。データ パス プロセスの数が CPU の数よりも少ない場合に有効です。このモードでは、物理コアを大量に消費してから、CPU 番号の昇順でハイパースレッドを消費します。SE_CPU_HT_PACKED_CORES
:このモードでは、データパス プロセスが同じ物理コアに配置されます。各コアで、2 つのディスパッチャーまたは 2 つのディスパッチャー以外の(プロキシ)インスタンスを隣接して配置できます。このモードは、データパス プロセスの数が CPU の数よりも少ない場合に有効です。このモードでは、各コアで順番にハイパースレッドを大量に消費してから、次の物理コアに移動します。
ハイパースレッドが有効になっている場合、DP 隔離を有効にすると動作が変更されます。拡張機能 SE_CPU_HT_AUTO
を通じて影響を受けるモードは、SE_CPU_HT_SPARSE_DISPATCHER_PRIORITY
と SE_CPU_HT_SPARSE_PROXY_PRIORITY
です。DP 隔離では、物理コアの数は dp_set
(se_dp プロセスの cgroup)から除外されるように予約されます。これにより、特定のコアはデータパスの HT 配分ロジックから masked
になります。
この数値は、floor(num_non_dp_cpus/ 2) として計算されます。
たとえば、num_non_dp_cpus
が 5 の場合、2 つのコアは非データパス排他性のために予約されます。HT を使用するために、DP 隔離の有無にかかわらず、SEgroup では次の構成ノブが提供されています。
use_hyperthreaded_cores (true/ false)
se_hyperthreaded_mode(ここで説明する 4 つのモードの 1 つ)
構成の例
| use_hyperthreaded_cores | True | | se_hyperthreaded_mode | SE_CPU_HT_SPARSE_DISPATCHER_PRIORITY |