0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CPUを「物理」から理解する学習ロードマップ

0
Posted at

なぜこの順番で学ぶのか

サーバーエンジニアとして最終的に目指すのは、

  • CPU使用率が高い理由
  • なぜ4コア必要なのか
  • なぜメモリが足りないのか
  • なぜFastCGI Cacheで速くなるのか

仕組みから説明できることである。

そのためには、WordPressだけを見るのではなく、CPUの物理的な動作まで理解するとすべてが一本の線でつながる。


コンピュータは7階層で理解する

WordPress
    ↓
PHP
    ↓
C言語
    ↓
機械語(CPU命令)
    ↓
CPU(コア)
    ↓
論理回路
    ↓
トランジスタ
    ↓
電子(電気)

WordPressで実行している処理も、最終的には電子の流れになる。


レベル0 電子

理解すること

コンピュータは電気しか理解できない。

電気が流れる

↓

1
電気が流れない

↓

0

つまり、

すべてのデータは1と0で表現される。


レベル1 トランジスタ

CPUの中には数十億個のトランジスタがある。

トランジスタは

電気を流す

または

止める

だけを行う。

つまり

ON

OFF

しかできない。


レベル2 論理回路

トランジスタを組み合わせることで

  • AND
  • OR
  • NOT
  • XOR

などの論理回路ができる。

さらに組み合わせると

  • 足し算
  • 引き算
  • 比較
  • 掛け算

ができるようになる。

ここでCPUの「計算能力」が生まれる。


レベル3 CPU

CPUは非常に単純な命令しか理解できない。

例えば

  • ADD(足し算)
  • SUB(引き算)
  • MOV(コピー)
  • LOAD(メモリから読む)
  • STORE(メモリへ書く)
  • CMP(比較)
  • JMP(ジャンプ)

これらを1秒間に数十億回実行している。

つまり、

CPUを使うとは、CPU命令を大量に実行すること。


レベル4 C言語

例えば

a = b + c;

と書いてもCPUは理解できない。

コンパイラが

LOAD b

LOAD c

ADD

STORE a

というCPU命令へ変換する。

つまり

C言語は

CPU命令を書きやすくした言語である。


レベル5 PHP

WordPressはPHPで書かれている。

例えば

echo $a + $b;

PHPエンジンが

C言語

CPU命令

へ変換する。

つまりPHPも最終的にはCPU命令になる。


レベル6 Linux

LinuxはCPUを管理している。

役割は

  • プロセス管理
  • スレッド管理
  • CPUスケジューリング
  • メモリ管理

例えば

PHP Worker①

PHP Worker②

PHP Worker③

があった場合、

Linuxが

Core1

↓

Worker①実行

↓

Core2

↓

Worker②実行

のようにCPUへ割り当てている。


レベル7 WordPress

利用者

nginx

PHP-FPM

PHP

SQL

HTML生成

返却

この一連の処理も

最終的には

PHP

↓

C言語

↓

CPU命令

↓

CPU

↓

論理回路

↓

トランジスタ

↓

電子

という流れになる。


「CPUを使う」とは何か

CPUを使うとは

「CPU命令を大量に実行している状態」

である。

例えば

  • if文
  • for文
  • 文字列結合
  • SQL結果の加工
  • JSON生成
  • HTML生成

これらはすべてCPU命令になり、

CPUが1つずつ実行している。


CPU使用率100%とは

CPU使用率100%とは、

CPUコアが実行すべき命令でいっぱいになっている状態。

CPUは

ADD

LOAD

STORE

CMP

JMP

などの命令を休みなく実行している。


今後の学習順

第1章

CPU・コア・スレッド

第2章

Linux(プロセス・スレッド・Scheduler)

第3章

nginx Worker

第4章

PHP-FPM Worker

第5章

WordPress内部

第6章

同時アクセス・待ち行列

第7章

FastCGI Cache・Redis・CDN

第8章

MariaDB

第9章

EC2設計


最終目標

サイトを見た瞬間に

利用者

↓

HTTP

↓

nginx

↓

PHP

↓

CPU

↓

MariaDB

↓

Storage

まで頭の中でイメージできること。

その上で

  • CPUは足りるか
  • メモリは足りるか
  • Workerは足りるか
  • キャッシュは必要か
  • EC2は何コア必要か

を自分で考えられるようになることが目標。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?