31.5. プロセスのタイムスライスの表示
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 の基準時間からの秒数およびナノ秒数です。
struct timespec { time_t tv_sec; /* seconds / long tv_nsec; / nanoseconds */ };
手順
sched_timeslice.c
ソースファイルを作成し、テキストエディターで開きます。$ {EDITOR} sched_timeslice.c
次の行を
sched_timeslice.c
ファイルに追加します。#include <stdio.h> #include <sched.h> int 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); return 0; }
- ファイルを保存して、エディターを終了します。
プログラムをコンパイルします。
$ gcc sched_timeslice.c -o sched_timeslice
さまざまなポリシーと優先順位でプログラムを実行します。
$ chrt -o 0 ./sched_timeslice Timeslice: 0.38994072 $ chrt -r 10 ./sched_timeslice Timeslice: 0.99984800 $ chrt -f 10 ./sched_timeslice Timeslice: 0.0
関連情報
-
nice(2)
の man ページ -
getpriority(2)
の man ページ -
setpriority(2)
の man ページ