インスタンスのパフォーマンスを向上させるため、Alibaba Cloud ではほとんどのインスタンスタイプでデフォルトでハイパースレッディングが有効になっています。この機能は、各物理コアを 2 つの論理コアに分割します。しかし、メモリ集約型ワークロードや、高いシングルコア性能を必要とするワークロードの場合、ハイパースレッディングを無効にすることで、パフォーマンスを向上させ、ソフトウェアライセンスコストを削減できます。
ユースケース
デフォルトで、Alibaba Cloud ではほとんどのインスタンスタイプでマルチスレッド性能を強化するためにハイパースレッディングが有効になっています。しかし、特定のワークロードでは、ハイパースレッディングを無効にすることが、全体的なパフォーマンスの向上やコストの最適化に役立つ場合があります。以下に、ハイパースレッディングの無効化を検討する典型的なシナリオを示します。
メモリ集約型ワークロードのパフォーマンス向上
キャッシュサービスなどのメモリ集約型ワークロードでは、多数の同時実行スレッドを必要としない場合があります。このような場合、ハイパースレッディングを無効にすることで、コンピューティングとメモリの比率を最適化し、サービスパフォーマンスを向上させることができます。
高いシングルコア性能が求められるワークロードのパフォーマンス向上
高いシングルコア性能が求められるワークロードでは、ハイパースレッディングを無効にすることで、スレッドの競合やコンテキストスイッチによるパフォーマンスのオーバーヘッドを削減できます。
ソフトウェアライセンスコストの削減
アクティブな CPU コアの数を減らすか、ハイパースレッディングを無効にして物理コアまたは論理コアの数を減らすことで、ソフトウェアライセンスコストを効果的に削減できます。
課金
CPU オプションの変更は、有効なコア数またはハイパースレッディングの設定にのみ影響し、インスタンスタイプによって定義される vCPU の総数には影響しません。したがって、インスタンスタイプの料金は変わりません。
制限事項
一部のインスタンスファミリーでは、API、CLI、または SDK でのみ CPU オプションを設定できます。
有効な CPU コア数とハイパースレッディング設定を調整するための CPU オプションは、一部のインスタンスタイプでのみサポートされています。サポートされるパラメータ値はインスタンスタイプによって異なります。
説明以下のインスタンスファミリーのリンクをクリックして、各インスタンスタイプでサポートされている物理コア数とコアごとのスレッド数の値を確認してください。
手順
インスタンスの作成時に CPU オプションを指定するか、既存のインスタンスで変更することができます。
インスタンス作成時の CPU オプションの設定
インスタンスを作成する際に、有効な CPU コア数とハイパースレッディングの設定を調整できます。手順は次のとおりです。
コンソール
カスタム起動オプションを使用してインスタンスを作成する際、[詳細設定] > [CPU オプション] セクションで、有効な物理コア数を指定し、ハイパースレッディングを設定できます。
|
|
API
RunInstances API を呼び出してインスタンスを作成および起動する際に、以下のパラメータで、有効な物理コア数を指定し、ハイパースレッディングを設定できます。
パラメータ | タイプ | 説明 |
CpuOptions.Core | integer | 有効な物理コア数。このパラメータは特定のインスタンスタイプでのみサポートされており、サポートされている値の指定が必要です。詳細については、「制限事項」をご参照ください。 |
CpuOptions.ThreadsPerCore | integer | コアごとのスレッド数。値が 1 の場合、ハイパースレッディングが無効になります。このパラメータは特定のインスタンスタイプでのみサポートされており、サポートされている値の指定が必要です。詳細については、「制限事項」をご参照ください。 |
CLI
CLI を使用して RunInstances API を呼び出し、インスタンスを作成および起動する際に、コア数 (CpuOptions.Core) とハイパースレッディング設定 (CpuOptions.ThreadsPerCore) を指定できます。以下にコマンドの例を示します。
コマンド例: ecs.g7.8xlarge インスタンス (16 個の物理 CPU コアを持つ) を作成し、10 個の物理コアを使用するように設定し (
CpuOptions.Core=10)、ハイパースレッディングを無効にします (CpuOptions.ThreadsPerCore=1)。
aliyun ecs RunInstances --RegionId cn-hangzhou \
--CpuOptions.Core 10 \
--CpuOptions.ThreadsPerCore 1 \
--ImageId aliyun_3_x64_20G_alibase_20250117.vhd \
--InstanceType ecs.g7.8xlarge \
--SecurityGroupId sg-bp1****** \
--VSwitchId vsw-bp1****** \
--SystemDisk.Category cloud_essd \
--Amount 1主なパラメータの説明:
既存インスタンスの CPU オプションの変更
既存のインスタンスのコア数とハイパースレッディング設定を調整するには、CPU オプションを変更する前にインスタンスを停止する必要があります。手順は次のとおりです。
コンソール
コンソールで既存のインスタンスの CPU オプションを変更するには、次の手順に従います。
|
|
|
|
|
API
有効な物理コア数を指定し、ハイパースレッディングを設定するには、次の順序で API を呼び出します。
StopInstance API を呼び出してインスタンスを停止します。
ModifyInstanceAttribute API を呼び出して CPU オプションを変更します。関連するパラメータは次のとおりです。
パラメータ
タイプ
説明
CpuOptions.Core
integer
有効な物理コア数。このパラメータは特定のインスタンスタイプでのみサポートされており、サポートされている値の指定が必要です。詳細については、「制限事項」をご参照ください。
CpuOptions.ThreadsPerCore
integer
コアごとのスレッド数。値が 1 の場合、ハイパースレッディングが無効になります。このパラメータは特定のインスタンスタイプでのみサポートされており、サポートされている値の指定が必要です。詳細については、「制限事項」をご参照ください。
StartInstance API を呼び出してインスタンスを再起動し、変更を適用します。
CLI
有効な物理コア数を指定し、ハイパースレッディングを設定するには、次の順序で CLI コマンドを実行します。
StopInstance API を呼び出してインスタンスを停止します。
aliyun ecs StopInstance --region cn-hangzhou \ --InstanceId i-bp1******ModifyInstanceAttribute API を呼び出して CPU オプションを変更します。
コマンド例: インスタンス
i-bp1******の CPU オプションを変更し、10 個の物理コアを有効にし (CpuOptions.Core=10)、ハイパースレッディングを無効にします (CpuOptions.ThreadsPerCore=1)。aliyun ecs ModifyInstanceAttribute --region cn-hangzhou \ --InstanceId i-bp1****** \ --CpuOptions.Core 10 \ --CpuOptions.ThreadsPerCore 1主なパラメータの説明:
StartInstance API を呼び出して ECS インスタンスを再起動します。
aliyun ecs StartInstance --region cn-hangzhou \ --InstanceId i-bp1******
関連トピック
CPU オプションを変更した後、システム安定性テストを実行して、システムが期待どおりに動作することを確認してください。負荷テストまたはアプリケーション固有のテストを実行して、システムの応答とパフォーマンスを観察してください。
ECS インスタンスが作成された後、そのパフォーマンスメトリックとリソース使用率を監視し、必要に応じて最適化できます。詳細については、「インスタンスのモニタリング情報の表示」をご参照ください。
仮想化、マルチスレッドプログラミング、ハイパフォーマンスコンピューティングなどのシナリオでは、CPU トポロジーを表示および変更 (
CpuOptions.TopologyType) して、ECS インスタンスのパフォーマンスを向上させ、並列性を高め、リソース割り当てを最適化できます。


