LoginSignup
1
1

More than 3 years have passed since last update.

LinuxでプロセスのRunキュー待ち時間を測定してみた

Last updated at Posted at 2020-01-21

Linuxでスケジューリングポリシーを指定してプロセスを起動する で起動したCPUバウンドなSCHED_FIFOプロセスのRunキュー待ち時間を測定してみます。

Runキュー待ち時間の取得にあたり、以下のページを参考にしました。
https://yohei-a.hatenablog.jp/entry/20150806/1438869775

CPUバウンドなFIFOプロセスの/proc/PID/schedstat を1秒空けて取得した結果。
2列目がRunキュー待ち時間。単位ナノ秒。

  1. time spent on the cpu
  2. time spent waiting on a runqueue
  3. # of timeslices run on this cpu

( https://www.kernel.org/doc/html/latest/scheduler/sched-stats.html より)

[ec2-user@ip-172-21-0-185 ~]$ sudo cat /proc/27629/schedstat ; sleep 1; sudo cat /proc/27629/schedstat
1585551572096 83397623426 1669
1586504089039 83449107507 1670

51ミリ秒ほどですね。
3列目、タイムスライスが1というところから、Context Switchが1回しか起きていない?ようで、まさにリアルタイムプロセス。

下は、同時に走らせていたCPUバウンドなSCHED_OTHERプロセスの/proc/PID/schedstat を1秒空けて取得した結果。

[ec2-user@ip-172-21-0-185 ~]$ sudo cat /proc/28585/schedstat ; sleep 1; sudo cat /proc/28585/schedstat
28229659566 570788962732 8601
28291651447 571746971282 8620

約958ミリ秒。SCHED_FIFOのプロセスが走っていた時間ほぼずっとRunキューにいたことが分かります。

SCHED_OTHER のプロセスをkillして測定

SCHED_OTHER のプロセスをkillして、他にCPUを大量に使うプロセスがない状態でSCHED_FIFOのRunキュー待ち時間を測定した見たところ、約50ミリ秒という結果になりました。(コマンド出力結果はありません)
ということは、SCHED_FIFOのyesプロセスがCPUを使っていない時間でのみSCHED_OTHERのyesプロセスが走れていたんですね。

1
1
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
1
1