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 で、ランキューの状態を確認してみます!」
参考リンク
システムパフォーマンス関連記事の目次
システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。