【BeagleBone Black】RT-Preemptカーネルの評価

http://blog.livedoor.jp/k_yon/archives/52499027.html

RT-Preemptパッチを適用すると,リアルタイム指定したプロセスのコンテキストスイッチにかかる遅延時間を短くすることができます.しかし,このパッチには,処理が長引いたからといって,途中で処理を打ち切ってくれる機能はありません.また,システムの単位時間あたりの処理能力を超えることは,もちろんできません.そのため,RT-Preemptパッチを使う場合は,実装者が注意して,処理に必要な時間を見積もらなければ,リアルタイムシステムになりません.

 マルチタスク時のコンテキストスイッチにかかる遅延時間を評価したら,ほとんどノーマルなカーネルのほうがパフォーマンス良かったけれど,唯一,負荷がかかっているときの優先度つきタスクの最悪時間だけは,RT-Preemptカーネルが勝った.つまり,普通に使うならノーマルなカーネルのほうが良いけれど,CPUを100%カリカリに使うような用途では,RT-Preemptパッチ付きのカーネル一択.

http://blog.livedoor.jp/k_yon/archives/52499525.html

 負荷が0から10までの最悪時間のグラフでは,ノーマルなカーネルについては,単調増加な傾向が見てとれるのですが,RT-Preemptなカーネルについては,傾向がよくわかりません.中でも,負荷が5〜6の間は,スイッチに要する時間が異常に悪く(長く)かかる場合があることが分かりました.これはカーネルにRT-Preemptなパッチを適用する際に作り込んでしまったバグの可能性があると思います.
 前回の記事のときは,負荷が3のときに,RT-Preemptなカーネルの最悪時間がノーマルなカーネルのものより短くなるという実験結果が得られたのですが,今回の実験では再現しませんでした・・.実験の仕方が悪かった可能性があります.混乱を招いてしまい,申し訳ありません.

 RT-Preemptパッチの効果が「Linuxカーネルでリアルタイム保障を行うため,コンテキストスイッチにかかる最悪時間を低減する」ことなので,RT-Preemptなカーネルのほうは,負荷が低いところでも高いところでも最悪時間が一定という結果を期待したのですが,今回の実験結果では,その効果が確かめられませんでした.