前述の「厨房」の例えで、物理CPU → コア → スレッド → 論理CPU の関係を1枚の図で押さえる。
【 1物理CPU / 2コア / 各2スレッド の例 】
┌──────────── 物理CPU(厨房 = チップ1個)────────────┐
│ │
│ ┌── コア0(料理人)──┐ ┌── コア1(料理人)──┐ │
│ │ 手 手 │ │ 手 手 │ │
│ │ (Th0) (Th1) │ │ (Th2) (Th3) │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
└────────────────────────────────────────────────────┘
論理CPU の数 = 手(スレッド)の総数 = 4
= OS からは「CPUが4つある」ように見える
= vCPU 4 と同じ意味
- 物理CPU:チップ1個(厨房) → PCやCloud Runの1コンテナは基本これが1つ
- コア:チップ内の頭脳(料理人)。「本当に同時に計算できる数」の上限を決める
- スレッド:1コアが同時に回せる作業ライン(手)。SMT/ハイパースレッディングで1コア=2手など
- 論理CPU(= vCPU):手の総数。OSがタスクを割り当てる単位であり、
cpuやCPU数の設定値はこれを指す
ポイント:設定画面の「CPU数」「cpu: “2”」は、コア数ではなく論理CPU(手=スレッド)の数。 「1物理CPU / 4コア / 各2スレッド」なら、指定できる論理CPUは最大 8。
Cloud Run の cpu: "2"
- アプリに 「論理CPU(作業ライン)を2つ」 割り当てる設定
- = 手が2本ある = タイムスライスで回す「土俵」が2つある、というイメージ
- 「CPUが1つでコア数が2つ」と捉えても実用上は問題ないが、正確には「論理CPU(vCPU)が2つ」
- 裏側(データセンター)の巨大な物理CPUから「2手分」を切り出して貸してくれている状態
- アプリから見れば「論理CPUが2つあるマシン」に見えるので、そう理解しておけばよい
アプリ(OS)から見える世界 クラウドの裏側(実態)
┌──── 割り当て分 ────┐ ┌───── 巨大な物理CPU ─────┐
│ 論理CPU0 論理CPU1 │ ◀─ 切り出し ─ │ ▢▢ ▢▢ ▢▢ ▢▢ ▢▢ ... │
│ (手1) (手2) │ │ (多コア・多スレッドの山) │
└────────────────────┘ └─────────────────────────┘
cpu: "2"
= 論理CPU 2つ = vCPU 2
- 論理CPUが2つあるので、2つのプロセスを本当に同時に動かせる(=並列 / parallelism)
- 対して、1つの論理CPU上でタイムスライスによって切り替えながら動かすのは「見かけの同時実行」(=並行 / concurrency)
cpu: "2"にする = この並列度(同時に走らせられる本数)を2に増やす、ということ