ポリシーがあるスレッドのタイムスライス(時間量子とも呼ばれる)は、以下に基づいて行うことがSCHED_RR
できます。sched_rr_get_interval のマニュアルページ以下を使用して取得できます。
int sched_rr_get_interval(pid_t pid, struct timespec *tp);
これは、異なるプロセス/スレッドに対して異なる値を設定できることを示しています。 ~によると同じマニュアルページただし、を使用してこの値(カーネル3.9ベース)を調整できます。/proc/sys/kernel/sched_rr_timeslice_ms
しかし、これはスレッド固有の構成を合理的な方法で変更することを許可しないようです。
リアルタイムスケジューリングを扱う他の場所でも、SCHED_RR
各スレッドのスレッドタイムスライスを設定する方法に関する情報は提供されません(男性キリスト、sched_setattr、SO:Linuxスケジューラのタイムスライスをどうやって知ることができますか?)。
各スレッドにSCHED_RR
個別にタイムスライスを設定できますか?それでは、好まれるアプローチは何ですか?
答え1
リンクされたマニュアルページによると、sched_rr_get_interval
POSIX.1-2001およびPOSIX.1-2008規格に準拠しています。したがって、POSIX標準は、異なるプロセスが異なるタイムスライス値を持つことを可能にしますが、同じマニュアルページに「POSIXはサイクル時間のサイズを制御するメカニズムを指定しません」と記載されています。
これがおそらく、Linuxでプロセスまたはスレッドごとにサイクルタイムスライス値を設定する既知の方法がない理由です。あなたが指摘したように、私が知って発見した限り、時間の部分はglobalsを介してのみ変更できます/proc/sys/kernel/sched_rr_timeslice_ms
。