vCPU ぶいしーぴーゆー
簡単に言うとこんな感じ!
クラウドの仮想マシンに割り当てる「仮想のCPUコア」のこと。物理CPUの論理的な分割で、多いほど並列処理が速い。ただし「vCPU数=物理コア数」ではないから、ベンチマークで実力を確かめるのが大事だよ。
vCPUとは
vCPU(Virtual CPU)とは、仮想マシンに割り当てられる仮想的なCPU処理単位のことです。クラウドプロバイダーは物理サーバーの1つのCPUスレッド(または論理コア)を1vCPUとして提供することが多く、ハイパースレッディングを有効にした物理コアは2つのvCPUとして提供されます。
vCPU数は仮想マシンの並列処理能力に直結します。シングルスレッドのアプリケーションではvCPUが多くても効果は限定的ですが、Webサーバーのように多数の同時リクエストを処理する用途では、vCPUが多いほどスループットが向上します。
ただし、vCPUは物理CPUとは異なり「ノイジーネイバー問題」(同じ物理ホスト上の別VMのCPU使用率の影響を受ける)が起こることがあります。安定した性能が必要な場合はDedicated HostやベアメタルインスタンスでCPUを占有します。
vCPUと物理コアの関係
| 物理構成 | 論理コア数 | vCPU数(一般的) |
|---|---|---|
| 物理コア1(HT無効) | 1 | 1 vCPU |
| 物理コア1(HT有効) | 2(論理コア) | 2 vCPU |
| 物理コア64(HT有効) | 128 | 最大128 vCPU分 |
インスタンスサイズとvCPU数の例(AWS EC2 m7i系)
| インスタンス | vCPU | メモリ | 用途目安 |
|---|---|---|---|
| m7i.large | 2 | 8 GB | 小規模Webアプリ |
| m7i.xlarge | 4 | 16 GB | 中規模API |
| m7i.2xlarge | 8 | 32 GB | 中規模DBレプリカ |
| m7i.4xlarge | 16 | 64 GB | 大規模アプリ |
| m7i.16xlarge | 64 | 256 GB | 大規模DB・分析 |
| m7i.metal-48xl | 192 | 768 GB | ベアメタル相当 |
歴史と背景
インテルが2002年にHyperThreading(同時マルチスレッディング)を導入し、1つの物理コアで2スレッドを処理できるようになりました。これが「論理コア」の概念を生み、クラウドでのvCPU提供の基盤となりました。
2010年代後半から、AMDのEPYCプロセッサがコア密度・コスト効率でIntel Xeonを上回るようになり、AWSのm5aシリーズなどAMD搭載インスタンスが登場しました。さらに2018年以降はAWS GravitonのようなARMベースの独自プロセッサが「vCPUあたりのコスト効率」を大幅に改善しています。
vCPU数と処理性能の関係
関連する規格・RFC
| 規格 | 内容 |
|---|---|
| Intel VT-x / AMD-V | CPUレベルの仮想化支援機能の仕様 |
| NUMA(Non-Uniform Memory Access) | マルチソケットCPUのメモリアクセス最適化 |
関連用語
- 仮想マシン — vCPUが割り当てられる単位
- インスタンスタイプの選び方 — vCPU数を含むスペック選定
- ベアメタル — vCPUではなく物理CPUをそのまま使う形態
- ハイパーバイザー — vCPUを物理CPUにマッピングするソフトウェア
- GPUインスタンス — vCPUに加えてGPUコアを使うインスタンス