EC2サーバのハイパースレッディングをオフにする手法

2024/04/16

 オンプレミス環境で稼動してきた仮想サーバ群たちは、業務要件に応じて、CPUのハイパースレッディングを意図的にOFFにするケースもあるかと思いますが、クラウドリフトが盛んにおこなわれている今頃、ハイパースレッディングの状態がOFFのまま、クラウド上へ移行し、その状態を保ったまま実現できるかについて、本記事にて、検証踏まえて紹介していきたいと思います。

1.検証環境情報

クラウド環境:AWS
仮想サーバ:EC2
サーバスペック1:t3.xlarge(物理コア2 論理コア4)
サーバスペック2:t3.2xlarge(物理コア4 論理コア8)
OS:Red Hat Enterprise Linux release 9.3

仮説要件として
オンプレミス環境でハイパースレッディングOFFの状態で、物理コア4で稼動していた仮想サーバを同じくハイパースレッディングOFFのまま、AWSで稼動させることができるかどうかを検証します。

2.状態確認

まず、ハイパースレッディングON/OFFの状態をどうやって確認するかを紹介します。
EC2サーバにログインできた状態で、「lscpu」コマンドを実施、詳細解説は↓

Thread(s) per coreは物理コア1に対してのスレッド割り当て数となり、
上記表す値が2となっているということは、物理コア1に対し2スレッドが割り当てられていることが読み取れる。つまり、物理コア2、論理コア4はt3.xlargeのインスタンスだとわかる。

3.設定変更

仮説要件で立てたハイパースレッディングOFFのままにした状態で物理コア4で変更可能かどうかを確認していきます。物理コア4が必要となるため、EC2のスペックアップが必要となる。(物理コア4のインスタンスタイプが必要)、今回は、t3.2xlargeを採用し確認とする。実環境は適宜に選択。
まず、スペックアップ前に、EC2インスタンスタイプのカーネルパラメータを修正します。

修正対象ファイル:/etc/default/grub
grubの現状状態確認実施↓

インスタンスタイプスペックアップ後、物理コアが4となるために、パラメータ修正↓
追加パラメータ値:nr_cpus=4
※4は実環境に合わせて値を変更
パラメータ追加後の状態確認実施↓

nr_cpus=4になっていることを確認
grubファイル編集後、パラメータ有効化させるためには、grub.cfgを再生成させる必要があるため、
「grub2-mkconfig -o /boot/grub2/grub.cfg」コマンドを実行↓

最後に、boot時に読み込むgrubのcpus情報を確認

4.インスタンスタイプ変更

インスタンスタイプ変更手順は別途紹介しますが、本記事では省略する。

5.状態確認

t3.2xlargeへスペックアップした後の状態は、ハイパースレッディングOFFのまま(4vCPU)として起動されているかどうかを確認する。

EC2へログインできたあと、同様に「lscpu」コマンドを実施↓

Thread(s) per coreの値は、1へ変わりました。
物理コア1に対し1スレッドが割り当てられていることが読み取れる。t3.xlargeのインスタンスで本来であれば、CPU(s)が8になっているはずのところ、4になっていたため、物理コア4と一致しているのが分かります。

いかがでしょうか、ハイパースレッディングON/OFFの切替もAWS環境上でも自由に切替られる。思ったよりも簡易的な設定方法で実現できているのではないでしょうか。
本記事では、AWSへ移行に際し、少しでもお役に立てれば幸いです。