(私はそれがあなたが意図したものだと思います)のマンページで、それは注の下に述べています:pthread_setschedparam
スレッドのスケジューリング ポリシーと優先順位を変更するために必要なパーミッションとその影響、および各スケジューリング ポリシーの優先順位の許容範囲の詳細については、sched_setscheduler(2) を参照してください。
そのマンページでは、以下で詳しく説明されていPrivileges and resource limits
ます。
2.6.12 より前の Linux カーネルでは、特権 (CAP_SYS_NICE) プロセスのみがゼロ以外の静的優先度を設定できます (つまり、リアルタイム スケジューリング ポリシーを設定できます)。非特権プロセスが行うことができる唯一の変更は、SCHED_OTHER ポリシーを設定することです。これは、sched_setscheduler() の呼び出し元の実効ユーザー ID がターゲット プロセス (つまり、プロセスpid で指定された) ポリシーが変更されています。
Linux 2.6.12 以降、RLIMIT_RTPRIO リソース制限は、SCHED_RR および SCHED_FIFO ポリシーの非特権プロセスの静的優先度の上限を定義します。スケジュール ポリシーと優先度を変更するためのルールは次のとおりです。
非特権プロセスの RLIMIT_RTPRIO ソフト リミットがゼロ以外の場合、優先度を現在の優先度の最大値と RLIMIT_RTPRIO ソフト リミットよりも高い値に設定できないという制限に従って、スケジュール ポリシーと優先度を変更できます。
RLIMIT_RTPRIO ソフト制限が 0 の場合、許可される変更は、優先度を下げるか、非リアルタイム ポリシーに切り替えることだけです。
変更を行うプロセスの実効ユーザー ID がターゲット・プロセスの実ユーザー ID または実効ユーザー ID と一致する限り、同じ規則に従って、特権のない別のプロセスもこれらの変更を行うことができます。
SCHED_IDLE には特別な規則が適用されます。このポリシーの下で動作する特権のないプロセスは、RLIMIT_RTPRIO リソース制限の値に関係なく、そのポリシーを変更できません。
特権 (CAP_SYS_NICE) プロセスは RLIMIT_RTPRIO 制限を無視します。古いカーネルと同様に、スケジューリング ポリシーと優先度を任意に変更できます。RLIMIT_RTPRIO の詳細については、getrlimit(2) を参照してください。