画像ツール一覧

CPU

Central Processing Unit

PC基礎

CPU(Central Processing Unit)は、コンピュータの「頭脳」にたとえられる、命令を実行するパーツです。メモリからプログラムの命令を受け取り、解読・演算・制御を連続して行うことで、システム全体の動作を取り仕切ります。

🐾 猫で例えると?

鼻先の猫じゃらしをじっと見つめるアメリカンショートヘア
鼻先の猫じゃらしを見つめるアメショ。次の動きを考えているよう

鼻先の猫じゃらしに集中するアメショ。「いつ、どの向きに手を出そうか」と頭をフル回転させているようです。この「情報を受けて、次の動きを決める頭脳役」をCPUに見立てます。実際のCPUは、プログラムの命令に従って計算やデータの受け渡しを行います。

🐾 PR

💻 IT現場における「CPU」とは?

CPUは命令を実行しますが、アプリの速度はストレージ、通信、メモリ待ちにも左右されます。CPU使用率100%は、計算処理で能力を使い切っている正常な状態の場合もあります。応答時間の悪化や待ち行列、コア別の使用率を合わせ、CPUが全体の処理を遅くしている箇所(ボトルネック)なのかを確かめます。

⚠️ CPUの仕組みと注意点

現代のCPUは、複数の「コア」を持つマルチコアプロセッサが主流です。これは、頭脳が複数あるようなもので、複数の処理を同時にこなす(並列処理)ことが可能です。しかし、プログラム側が並列処理に対応した設計(マルチスレッドなど)になっていなければ、1つのコアだけが限界まで働き、他のコアは遊んでいるという非効率な状態に陥ります。

処理の負荷と熱問題

重いデータ処理や無限ループなどが発生すると、CPUはフル稼働し、発熱します。サーバーでもPCでも、熱暴走を防ぐためにサーマルスロットリング(意図的な性能低下)が働くため、リソースを無駄に食い潰すアルゴリズムは避けるべきです。

# Python 3。ファイルとして保存して実行する例
from concurrent.futures import ProcessPoolExecutor

def heavy_computation(number):
    return sum(i * i for i in range(number))

if __name__ == "__main__":
    numbers = [100_000, 100_000, 100_000, 100_000]
    with ProcessPoolExecutor(max_workers=2) as executor:
        results = list(executor.map(heavy_computation, numbers))
    print(results)

この例は別プロセスへ計算を分け、結果を取り出して完了を確認します。処理が小さいと、プロセス起動やデータ受け渡しの費用が上回り、順番に実行するより遅くなることもあります。並列化の効果は実際の入力で測定しましょう。

🛠️ CPUを賢く使うためのポイント

CPUを使い続ける処理と、通信などの完了を待つ処理を分けて、設計や監視の方法を選びます。

猫じゃらしへ集中するアメショのように、CPUが忙しい場面にも理由があります。アプリが遅いときは、CPU使用率と応答時間を一緒に見て、計算に時間がかかっているのか、通信やストレージを待っているのかを切り分けましょう。