プロセススケジューラ
CPUリソースへの割当を担当するLinuxカーネルの機能
スケジューラの一般的な説明
1つの論理CPUで同時に動けるプロセスは1つだけ
実行可能な複数プロセスはタイムスライスという単位で順番にCPUを使わせる 経過時間:プロセスが開始してから終了するまでの経過時間
使用時間:プロセスが実際に論理CPUを使用した時間
https://scrapbox.io/files/6355abb890afbe0023a9e22b.png
time コマンドの real が経過時間、user/sys が経過時間(ユーザランドで動くためシステムコールは発行していない)ほぼゼロというだけでPythonインタプリタは起動と終了にシステムコールは発行する https://scrapbox.io/files/6355adde9f890c001d14aeb5.png
sleepコマンドはCPU実行状態が短いため user/sys での使用時間が少ない
並列度を上げて実行するプログラムで、経過時間がどんどん増えていく検証
複数の論理CPUを使う負荷分散処理、CPU0とCPU1に処理を分散させ論理CPUを独占する
直感的には real >= user + sys となりそうだが実際には右辺のほうが大きくなることもある
https://scrapbox.io/files/6355b1e794945a001e938cde.png
負荷分散プロセスのデータ2つ目までのエントリー、3つ目はプログラムそのもののエントリ
あるプロセスが子プロセスを生成、それぞれ別の論理CPUで動作するケースでは real < user + sys となる