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?

Linux(OS)がWorkerをCPUコアに割り当てています。

0
Posted at

実はここを理解すると、CPU・Linux・PHP-FPM・nginxが全部つながります。

結論から言うと、

WorkerがCPUに命令するわけではありません。

Linux(OS)がWorkerをCPUコアに割り当てています。

ここが重要です。


登場人物を整理する

まず、それぞれ何者なのか整理しましょう。

利用者
    │
    ▼
nginx (プログラム)
    │
    ▼
php-fpm (プログラム)
    │
    ▼
PHP Worker (プロセス)
    │
    ▼
Linuxカーネル(OS)
    │
    ▼
CPU(Core)

それぞれ役割が違います。


CPUは何?

CPUは

計算しかできない部品

です。

CPUは

「次に何をすればいい?」

と待っています。

CPU自身は

  • WordPress
  • nginx
  • PHP

を知りません。

ただ命令を実行するだけです。


PHP Workerとは?

PHP Workerは

Linux上で動いている1つのプログラム(プロセス)

です。

例えば

ps aux | grep php-fpm

すると

php-fpm
php-fpm
php-fpm
php-fpm

たくさん表示されます。

これ全部

Workerです。


Linuxは何をしている?

Linux(OS)が

Worker①

Worker②

Worker③

Worker④

を管理しています。

そしてCPUが空くと

Core1

↓

Worker①実行

少し経つと

Core1

↓

Worker②実行

というように

OSが切り替えています。

これを

スケジューリング

といいます。


WorkerがCPUを使うとは?

よく

WorkerがCPUを使う

と言いますが、

正確には

Linuxが

Workerを

CPUコアで

実行している

です。


イメージ

会社で例えると

CPU

↓

社員

Workerは

仕事

です。

OSは

課長

です。

課長が

社員A

↓

この仕事やって

と言います。

終わると

社員A

↓

次はこれ

と言います。

社員(CPU)は

ただ仕事をしています。


WordPressでは

アクセスが来ると

利用者

↓

nginx

nginxが

PHP必要!

と言います。

すると

php-fpmが

Worker⑦

お願い

と空いているWorkerを選びます。

Worker⑦は

Linuxに

PHPを実行したい

と言います。

Linuxは

Core2空いてる

↓

Worker⑦実行

と割り当てます。

Worker⑦は

WordPress読み込む

↓

SQL実行

↓

HTML生成

を行います。

終わると

Worker⑦

待機

に戻ります。


ここが一番重要

実は

Worker

↓

CPU

ではありません。

本当は

Worker

↓

Linux Scheduler

↓

CPU

です。

つまり

CPUを管理しているのはLinuxです。


だからCPU使用率100%とは?

例えば

CPU

4コア

あるとして

Workerが

100個

いても

Linuxは

Core1

Worker12

Core2

Worker43

Core3

Worker8

Core4

Worker91

しか同時に動かせません(細かくは時間を細切れに切り替えながら実行します)。

残りは

順番待ち

になります。

だから

CPU100%

とは

CPUコアが実行したいWorkerで埋まっている状態

ということです。


次に理解すると一気につながること

このあと学ぶなら、次は

  1. Linuxのプロセスとスレッドの違い
  2. CPUスケジューラがどうWorkerを切り替えているか
  3. nginx WorkerとPHP-FPM Workerは何が違うのか

この3つです。

ここまで理解できると、「CPU使用率100%」「Load Averageが高い」「PHP-FPMのpm.max_childrenを増やすべきか」といった判断の理由まで見えるようになります。

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?