OpenBSDでスレッド優先順位を使用する方法を説明できる人はいますか?
MANページにはこの問題に関する情報はほとんどなく、明確な理解は提供されません。特に:
sched_get_priority_min/max
範囲を指定します。 OpenBSD 6.3 amd64があり、範囲は0-31
。
最初に作成されたプロセススレッドのデフォルトの優先順位ポリシー/レベルが表示されると、次のものが表示されます(SCHED_OTHER, 0)
。0
最低の場合、アイドルスレッドをどのように指定しますか?それとも優先順位は通常より低いですか?私はただ増加する優先順位?システムスレッドの優先順位は何ですか?アイデアによると、基本的な優先順位はでなければなりませんnormal
。
マニュアルページには、pthread_setschedparam()
「スレッドのスケジューリング方針はSCHED_FIFO
(先入れ先出し)またはSCHED_RR
(ラウンドロビン)のいずれかになります」と記載されています。なぜダメなのSCHED_OTHER
?最初の基本スレッドにこれポリシー。
この優先順位はリアルタイムですか、それとも正常ですか?
誰でも明らかにできますか?
Windowsでは優先順位を設定できidle
、システムに他のタスクがない場合にのみスレッドがスケジュールされていることがわかります。私は設定することができ、time_critical
そのスレッドはほぼすべてのプロセッサ時間を持っています。
OpenBSDでこれらのタスクを解決するには?Windowsの優先順位に似ているものは何ですか:idle
、、、、、、、、?lowest
below_normal
normal
above_normal
highest
time_critical
ポリシーを選択する方法は?FIFO
、OTHER
またはRR
?優先順位が同じ場合に処理時間を付与するという点で、これらのポリシーは同じですか?
MANページには回答されていない質問がたくさんあります。
答え1
unistd.h
OpenBSDでは、両方_POSIX_PRIORITY_SCHEDULING
そして_POSIX_THREAD_PRIORITY_SCHEDULING
に設定すると、-1
プロセススケジューリングおよびスレッド実行スケジューリングオプションはサポートされていません(ランタイムもサポートされていません)。sysconf
機能示す)。
これは、OpenBSD実装が設定された優先順位によるスケジューリングをサポートしていないため、設定されたすべての優先順位が意味をなさないpthread_setschedparam
ことを意味します。事実ソースはpthread_setschedparam
EINVAL
優先順位ベースのスケジュールポリシーを返す必要があるかどうか疑問があります。
したがって、最初の質問に答えると、現在OpenBSDはスレッド優先順位をサポートしていないため、使用できません。