[openrtm-users 00750] Re: アクティブとデアクティブ状態のリソースの差異、及び同状態のサービスポートの挙動について。

Takashi Suehiro t.suehiro @ aist.go.jp
2009年 2月 3日 (火) 09:19:16 JST


小島様、

産総研 末廣です。

Takashi Kojima さんは書きました:

> アクティブ状態の時、デアクティブ状態の時の差異について、2点、ご質問があります。
> 
> 1.CPU時間の割り当てなどのリソースは、デアクティブとアテクィブな状態では、どの程度の差異が考えられますか?
> 
> 大雑把には、実行スレッドが一つ、少なくなるというように考えているのですが、違っておりますか。
> (ざっと調べてみたところ、Aceのスレッドをミューテックスで止めているのかと思ったので・・・)
> それとも、デアクティブにすることで、もっと多くのリソースを節約することができるのでしょうか。
> 
> もし、違っておりましたら、どのファイルを解析すればいいんかなどの指針をいただければ、幸いです。

こちらは実装に大きく依存するので安藤さんに
答えてもらうのが良いでしょう。


> 2.サービスポートは、デアクティブ状態であっても、アクティブの時と同様の働きをすることができるのは仕様ですか?
> 
> 以前、サービスポートを使って開発していた際、このようなことが起こったため気になったのでお聞きしました。
> この機能は考えようによっては、便利なのですがポリシーなどの点から適切なのでしょうか。

これは良い問題提起だと思います。
アクティブ(Active状態)、デアクティブ(Inactive状態)は
RTCのメインアクティビティの状態です。
ご存知のように、たとえばモータ制御とかセンサ処理とかを
イメージしています。

これがサービスポートのサービスと独立であるべきかどうか
は使われ方によるのでRTC作成者にお任せするというのが
現在のポリシーです。
ですから基本的には独立で、連動させたい場合はフラッグ変数などで
情報を共有させて処理するというのをRTC作成者がやることになります。

では独立/連動はどういう場面で使い分けることになるのでしょうか。
サービスポートに限らず、入出力ポートも含めて考えると、
独立:activateされる前に情報が欲しい
 サービスポートでの内部情報取得やパラメタの設定など
 入力ポートでの制御入力など
連動:activateされていないと意味がない
 サービスポートでの動作指令など
 出力ポートでのセンサ出力など
という感じでしょうか。
ただパラメタ設定や制御入力に関してはInactiveでも
受け付けて欲しいという意味で独立としましたが、
実際にはActiveになる前に最初のデータが欲しいという
違った意味での連動であることが多いと思います。

入出力ポートは垂れ流しで良いか必ず処理されなくては
ならないかで変わりますし、バッファリングのポリシー
にも関係してきます。

現状では、それぞれのRTC作成者に任されていますが、
誰かがこの辺りを整理してパターン集を作ってくだされば
将来的にはOpenRTMに取り込まれることになるかもしれません。

よろしくお願いします。
-- 
Takashi Suehiro, Principal Research Scientist, Intelligent Systems
Research Institute, AIST
Tel: +81-29-861-5964 Fax: +81-29-861-5989 E-mail: t.suehiro @ aist.go.jp
1-1-1 Umezono, Tsukuba, Ibaraki 3058568, Japan




openrtm-users メーリングリストの案内