私のスケジューリング ポリシーは SCHED_OTHER です。setpriority() を使用してナイス値を変更すると、何らかの影響がありますか。私がそれを使用したとき、私は違いがわかりません。
2 に答える
申し訳ありませんが、http://man7.org/linux/man-pages/man7/sched.7.htmlを注意深く読んでください:
SCHED_OTHER: デフォルトの Linux タイムシェアリング スケジューリング SCHED_OTHER は、静的優先度 0 でのみ使用できます。SCHED_OTHER は、特別なリアルタイム メカニズムを必要としないすべてのスレッドを対象とした標準の Linux タイムシェアリング スケジューラです。実行するスレッドは、このリスト内でのみ決定される動的優先度に基づいて、静的優先度 0 リストから選択されます。動的優先度は、nice 値 (nice(2)、setpriority(2)、または sched_setattr(2) によって設定) に基づいており、スレッドの実行準備が整うたびに増加しますが、スケジューラによって実行が拒否されます。これにより、すべての SCHED_OTHER スレッド間で公正な進行が保証されます。
したがって、スレッドの動的な優先度は setpriority の呼び出しによって影響を受け、(呼び出しで設定される新しい優先度の値に応じて) スケジューリングに変更が生じるはずです。
nice() を使用して動的優先度を下げることもできます。
nice(9) を試してください。
#include <unistd.h>
int nice(int inc); // inc = increase, added to the current nice value