[アップデート] Amazon EC2 の CPU オプションの「起動時のみ」と「インスタンスタイプ変更時は不可」の一部制限事項がなくなりました

[アップデート] Amazon EC2 の CPU オプションの「起動時のみ」と「インスタンスタイプ変更時は不可」の一部制限事項がなくなりました

Clock Icon2024.10.06

いわさです。

Amazon EC2 インスタンスには CPU オプションというものがあります。
こちらのオプションを指定することで、アクティブ vCPU の数や 1 コアあたりのスレッド数(vCPU)をコントロールすることが出来ます。

A4D1959C-8E9C-45E9-BD44-3B728AEB3351.png

これによって vCPU 数に応じてライセンスが発生す製品の費用をコントロールしたり、シングルスレッドを強制化したい場合などに対処することが出来ます。

https://dev.classmethod.jp/articles/amazon-ec2-optimizing-cpu-options-for-optimizing-byol-lisence-fee/

従来このオプションはいくつか制限事項があり、新規 EC2 インスタンスの起動時のみ指定が可能だったり、あるいはインスタンスタイプの変更時には自動的に新しいインスタンスタイプのデフォルト CPU オプションを選択してしまっていたりしました。

これが先日のアップデートで緩和され、起動後にも CPU オプションが変更出来たり、インスタンスタイプ変更時にも指定が出来るようになりました。

https://aws.amazon.com/about-aws/whats-new/2024/10/amazon-ec2-optimize-cpus-post-instance-launch/

起動後に CPU オプションを変更する方法

インスタンスの設定メニューに「CPU オプションの変更」が追加されています。
こちらから設定変更が可能なのですが、CPU オプションを変更するためにはインスタンスが停止中である必要があります

30EA6468-C7F3-4207-8043-8234FA2E2A21.png

停止中の場合は次のように選択可能でした。

69ECA53F-0178-4FD7-B2B6-2AD0F2DDC797.png

CPU オプションの変更を開くと、次のように CPU オプションを無効化したり、オプションの各パラメータを調整することが出来ます。

8C79D965-2A0A-4DAF-A48F-32B293B7B7A7.png

オプション変更後、起動時に制限していた vCPU 数を確認することが出来ました。

E443E39C-2E9F-4084-997C-6F4426707B34.png

また、各インスタンスに接続してツールからスレッド数などの確認も可能です。
Linux の場合はlscpuコマンドを、Windows の場合はタスクマネージャーから確認出来ます。今回は Amazon Linux 2023 です。

以下は起動時に CPU オプションを指定した直後の状態です。
t3.2xlarge ですが、CPU 数が 2、スレッド数が 1 コアあたり 1 と確認出来ます。

sh-5.2$ lscpu
Architecture:             x86_64
  CPU op-mode(s):         32-bit, 64-bit
  Address sizes:          46 bits physical, 48 bits virtual
  Byte Order:             Little Endian
CPU(s):                   2
  On-line CPU(s) list:    0,1
Vendor ID:                GenuineIntel
  Model name:             Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
    CPU family:           6
    Model:                85
    Thread(s) per core:   1
    Core(s) per socket:   2
:

以下は CPU オプションの変更後です。(同一インスタンス)
反映されていることを確認しました。

sh-5.2$ lscpu
Architecture:             x86_64
  CPU op-mode(s):         32-bit, 64-bit
  Address sizes:          46 bits physical, 48 bits virtual
  Byte Order:             Little Endian
CPU(s):                   8
  On-line CPU(s) list:    0-7
Vendor ID:                GenuineIntel
  Model name:             Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
    CPU family:           6
    Model:                85
    Thread(s) per core:   2
    Core(s) per socket:   4

インスタンスタイプ変更時の設定方法

なお、インスタンスタイプ変更時は次のように高度な詳細エリアが同時に表示されるようになっており、こちらから CPU オプションを指定することが出来ます。

D9D32DC7-1630-4CD4-B60A-A58C9B1A9369.png

サポートされていないインスタンスタイプの場合は指定するとエラーになる

CPU オプションは全てのインスタンスタイプで指定出来るわけではなく、一部のインスタンスタイプではサポートされていません。
インスタンスタイプごとにサポートされている内容は次のドキュメントにまとまっています。

CPU オプションが使えるものでも、Graviton や AMD についてはついてはマルチスレッドの設定変更は出来ません。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html

これらのサポートされていないインスタンスは、起動時であればそもそも CPU オプションが指定出来ませんでした。

530B55D4-E034-43D3-AD42-98A9AE246B47.png

ただし、今回の CPU オプション変更については途中まで操作が出来ます。

D790B9AE-1667-45CD-BF10-0B1B249B6664.png

最後に変更を確定するところでエラーが表示されるので、従来と変わらずにサポートされていないインスタンスタイプでは使えないと認識しておきましょう。

9E7A1B0C-FA92-40DF-B59E-52790E6F16D8.png

さいごに

本日は Amazon EC2 の CPU オプションの「起動時のみ」と「インスタンスタイプ変更時は不可」の一部制限事項がなくなったので設定方法など確認してみました。

存在は知っていたのですが、あまり私は案件で使う機会などがありませんでした。
そのため、起動後は変更出来ないとか、従来はデフォルト CPU オプションに戻るしかないという従来の制限事項も知りませんでした。
これまではオプションやインスタンスタイプの変更をしたい場合は、AMI からの復元起動で指定するしかなかったということですよね。一部の方には便利になったかもしれません。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.