[openrtm-users 02431] Re: RTCの処理測定について

Ando Noriaki n-ando @ aist.go.jp
2012年 2月 9日 (木) 00:39:48 JST


八幡さん

産総研 安藤です

一番いいのは、著者の方がこのMLにいらして答えてくださることだと思いますが、
私の分かる範囲でお答えします。

#論文を読む限りはRTMというよりはCORBA全般に関わる
#事のようにも見えます。GIOPパケットに優先度情報を含めて、
#優先度を考慮したディスパッチを行うことで性能向上を狙うという内容ですかね?
#リアルタイムネットワークが使える環境でしたら面白いですね。

八幡さんがやりたい事というのは、operationのリクエストの到達から実際に
operationがdispatchされるまでの時刻を計測したいということでよろしいでしょうか?

CORBAにはPotableInterceptorという仕組みがあって、CORBAの動作の
様々な部分にInterceptorを仕掛けて、挙動を変えたりすることができます。

ただし、もしomniORBをお使いでしたら、CORBA標準のPortableInterceptor
は確か実装されておらず、omniInterceptorという独自のものが利用できると記憶しています。

で、コレを使うと、operationのrequestをフックすることができるので、ここで時刻を測り
あとは、呼ばれたoperationで時刻を測ればやりたい事ができるように思います。

ただ、ちょっと気になってomniORBのコード(GIOP_S.cc)を眺めていたら、
omniInterceptors::serverReceiveRequest_T の呼び出しが、
アンマーシャルのあとに行われているので、このインターセプタで
時刻を計測すると、アンマーシャル後の
・オブジェクトテーブル検索の時間
・スタブでの引数の展開と実オペレーション関数の呼び出し
の時間だけを計測することになりそうです。


GIOP_S::handleRequest() {

  try {

    impl()->unmarshalRequestHeader(this);

    pd_state = RequestIsBeingProcessed;

    {
      omniInterceptors::serverReceiveRequest_T::info_T info(*this);
      omniInterceptorP::visit(info);
    }

    // Create a callHandle object
    omniCallHandle call_handle(this, pd_worker->selfThread());

    // Can we find the object in the local object table?
    if (keysize() < 0)
      OMNIORB_THROW(OBJECT_NOT_EXIST,OBJECT_NOT_EXIST_NoMatch,
                    CORBA::COMPLETED_NO);

    CORBA::ULong hash = omni::hash(key(), keysize());

    omni::internalLock->lock();
    omniLocalIdentity* id;
    id = omniObjTable::locateActive(key(), keysize(), hash, 1);

    if( id ) {
      id->dispatch(call_handle);
      return 1;
    }

なので、omniinterceptorではご希望のことはできないかもしれませんね。
もし、研究としてこうしたCORBAの様々な処理の正確な時間を計測したいのでしたら、
ソースの中身をよく吟味して、CORBAのソースの希望の場所に時刻計測関数を
埋め込んで地道に測るのが良いのではないでしょうか。



2012年2月8日23:43 Yawata Naofumi <hatch @ ubi.cs.ritsumei.ac.jp>:
>
> 夜分遅くに失礼致します。
>
> 立命館大学の八幡と申します。
>
> RTMについてお聞きしたいことがあり、メールさせていただきました。
>
> RT ミドルウェアのリアルタイム拡張の論文に記載されている
> 評価についてなのですが、同じくアンマーシャリング処理から、
> RTC→アンマーシャリング処理までの処理時間を測定したい
> のですが、調べても測定する方法が分かりませんでした。
>
> そのため、測定の方法を教えていただきたく、メールさせてい
> ただきました。
>
> ※図に示すと赤枠の中の時間測定を行いたいと考えてます。
>
>
> もし、Linux環境で無いと無理なようでしたら、VMwareを用いて
> 行いたいと思いますのでお願いします。
>
> お忙しいところ申し訳ございませんが、よろしくお願いいたします。
>
> -利用環境-
> OS:windows 7 HOME premium
> RTM:OpenRTM-aist 1.1 RC3 C++
> eclipse:Version: 3.4.2
>
> --
> ┏━━━━━━━━━━━━━━━━━━━━━━━
>> ┃ 立命館大学 情報理工学部 情報システム学科
> ┃ ユビキタス環境研究室 B4
> ┃ Name :八幡 尚文(Yawata Naofumi)
> ┃ Mail :hatch @ ubi.cs.ritsumei.ac.jp
>> ┗━━━━━━━━━━━━━━━━━━━━━━━
>
>
> _______________________________________________
> openrtm-users mailing list
> openrtm-users @ openrtm.org
> http://www.openrtm.org/mailman/listinfo/openrtm-users
>


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