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

kurihara shinji shinji.kurihara @ aist.go.jp
2010年 7月 6日 (火) 17:34:03 JST


金広様

栗原です。

Python版では、RTCが非アクティブ状態であってもサービスポートを有効にする事は可能
です。
ただし、OpenRTM-aist-0.4の頃に、「RTCが非アクティブの時はサービスポートも無効に
した方がよい。」という要望があり、1.0.0からはRTCが非アクティブの時はサービスポー
トも無効とするような変更が行われた経緯がございますので、今回紹介させて頂く方法が
良いのかは保証できません。

サービスポートを有効にする方法としましては、CorbaPort::activateInterfaces()を
呼ぶ事で有効になります。
ただし、このメソッドは、C++ではprotectedで宣言されてますので、RTCからは呼ぶ事
ができません。
Pythonでは可能です。

OpenRTMのサンプルに含まれますMyServiceProvider.pyを変更し、RTCが非アクティブ状態
でもサービスポートを使用できる事を確認致しましたので、添付させて頂きます。

添付のRTCでは、ECの停止と、サービスポートの有効化を行っております。


以上、宜しくお願い致します。



On Tue, 6 Jul 2010 14:41:17 +0900
Fumio Kanehiro <f-kanehiro @ aist.go.jp> wrote:

> 松坂様,栗原様,
> 
> 回答ありがとうございました.
> 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
> >
> 


-- 
----------
栗原 眞二 <shinji.kurihara @ aist.go.jp>

独立行政法人産業技術総合研究所
  知能システム研究部門 統合知能研究グループ
  〒305-8568
  茨城県つくば市梅園1-1-1 中央第2

  TEL: 029-861-5956
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: MyServiceProvider.py
型:         text/x-python
サイズ:     4193 バイト
説明:       無し
URL:        <http://www.openrtm.org/pipermail/openrtm-users/attachments/20100706/31175080/attachment-0001.py>


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