このXenomai 3.x台の性能ベンチマークが図8である。縦軸がサンプリング頻度、横軸がUser Taskがウェークアップするまでのレイテンシということになる。Xenomaiを使うと、Isolationの場合でもレイテンシの最悪値が20μsほど縮まっており、Isolationなしだと最悪値だけでなく平均値でも大幅にレイテンシが削減され、当然サンプリング頻度も大幅に向上した、としている。どんな処理をさせるかにもよるのだろうが、Cortex-A9でこの数字はそう悪くないものに思える。
さて、Xenomai 3までは公式Webサイトはhttps://source.denx.de/Xenomai/xenomaiだったのだが、Xenomai 4からはhttps://evlproject.org/に移った(図9)。当初はevl projectという名称だったのが、Xenomai 4に改称している。もともとはCobalt coreをベースにEVL coreと呼ばれるものを開発しており、またI-pipeをベースにしたDovetail I/Fと呼ばれるものも新たに開発された。これらが最終的にXenomai 4になった格好だ。
ただし、バージョンは5.10から始まり(それ以前のものもあるはずだが、見つけられなかった)、最新版は6.2となっている。対応しているのは原則Arm64およびx86(というかx64)のみである。Xenomai 4の公式Webサイトには、対応しているSoCおよび評価ボードが紹介されており、決して多いとはいえないのだが、少ないサポートメンバーでここまで対応できているのは評価すべきかと思う。
そもそも、Xenomai 3で登場したMercuryを捨てた理由だが、頻繁にバージョンが上がるLinuxカーネルに追従していくには、全部書き換えるMercuryよりもパッチを当てる形で既存のLinuxカーネルも利用できるCobaltの方式の方がメンテナンスも楽であり、またSMP対応などもこちらの方が容易という判断、とのことであった。
ちなみにXenomai 3はまだサポート対象であるが、Xenomai 2に関しては2018年の時点でサポートが終了しており、そもそも対象となるLinuxカーネルのバージョンも古いので利用はお勧めできない。Xenomai 3についても、対応するLinuxカーネルは4.x台と古いので、今から試してみるのであればXenomai 4が無難だと思う。理屈から言えばXenomai 4も図5のように別のRTOSを実装することも可能だが、APIのマニュアルを見ているとそうした使い方ではなく、直接EVL coreのAPIを呼び出してハードリアルタイムの処理を行うことを前提としているようだ。
Linux環境でのハードリアルタイム併用が必要という場合に、RTAI以外の選択肢になるのがXenomaiである。問題はライセンスがGPL 2.0ということだ(これはRTAIもそうだが)。製品に利用するには、ちょっといろいろ大変かもしれない。
Copyright © ITmedia, Inc. All Rights Reserved.