Linuxのしくみ輪読会3章 プロセススケジューラ

公開日時:

輪読会で学んだことの雑なメモです。

  • 経過時間
    • プロセスが開始してから終了するまでの経過時間
  • 使用時間
    • プロセスが実際に論理CPUを使用した時間

タイムスライス

1つの論理CPU上で同時に動けるプロセスは1つのみ。 1つの論理CPUで複数プロセスを実行する場合、スケジューラが実行可プロセスにタイムスライス単位でCPUを使わせている

タイムスライスの値は次の要素で決まる

  • システムが搭載する論理CPU数
  • 所定の値を超える論理CPUで実行中/実行中待ちのプロセス数
  • プロセスの優先度を表すnice値
    • デフォルト0、-20が一番優先度が高く、19が一番低い
    • 下げるのは誰でも出来るが上げるのはroot権限でのみできる

コンテキストスイッチ

論理CPU上で動作するプロセスが切り替わること

foo()
bar()

と連続していても必ずしもfoo()の直後にbar()が実行されるとは限らない foo()直後にコンテキストスイッチが発生してbar()の実行がしばらく後になる可能性もある。

並行処理における性能について

  • 論理CPUをたくさん積んでいるマシンがあったとしても、そこに十分な数のプロセスを実行させて初めてスループットが向上する
    • プロセス数が論理CPUの数より少ないと論理CPUを使いきれずスループットが向上しない
  • むやみにプロセス数を増やしてもスループットは上がらない
    • プロセス数が論理CPUより多いとその分待機プロセスが生まれ効率が悪い