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, &amp;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)