そもそもCPUって方?
こちらのサイトをご覧ください。(非常に親切でわかりやすいです。)
本題のvCPUについて
一言でいうとvCPU(仮想のCPU)。バーチャルCPU。
仮想化技術のもとで成り立っている。
ゲストOSから見える仮想的なCPUコアのこと。
当然の話ではあるが、スレッド数やメモリーの量は物理的なリソースに依存。
よくPCに搭載される情報でCPUのコア数やスレッド数が表示されてると思う。
もちろん、AWSにもIntel製のCPUが存在していてコア数やスレッド数が決まっている。また、Intel製のCPUはハイパースレッディングを利用していてコア数の2倍のスレッドを処理可能。
100超えのvCPUも可能
クラウドならではですよね。
16コア32スレッドのかなり高性能なパソコンもawsで購入できる!
CPUの一般的なコア数と用途の肌感覚(トグルになってます。)
・1~2コア/1~2スレッド
最近は全く見ない、メール、ブラウジング程度にしか使えない。
・4コア/4~8スレッド
普通に事務作業する文には全然問題ない。オフィスソフトやWeb会議など
・6~8コア/12~16スレッド
モデラーとかゲーム好きが買う高性能PC。
・10コア以上/20スレッド以上
個人で持ってる人はほとんどいないと思う。
大規模なデータ解析とかわりと大規模なマイクラサーバー運営してますみたいな人(?)
人気なのはやはりIntel製!
実際、EC2インスタンスでも汎用性が高いのはIntel製のXeonシリーズ。
多くのデータセンターでも採用されている。
ハイパースレッディングの関係上、表記されているvCPUのコア数の2倍のスレッド数=vCPUの数。
→性能過剰の恐れ、性能低下(仮想リソース > 物理リソース)
chatGPTに噛み砕いた説明を求めてみた。(トグルになってます。)
ハイパースレッディングとvCPUの関係
ハイパースレッディング(Hyper-Threading)は、Intel社の技術で、1つの物理コアが同時に2つのスレッドを処理できるようにするものです。これにより、OSや仮想環境からは、物理コア数の2倍の論理コア(vCPU)として認識されます。例えば、4つの物理コアを持つCPUでは、ハイパースレッディングにより8つのvCPUが提供されます。
性能過剰の意味
「性能過剰になってしまう」という表現は、vCPUの数が物理コア数の2倍になることで、実際の物理リソース以上に仮想リソースが割り当てられ、期待した性能が得られない可能性を指していると考えられます。ハイパースレッディングにより、各物理コアは2つのスレッドを処理できますが、物理コアのリソース(演算ユニットやキャッシュなど)は共有されます。そのため、全てのvCPUが同時に高負荷の処理を行うと、物理コアのリソースが競合し、性能が低下する可能性があります。
適切なvCPUの割り当て
仮想環境でのvCPUの割り当ては、物理コアの数やワークロードの特性を考慮して行う必要があります。ハイパースレッディングにより、物理コア数の2倍のvCPUを割り当てることは可能ですが、常に性能が2倍になるわけではありません。むしろ、適切なバランスを取らないと、リソースの競合により性能が低下するリスクがあります。そのため、システムの負荷やアプリケーションの特性を考慮し、必要以上にvCPUを割り当てないことが重要です。
まとめ
ハイパースレッディング:1つの物理コアで2つのスレッドを同時に処理する技術。
vCPUの数:ハイパースレッディングにより、物理コア数の2倍として認識される。
性能過剰のリスク:vCPUを過剰に割り当てると、物理リソースの競合により性能が低下する可能性がある。
適切な割り当て:システムの負荷やアプリケーションの特性を考慮し、適切なvCPU数を設定することが重要。
このように、ハイパースレッディングとvCPUの関係を正しく理解し、適切なリソース割り当てを行うことで、システムの性能を最適化できます。
vCPU数の拡張もできる。
必要に応じてvCPUの数を後付けできる。
スケールアップのしやすさがクラウドのメリットでもありますね。
vCPUやインスタンス選択の肌感覚について
1~2 vCPU:
用途: 低トラフィックのウェブサイト、まずはこれで試してみてってやつ。(個人開発)
インスタンスタイプ例: t2.micro、t3.micro、t3a.microなど。
特徴: コストを抑えつつ、基本的な処理能力を提供。バースト可能なパフォーマンスを持つインスタンスが多く、継続的な高負荷には不向き。
4~8 vCPU:
用途: 中程度のトラフィックを持つウェブアプリケーション、ミドルサイズのデータベースサーバー、コンテナオーケストレーション。(企業向け)
インスタンスタイプ例: m5.xlarge、m5.2xlarge、c5.xlarge、c5.2xlargeなど。
特徴: コンピューティングリソースとメモリのバランスが良く、一般的なビジネスアプリケーションに適している。
16~32 vCPU:
用途: 高トラフィックのウェブアプリケーション、大規模なデータベース、ビッグデータ処理、機械学習モデルのトレーニング。(ここからコストもかなり上がってくる。)
インスタンスタイプ例: m5.4xlarge、m5.8xlarge、r5.4xlarge、r5.8xlargeなど。
特徴: 高い計算能力とメモリ容量を持ち、リソース集約型のアプリケーションやデータ処理に適している。
48 vCPU以上:
用途: ハイパフォーマンスコンピューティング(HPC)、大規模なデータ解析、リアルタイム処理、ディープラーニングのトレーニング。(研究用?)
インスタンスタイプ例: c5.12xlarge、c5.24xlarge、p3.16xlargeなど。
特徴: 非常に高い計算能力を提供し、専門的かつ高負荷なワークロードに対応可能。ただし、コストも高くなるため、必要性を十分に検討することが重要。
参考文献(参照日2025年2月16日)