11.3.5. sched_rr_get_interval
この
SCHED_RR
ポリシーは、SCHED_FIFO
ポリシーとは若干異なります。SCHED_RR
は、ラウンドロビンローテーションで同じ優先順位を持つ同時プロセスを割り当てます。この方法では、各プロセスに複数回割り当てられます。sched_rr_get_interval()
関数は、各プロセスに割り当てられた回数を報告します。
POSIX では、この関数が
SCHED_RR
プロセスでのみ機能しなければならない必要がありますが、この sched_rr_get_interval()
関数は Linux 上の プロセスの時系列の長さを取得することができます。
時系列情報は
timespec
または、ベース時間 1970 年 1 月 1 日 00:00:00:00 GMT以降の秒とナノ秒の数値で返されます。秒数とナノ秒を返します。
struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ }
この
sched_rr_get_interval
関数には、プロセスの PID と構造の timespec が必要です。
#include <stdio.h> #include <sched.h> main() { struct timespec ts; int ret; /* real apps must check return values */ ret = sched_rr_get_interval(0, &ts); printf("Timeslice: %lu.%lu\n", ts.tv_sec, ts.tv_nsec); }
以下のコマンドは、さまざまなポリシーおよび優先順位を使用して、テストプログラム
sched_03
を実行します。SCHED_FIFO
ポリシーのあるプロセスは、0 秒と 0ナノ秒の回数を返します。これは無限であることを示します。
~]$ chrt -o 0 ./sched_03
Timeslice: 0.38994072
~]$ chrt -r 10 ./sched_03
Timeslice: 0.99984800
~]$ chrt -f 10 ./sched_03
Timeslice: 0.0
注記
詳細は、以下の man ページは本セクションに記載の情報に関連しています。
- nice(2)
- getpriority(2)
- setpriority(2)