CPU の動作モデル
理解のために小咄形式でまとめました。
システムパフォーマンス関連記事の目次
登場人物
- 太郎(後輩):入社1年目の若手エンジニア。
- 花子(先輩):システムエンジニア歴3年の先輩。
場面:オフィスの開発ルーム
太郎が CPU の動作モデル
に関する資料を見ながら、花子に質問する。
太郎:「花子先輩、CPU の動作
って、 具体的にどんな仕組みで動いているのか
いまいちピンとこないんです…。」
花子:「なるほどね。CPU の動作原理をシンプルなモデルで考える
ことが パフォーマンスを理解する鍵
になるわ。 3つの重要な要素
に分けて説明するわね。」
CPU の動作モデル
花子:「CPU の動作モデル
を理解するために、 3 つの主要なコンセプト
を押さえておくことが大切よ。」
- CPU のアーキテクチャ
- CPU のメモリキャッシュ
- CPU のランキュー(Run Queue)
1. CPUのアーキテクチャ
花子:「まず CPU のアーキテクチャ
について説明するわね。」
- CPU は
1 つ以上のコア
を持ち、それぞれ複数のハードウェアスレッド
を持つことがある。 - 例えば、
4 コアの CPU
で各コアが 2 つのハードウェアスレッドを持つ
場合、8 つの論理 CPU
として OS から見える。 - OS はこの
論理 CPU
に対してプロセスやスレッドをスケジューリングする。
「これは キッチンのシェフ
みたいなもので、 1 人のシェフ(コア)が 2 つの手(スレッド)を使って料理する
のと同じね。」
太郎:「なるほど! ハードウェアスレッドの数だけ並行処理ができる
んですね!」
2. CPUのメモリキャッシュ
花子:「次に、CPU のメモリキャッシュ
について話すわ。」
- CPU は、メモリアクセスを高速化するために
キャッシュ
を持っている。 - キャッシュは
L1, L2, L3
の 3 段階に分かれていて、L1 が最も高速でサイズが小さく、L3 が最も遅くてサイズが大きい
。 - CPU がデータを取得するときは、
まず L1 → L2 → L3 → メインメモリ(RAM)
の順で探索する。 - キャッシュミスが発生すると、より下層のキャッシュやメモリへのアクセスが発生し、遅延が増加する。
「これは 冷蔵庫と食材の保管場所
みたいなもので、 L1 キャッシュはすぐ手の届く調味料、L2 は冷蔵庫、L3 は倉庫
のようなイメージよ。」
太郎:「つまり、L1 にデータがあれば超高速だけど、メインメモリに行くと遅くなる
ってことですね!」
3. CPUのランキュー(Run Queue)
花子:「最後に、CPU のランキュー
について話すわ。」
- CPU のランキューは、
CPU の処理待ちキュー
のこと。 - OS のスケジューラは、
各スレッドを論理 CPU に割り当てるためにランキューを管理
する。 - ランキューが
長くなると CPU の待ち時間が増え、システムのレスポンスが悪化する
。 - 例えば、
top コマンド
でload average
を見れば、ランキューの混雑度
を確認できる。
「これは レストランのオーダーキュー
みたいなもので、 待ち行列が長くなると料理が出てくるのが遅くなる
のと同じよ。」
太郎:「なるほど! CPU がすぐに処理できないと、ランキューにたまって遅くなる
んですね!」
花子:「これらの CPU の動作モデル
を レストランのオペレーション
に例えると、こんな感じね。」
-
CPU のアーキテクチャ →
レストランのシェフとキッチンの数
シェフ(コア)が多いほど、同時に多くの料理が作れる。
シェフが2つの手(スレッド)を使うことで、効率よく作業できる。
-
CPU のメモリキャッシュ →
冷蔵庫と食材の配置
手元にある調味料(L1 キャッシュ)が最も早い。
冷蔵庫(L2 キャッシュ)まで行くと少し遅い。
倉庫(L3 キャッシュ)に取りに行くと、時間がかかる。
-
CPU のランキュー →
注文の待ち行列
キッチンがフル稼働でも、オーダーが多すぎると待ち時間が発生する。
注文(タスク)が増えすぎると、店全体の回転率が悪くなる。
太郎:「めちゃくちゃ分かりやすいです! CPU の負荷が高くなると、キューが詰まってシステムが遅くなる仕組み
がよく分かりました!」
まとめ
花子:「CPU の 動作モデル
を理解すると、 システムのパフォーマンスを分析するときに、どこがボトルネックになっているのかを把握しやすくなる
わ。」
太郎:「ありがとうございます! `top コマンドや htop で、ランキューの状態を確認してみます!」
参考リンク
システムパフォーマンス関連記事の目次
システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。