とても良い質問です。
Kubernetes などでよく出てくる 「CPUリソース単位の 1m(ミリコア)」 という概念は、
CPU使用量を「物理コアの1000分の1単位」で表したものです。
では「1mコアの状態」とは、CPUがどのように使われているのか、内部の動きまで含めて説明します。
1. 「1mコア」とは何か
例:
| 表記 | 意味 | 物理CPU換算(1コア=100%の場合) |
|---|
| 1000m | 1コア分 | 100%使用 |
| 500m | 0.5コア分 | 50%使用 |
| 250m | 0.25コア分 | 25%使用 |
| 1m | 0.001コア分 | 0.1%使用 |
2. 「1mコア」のときCPUはどうなっているのか?
CPUは「1mコアを1/1000個だけ物理的に使っている」というわけではありません。
実際には スケジューラ(CFS:Completely Fair Scheduler) が CPU時間を制御しています。
内部的な仕組み
つまり「1mコアで動作している」とは、
CPU時間のうち 0.1% の割合だけ、そのコンテナ(またはプロセス)に割り当てられている状態
を意味します。
3. 具体的なイメージ(1秒間あたり)
1コアCPUの時間 = 1秒間で 1000ミリ秒
1000mコア → 1秒間フルで動作(1000ms)
500mコア → 約0.5秒(500ms)動作し、残り0.5秒は他のタスクに割り当て
1mコア → 約1msだけCPUを使い、残りの999msは他タスク
→ つまり、CPUが細かく時間分割されてスケジューリングされている状態です。
4. Kubernetesでの意味
Kubernetesでは、Podのリソース制御に以下を指定できます。
resources: requests: cpu: 100m limits: cpu: 500m
意味:
実際の挙動
5. 重要なポイント
| 観点 | 説明 |
|---|
| 物理的な分割ではない | CPUコアを物理的に1/1000に分けているわけではなく、スケジューラが時間を制御 |
| 共有リソース | 複数Pod/コンテナが同じCPUを時間分割して共有 |
| スレッド数と関係あり | 1コア=1スレッドの場合は単純だが、ハイパースレッディングでは2倍の論理コアを扱う |
| 実測値は変動する | 他プロセスの負荷やカーネル制御によって多少の揺らぎがある |
6. まとめ
| 項目 | 内容 |
|---|
| 単位 | 1m = 1/1000コア = 0.1% CPU時間 |
| 管理方法 | Linux CFS(スケジューラ)によるCPU時間制御 |
| 実際の意味 | 「CPUを1コアの1000分の1の時間だけ使える」状態 |
| Kubernetesでの用途 | PodのCPUリクエスト・リミット設定単位 |
| メリット | 細かくCPUリソースを制御でき、複数Podの公平な実行が可能 |
この記事へのコメント