私は実験を行ってSCHED_FIFO
いますが、予期しない動作が見られます。私が使用しているサーバーには、ハイパースレッディングが無効になっている12個のコアがあります。設定可能なすべての割り込みは、CPU0で実行するように設定されています。
私のプログラムは、CPUアフィニティをコア0に設定してスケジューリングポリシーを変更せずに、pthreadsライブラリを使用して優先度の低いタスクのスレッドを作成し始めます。次に、親スレッドはCPUアフィニティをコア3に設定し、独自のスケジューリングポリシーをpid0と優先度でSCHED_FIFO
使用するように設定します。 sched_setscheduler()
1その後、非ブロッキングループの実行を開始します。
プログラム自体はうまく動作します。ただし、プログラムの実行中にもう一度サーバーにログインしようとすると、プログラムを停止するまで端末が応答しなくなります。これは、スケジューラがリアルタイムプロセスと同じコアで他のプロセスを実行しようとしているようなものです。
- 私は何が欠けていますか?
- スケジューラーは、リアルタイムプロセスを実行しているコアで他のプロセスを実行しようとしますか?もしそうなら、これを防ぐ方法はありますか?
sched_setscheduler()
親でスケジュールポリシーを設定すると、以前に作成された子の動作が変更されますか?
前もって感謝します。