Linuxのしくみ輪読会3章 プロセススケジューラ
公開日時:
輪読会で学んだことの雑なメモです。
- 経過時間
- プロセスが開始してから終了するまでの経過時間
- 使用時間
- プロセスが実際に論理CPUを使用した時間
タイムスライス
1つの論理CPU上で同時に動けるプロセスは1つのみ。 1つの論理CPUで複数プロセスを実行する場合、スケジューラが実行可プロセスにタイムスライス単位でCPUを使わせている
タイムスライスの値は次の要素で決まる
- システムが搭載する論理CPU数
- 所定の値を超える論理CPUで実行中/実行中待ちのプロセス数
- プロセスの優先度を表すnice値
- デフォルト0、-20が一番優先度が高く、19が一番低い
- 下げるのは誰でも出来るが上げるのはroot権限でのみできる
コンテキストスイッチ
論理CPU上で動作するプロセスが切り替わること
と連続していても必ずしもfoo()の直後にbar()が実行されるとは限らない foo()直後にコンテキストスイッチが発生してbar()の実行がしばらく後になる可能性もある。
並行処理における性能について
- 論理CPUをたくさん積んでいるマシンがあったとしても、そこに十分な数のプロセスを実行させて初めてスループットが向上する
- プロセス数が論理CPUの数より少ないと論理CPUを使いきれずスループットが向上しない
- むやみにプロセス数を増やしてもスループットは上がらない
- プロセス数が論理CPUより多いとその分待機プロセスが生まれ効率が悪い