CPUリソース単位における1mコアとは、コアがどのような状態になっているんですか?

nathan-anderson-KHSPGJ3zP0M-unsplash.jpg

質問

CPUリソース単位における1mコアとは、コアがどのような状態になっているんですか?


解答

とても良い質問です。
Kubernetes などでよく出てくる 「CPUリソース単位の 1m(ミリコア)」 という概念は、
CPU使用量を「物理コアの1000分の1単位」で表したものです。
では「1mコアの状態」とは、CPUがどのように使われているのか、内部の動きまで含めて説明します。


1. 「1mコア」とは何か

  • 1コア(=1000m) を基準に、1m(1ミリコア)=0.001コア を意味します。

  • つまり、「1m」は 1コアの0.1%の使用量 に相当します。

例:

表記意味物理CPU換算(1コア=100%の場合)
1000m1コア分100%使用
500m0.5コア分50%使用
250m0.25コア分25%使用
1m0.001コア分0.1%使用

2. 「1mコア」のときCPUはどうなっているのか?

CPUは「1mコアを1/1000個だけ物理的に使っている」というわけではありません。
実際には スケジューラ(CFS:Completely Fair Scheduler) が CPU時間を制御しています。

内部的な仕組み

  • OSのCPUスケジューラが「CPU時間の配分割合」を調整します。

  • 例えば、1コア=1000m とすると、

    • 1m = CPU時間の 0.1% に相当します。

つまり「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

意味:

  • requests: 最低限保証されるCPUリソース(例:100m → 0.1コア)

  • limits: 最大使用できるCPUリソース(例:500m → 0.5コア)

実際の挙動

  • 100m のリクエスト → スケジューラが「このPodには0.1コア必要」と判断してノードに配置

  • 500m のリミット → CPUを使いすぎると CFS (Linux Scheduler) が CPU時間を制限


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の公平な実行が可能




Linux+コマンド入門 --シェルとコマンドライン、基本の力 [ 西村 めぐみ ]

価格:2948円
(2025/11/17 20:21時点)
感想(0件)


たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】【電子書籍】[ 吉田拳 ]

価格:2178円
(2025/8/22 21:02時点)
感想(0件)


 



この記事へのコメント