一部のスレッドをリアルタイムコンテキストで実行する方法と、他のスレッドを従来のタイムシェアリングスレッドとして実行する方法を尋ねる場合、必要なのは、を使用してスケジューラーを適切sched_setscheduler
に設定することだけです。
タイムシェアリングスレッドはなりたいですSCHED_OTHER
; リアルタイムシミュレータスレッドは、SCHED_FIFO
またはになりたいですSCHED_RR
。
Linuxでは、リアルタイムの優先順位で実行するために、ユーザーはこれを可能にするリソース制限(man 2 rlimit)を持っている必要があります。特に、rtprio
rlimitは必要な最高の優先度に設定する必要があります。または、アプリケーションをrootとして実行することもできます。PAMを備えたLinuxシステムでは、これは通常、適切な行をに追加することによって実現されます。 /etc/security/limits.conf
@realtime-rtprio 99
これにより、リアルタイムグループにリアルタイム優先度99までのrtprio制限が付与されます。次に、にリアルタイムグループを追加し/etc/groups
、ユーザーがグループに含まれていることを確認します。
(これは初めてのように思われるので、シミュレーターが手に負えなくなってシステムをレンダリングしないようにするために、「デッドマンスイッチ」の優先度の高いリアルタイムスレッドを使用することもできます。使用できません...高いCPU負荷をシミュレートしている場合、実際に高いCPU負荷が発生し、再起動しないと停止できない場合があります。)