37.6. プロセスのタイムスライスを表示する


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 */
}

手順

  1. sched_timeslice.c ソースファイルを作成し、テキストエディターで開きます。

    $ {EDITOR} sched_timeslice.c
  2. 次の行を 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;
    }
  3. ファイルを保存して、エディターを終了します。
  4. プログラムをコンパイルします。

    $ gcc sched_timeslice.c -o sched_timeslice
  5. さまざまなポリシーと優先順位でプログラムを実行します。

    $ 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)getpriority(2)setpriority(2) の man ページを参照してください。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る