特定のECS (Elastic Compute Service) インスタンスタイプに対して、RunInstances操作を呼び出してインスタンスを作成するときにCPUオプションを指定できます。 CPUオプションは、物理CPUコアの数とコアあたりのスレッド数によって異なります。 アプリケーションのパフォーマンス要件に基づいて、ECSインスタンスの仮想CPU (vCPU) 数 (物理コア数およびコアあたりのスレッド数) を変更して、パフォーマンスを向上させ、コストを効果的に管理できます。 たとえば、メモリ集約型のビジネスシナリオでは、Hyper-Threading (HT) を無効にしてvCPUの数を減らすことができます。 これにより、メモリとCPUの比率を向上させ、ソフトウェアライセンスのコストを削減できます。
CPU と vCPU
CPUは中央処理装置の略である。 単一のCPUに複数の物理コアを含めることができます。 HT技術は、各物理コアに対して2つの論理処理コアを作成することができる。 vCPUは、ECSインスタンスの仮想処理コアです。
Alibaba Cloud ECSは、x86アーキテクチャのHTに基づくマルチスレッドをサポートしています。 HTを使用すると、単一の物理コアで2つのスレッドを同時に実行できます。 各スレッドはvCPUと見なすことができます。
次の表に、ECSインスタンスのCPUオプションを示します。
CPUオプション | APIパラメーター | 説明 | シナリオ | サポートされているインスタンスタイプ |
物理CPUコアの数 | CpuOptions.Core | 使用する物理CPUコアの数を指定します。 | 使用する物理CPUコアの数を減らして、インスタンスのメモリとCPUの比率を上げることができます。 これにより、請求可能なアイテムの数とソフトウェアライセンスのコストを削減できます。 | 詳細については、このトピックの「インスタンスタイプの制限」をご参照ください。 |
コアあたりのスレッド数 | CpuOptions.ThreadsPerCore | コアあたりのスレッド数を指定します。 1の値は、CPU上でHTを無効にし、1以外の値は、CPU上でHTを有効にする。 vCPUの数=物理CPUコアの数 × コアあたりのスレッド数。 | ほとんどの場合、ECSインスタンスタイプのデフォルト設定は十分なパフォーマンスを提供します。 以下のシナリオでは、HTを無効にできます。
| 詳細については、このトピックの「インスタンスタイプの制限」をご参照ください。 |
課金
CPUオプションを指定しても追加料金は発生しません。
インスタンスタイプの制限
次のインスタンスファミリーは、カスタムCPUオプションをサポートしています。
次のリンクをクリックして、各インスタンスタイプの物理CPUコア数 (CpuOptions.Core) とコアあたりのスレッド数 (CpuOptions.ThreadsPerCore) のデフォルト値と有効値を確認します。 リストされていないインスタンスタイプは、カスタムCPUオプションをサポートしていません。
CPUオプションの指定
CPUオプションはECSインスタンスの作成時にのみ指定でき、インスタンスの作成後にCPUオプションを変更することはできません。
インスタンスの設定をアップグレードまたはダウングレードすると、インスタンスのカスタムCPUオプションがデフォルトのCPUオプションにリセットされます。
RunInstancesを呼び出して、ECSインスタンスのCPUオプション (物理CPUコアの数とコアあたりのスレッド数) を指定できます。 ECSインスタンスのvCPU数=物理CPUコア数 × コアあたりのスレッド数。
物理CPUコアの数
インスタンスのインスタンスタイプによって、インスタンスで使用可能な物理コアの数が決まります。 CpuOptions.Coreパラメーターを設定して、値の範囲内で有効にする物理CPUコアの数を指定できます。 値の範囲外の値を設定することはできません。 各インスタンスタイプの値の範囲については、このトピックの「インスタンスタイプの制限」をご参照ください。
たとえば、ecs.g6.2xlargeインスタンスの物理CPUコア数の有効な値は2と4です。 RunInstancesを呼び出してecs.g6.2xlargeインスタンスの物理CPUコア数を指定する場合、CpuOptions.Coreパラメーターを2に設定できます。 これは、インスタンスが2つの物理コアを提供することを示します。
コアあたりのスレッド数
ECSインスタンスのコアあたりのスレッド数は、CpuOptions.ThreadsPerCoreパラメーターによって決定されます。 値の範囲内でコアごとのスレッド数を指定できますが、値の範囲外の値を設定することはできません。 各インスタンスタイプの値の範囲については、このトピックの「インスタンスタイプの制限」をご参照ください。
CpuOptions.ThreadsPerCoreパラメーターを1以外の値に設定した場合、HTは有効になり、コアあたりのスレッド数は設定した値になります。
次のサンプルリクエストでは、Alibaba Cloud CLIでCPUスレッド数を指定する方法を説明します。 Alibaba Cloud ECS SDKを使用する場合は、SDKを最新バージョンにアップグレードします。
説明デフォルトでは、ECSインスタンスでHTが有効になっています。
aliyun ecs RunInstances --RegionId cn-hangzhou --CpuOptions.Core 2 --CpuOptions.ThreadsPerCore 2 --ImageId ubuntu_18_04_64_20G_alibase_20190624.vhd --InstanceType ecs.g6.xlarge --SecurityGroupId sg-bp67acfmxazb4ph*** --VSwitchId vsw-bp1s5fnvk4gn2tws03*** --Amount 1 --SystemDisk.AutoSnapshotPolicyId sp-bp67acfmxazb4ph***
上記のサンプルリクエストでは、ecs.g6.xlargeインスタンスの物理コア数が2に設定され、HTが有効になっており、コアあたりのスレッド数が2に設定されています。 インスタンスの作成後、インスタンスには4つのvCPUがあります。 vCPUの数は、次の式を使用して計算されます: 2 × 2 = 4。
CpuOptions.ThreadsPerCoreパラメーターを1に設定すると、HTは無効になり、コアあたりのスレッド数は1になります。
次のサンプルリクエストでは、Alibaba Cloud CLIでHTを無効にする方法を説明します。 Alibaba Cloud ECS SDKを使用する場合は、SDKを最新バージョンにアップグレードします。
aliyun ecs RunInstances --RegionId cn-hangzhou --CpuOptions.Core 2 --CpuOptions.ThreadsPerCore 1 --ImageId ubuntu_18_04_64_20G_alibase_20190624.vhd --InstanceType ecs.g6.xlarge --SecurityGroupId sg-bp67acfmxazb4ph*** --VSwitchId vsw-bp1s5fnvk4gn2tws03*** --Amount 1 --SystemDisk.AutoSnapshotPolicyId sp-bp67acfmxazb4ph***
上記のサンプルリクエストでは、物理コアの数は2に設定され、HTは無効になっています。 1つの物理コアで実行できるスレッドは1つだけです。 インスタンスが作成された後、インスタンスには2つのvCPUがあります。これは、インスタンスの物理CPUコアの数に等しくなります。
CPUオプションの表示
ECSインスタンスに指定したCPUオプションを表示するには、DescribeInstances操作を呼び出します。 Alibaba Cloud ECS SDKを使用する場合は、SDKを最新バージョンにアップグレードします。
次の例では、Alibaba Cloud CLIでインスタンスのCPUオプションを表示する方法について説明します。 リクエストの例
aliyun ecs DescribeInstances --InstanceIds '["i-bp19rxmzeocge2z57***"]' --output cols=CpuOptions rows=Instances.Instance[]
レスポンス例:
CpuOptions
----------
map[CoreCount:1 Numa:ON ThreadsPerCore:2]
サンプル応答では、CoreCount:1
は物理CPUコアの数が1であることを示し、ThreadsPerCore:2
はコアあたりのスレッド数が2であることを示します。
関連ドキュメント
ECSインスタンスの作成後、インスタンスに対してシステム安定性テストを実行して、インスタンスが期待どおりに実行できることを確認することを推奨します。 特定のロードテストまたはアプリケーションシナリオテストを実行して、インスタンスの応答とパフォーマンスを確認できます。
ECSインスタンスの作成後、インスタンスのパフォーマンスメトリックとリソース使用率を監視し、ビジネス要件に基づいて設定を最適化できます。 詳細については、「ECSインスタンスのモニタリング情報の表示」をご参照ください。
仮想化環境、マルチスレッドプログラミング、ハイパフォーマンスコンピューティングなどのさまざまなシナリオで、
CpuOptions.TopologyType
パラメーターを設定してECSインスタンスのCPUトポロジを変更し、ECSインスタンスのパフォーマンスを向上させ、並列処理を改善し、リソース割り当てを最適化できます。