[openrtm-users 01344] Re: high CPU load when deactivate python component

Fumio Kanehiro f-kanehiro @ aist.go.jp
2010年 7月 6日 (火) 14:41:17 JST


松坂様,栗原様,

回答ありがとうございました.
ConsoleIn.pyの中身を見ていなかったので勘違いしたようです.

松坂さんの要望に関連するのですが,ExecutionContext無しのRTCというのは
作れないものでしょうか?というのは時々サービスポートだけを持っていて,
onExecute()では何もしない,単なるCORBAサーバのようなRTCを作りたい時が
あるのです.この場合ExecutionContextは何もせずに回っているだけで無駄に思えます.
(ただし1.0.0-RELEASEからRTCがACTIVE状態でないとサービスポートは
有効でないようですので,EC無しにではサービスポートも使えなくなって
しまいますが)
何かいい方法は有りますでしょうか?


2010/7/6 kurihara shinji <shinji.kurihara @ aist.go.jp>:
> 金広様
>
> お世話になっております。
> 栗原です。
>
> 先程の「INACTIVE状態ではACTIVE状態に比べCPU負荷が高くなっておりました」
> という内容には補足が抜けておりました。
> こちらで確認しましたコンポーネントは、ConsoleIn.pyでして、ACTIVE状態で
> は標準入力からの入力待ちとなるため、INACTIVE状態ではACTIVE状態よりもCPU
> 負荷が高いと表現致しました。
> 誤解を招く表現をしてしまい、申し訳ございません。
>
> ご指摘の通り、実際は、onExecute()にて何らかの処理を実装している場合、
> INACTIVE状態よりもACTIVE状態の方が負荷は高くなります。
>
> ConsoleIn.pyのonExecute()にて、すぐに"return RTC.RTC_OK"にて何も処理を
> 行わないように変更し確認しましたところ、INACTIVE状態とACTIVE状態とでは
> 負荷はほぼ同じでした。
>
>
> 以上、宜しくお願い致します。
>
>
> On Tue, 6 Jul 2010 14:18:51 +0900
> Fumio Kanehiro <f-kanehiro @ aist.go.jp> wrote:
>
>> 栗原様,
>>
>> 金広@産総研です.
>>
>> 参考までになぜINACTIVE状態の方がACTIVE状態よりもCPU負荷が高くなるのか教えて
>> いただけないでしょうか.
>> ExecutionContextはRTC内のステートマシンの状態によらず動作しているため,RTCが
>> INACTIVEでもCPUを食うのはわかるのですが,ACTIVE状態のほうがonExecute()を
>> 実行する分だけ負荷が高くなるように思えるのですが.
>>
>> 2010/7/6 kurihara shinji <shinji.kurihara @ aist.go.jp>:
>> > 松坂様
>> >
>> > お世話になっております。
>> > 栗原です。
>> >
>> > ご連絡、有難うございます。
>> > こちらで確認しましたところ、ご指摘頂きましたように、INACTIVE状態ではACTIVE状態に
>> > 比べCPU負荷が高くなっておりました。
>> >
>> > これは、RTCの実行コンテキスト(PeriodicExecutionContext)がwhileループを回してい
>> > るためでして、whileループ内ではデフォルトで 0.001 秒の sleep が入りますが、0.001
>> > 秒の sleepでは cpu負荷が少々高くなるようです。
>> > sleep時間を0.01秒にする事で負荷は約半分に軽減される事を確認しました。
>> > # sleepが無い場合は、CPUは90%近くなります。
>> >
>> > 1msecでコンポーネントを実行する必要が無い場合は、お手数ですが、rtc.confファイル
>> > に以下の一行を追記して、ご確認頂けますでしょうか。
>> >
>> >  exec_cxt.periodic.rate: 10 # 10Hzです。
>> >
>> >
>> > 以上、宜しくお願い致します。
>> >
>> >
>> > On Tue, 6 Jul 2010 11:22:05 +0900
>> > Yosuke Matsusaka <yosuke.matsusaka @ aist.go.jp> wrote:
>> >
>> >> OpenRTM-aist開発者の皆様
>> >>
>> >> 産総研の松坂です。
>> >>
>> >> Python版のOpenRTM-aistに特有の問題ですが、コンポーネントがアクティブ状態にないときに
>> >> CPU負荷が上昇する現象に遭遇しています。
>> >> 私の環境だけかもしれませんが、確認してみていただけますでしょうか?
>> >>
>> >> 以下、再現方法です。
>> >> 1.適当なPythonコンポーネントを起動(私は添付のスクリプトを使用しましたがそれ以外でも再現します)
>> >> 2.コンソールでtopコマンドを入力(この時点でPythonコンポーネントの負荷が10%程度に上昇しているのが確認できます)
>> >> 3.RTSystemEditor上でコンポーネントをアクティベート(Pythonコンポーネントの負荷が数%に低下)
>> >> 4.RTSystemEditor上でコンポーネントをデアクティベート(Pythonコンポーネントの負荷が10%程度に上昇)
>> >>
>> >> 私の開発環境の詳細です。
>> >> VMWare使用
>> >> ホストPC:MacOS X (snow leopard)
>> >> ゲストPC:Ubuntu 10.4
>> >> OpenRTM:1.00-release (debパッケージ)
>> >>
>> >> もし何かわかりましたら教えてください。
>> >>
>> >> --
>> >> Yosuke Matsusaka, Ph.D  <yosuke.matsusaka @ aist.go.jp>
>> >>   Interaction Modeling Group /
>> >>   National Institute of Advanced Industrial Science and Technology (AIST)
>> >>   Tel: 029-862-6726  Web: http://staff.aist.go.jp/yosuke.matsusaka/
>> >>
>> >
>> >
>> > --
>> > ----------
>> > 栗原 眞二 <shinji.kurihara @ aist.go.jp>
>> >
>> > 独立行政法人産業技術総合研究所
>> >  知能システム研究部門 統合知能研究グループ
>> >  〒305-8568
>> >  茨城県つくば市梅園1-1-1 中央第2
>> >
>> >  TEL: 029-861-5956
>> >
>> >
>>
>
>
> --
> ----------
> 栗原 眞二 <shinji.kurihara @ aist.go.jp>
>
> 独立行政法人産業技術総合研究所
>  知能システム研究部門 統合知能研究グループ
>  〒305-8568
>  茨城県つくば市梅園1-1-1 中央第2
>
>  TEL: 029-861-5956
>



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