メイン Miscellaneous: Architecture & Generic Development Questions 速度について | 投稿するにはまず登録を |
題名 | 投稿者 | 日時 |
---|---|---|
速度について | hone89 | 2005/12/8 21:43 |
» Re: 速度について | forum_support | 2005/12/13 18:55 |
Re: 速度について | hone89 | 2005/12/14 14:35 |
Re: 速度について | forum_support | 2005/12/15 17:53 |
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
forum_support | 投稿日時: 2005/12/13 18:55 |
モデレータ 登録日: 2005/5/17 居住地: 東京都中野区中央4-5-3 ?構造計画研究所 投稿: 322 |
Re: 速度について 整理を兼ねておさらいをしましょう。
ネットワークからデータが届いてアプリケーションが受け取るまでの流れです。 概念であり実態を正確に表現しているわけではありませんので注意して下さい。 一般的な*nix環境を基にしていますが、Windows環境でも概ね同様の処理です。 1: NetWork ↓ 2: NetWork Controller ↓ 3: Device Driver ↓ 4: IP Protocol Processing ↓ 5: TCP Prorocol Processing ↓ 6: Kernel to User Memory Copy (mbuf to Buffer) ↓ 7: Socket Receive System Call ↓ 8: Receive Socket Buffer ↓ 9: User Application 実環境においては、1から6まではKernel(OS)内部の処理となります。 また、7から9まではuser空間の処理となります。 『TCPから上位のアプリケーション層』ということであれば、5から9までの流れになります。 ここで、QualNetではどのような処理になっているか考えます。 まず、QualNetは全てUser空間で動作するひとつのアプリケーションです。 したがって、6におけるKernelからユーザ空間へのデータコピーは発生しません。 あくまでもユーザ空間内の単なるメモリ転送が行われます。 つまり単なるメモリ転送なので、処理時間についてはQualNet実行環境のメモリ転送速度に依存します。 さて、QualNetによるシナリオ実行中の話です。 実際の速度については単位時間あたりのデータコピー量を計測して求めることになります。 まず、この単位時間を知るためにQualNet内の時間が必要になります。 QualNet時間については次のAPIを使うことで知ることができます。 getSimTime(node); 次に、データのコピー量ですが、これはデータを受け取るアプリケーション側でも測定可能ですし、 QualNet内のTCPパケットをカウントする方法もあります。 QualNet内のTCPパケットカウントについては次の辺りが参考になると思います。 tcp_input.cppにsubmit_dataという関数があります。 この中に; msg = MESSAGE_Alloc(node, APP_LAYER, app_type, MSG_APP_FromTransDataReceived); という記述があり、データを受け取った、という処理に相当する部分です。 また、関数の終わりには; MESSAGE_Send(node, msg, TRANSPORT_DELAY); という記述があり、TRANSPORT_DELAYを意図的に発生させています。 参考になりましたか? 『TCPから上位のアプリケーション層』の速度を何のために知りたいのでしょう。 それがハッキリすれば、もう少し具体的なアドヴァイスが出来るかもしれません。 |
フラット表示 | 前のトピック | 次のトピック |