(57)【要約】【課題】ネットワークに接続された通信装置間の通信性能を自動的にチューニングする機能を提供する。さらに、このような通信性能を定期的に見直し、定期的にチューニングする機能を提供する。【解決手段】本発明は、ネットワークへのデータの送信およびネットワークからのデータの受信を行うネットワーク駆動部と、前記ネットワーク駆動部との間で前記データを授受して通信を制御する制御部と、前記ネットワーク駆動部と前記制御部との間のデータの受け渡しに使用される複数の記憶領域と、前記複数の記憶領域を使用して、前記ネットワーク駆動部と前記制御部との間で異なるデータサイズのデータを受け渡した際のデータの授受時間を測定し、前記データサイズごとに特定の記憶領域を使用したデータの授受時間が他の記憶領域を使用したデータの授受時間を下回る記憶領域としての最適記憶領域を求める性能評価部と、通信時のデータサイズに従い、前記最適記憶領域を選択する選択部とを備えたものである。【選択図】  図１５
2006005969.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークへのデータの送信およびネットワークからのデータの受信を行うネットワーク駆動部と、
前記ネットワーク駆動部との間で前記データを授受して通信を制御する制御部と、
前記ネットワーク駆動部と前記制御部との間のデータの受け渡しに使用される複数の記憶領域と、
前記複数の記憶領域を使用して、前記ネットワーク駆動部と前記制御部との間で異なるデータサイズのデータを受け渡した際のデータの授受時間を測定し、前記データサイズごとに特定の記憶領域を使用したデータの授受時間が他の記憶領域を使用したデータの授受時間を下回る記憶領域としての最適記憶領域を求める性能評価部と、
通信時のデータサイズに従い、前記最適記憶領域を選択する選択部とを備えた通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、互いにデータ通信を行う通信装置間で最適な通信条件を設定するためのデータ通信方法及びデータ通信装置に関するものである。
【背景技術】
【０００２】
ネットワークに接続された通信装置間の通信速度は、ネットワークのハードウェアとしての通信性能の他、通信装置に内蔵されたＣＰＵのクロック数，ＯＳのバージョン，ＣＰＵに接続されるバスの仕様，ＣＰＵからメモリへのアクセス速度，ネットワークにアクセスし実際にデータの送受信を実行する通信ドライバの実行効率等に依存する。さらに、通信ドライバの実行効率は、ＯＳのバージョンごとに異なるＯＳの内部関数（ＯＳからプログラムへ機能を提供するための関数）に依存して変化する。
【０００３】
従来、この通信ドライバの実行効率の最適化（これをチューニングという）は、通信ドライバ開発時に性能調査を行い、実行効率に影響を与えるパラメータを調整して設定することにより行っていた。
【０００４】
しかし、ＯＳのパッチ（バイナリファイルからなる実行形式、いわゆるロードモジュールの部分的な修正）、ＣＰＵやメモリの増設等により、開発時に設定したパラメータが必ずしも最適な値であり続けるとは限らない場合が生じていた。
【０００５】
また、同一のネットワークに異なる計算機システム（ノード）が接続されるような環境では、ノードごとに通信ドライバのパラメータを手動で設定する必要があり、これを実際に行うのは困難であった。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明はこのような従来の技術の問題点に鑑みてなされたものであり、その目的とするところは、ネットワークに接続された通信装置間の通信性能を自動的にチューニングする機能を提供することにある。さらに、本発明の目的は、このような通信性能を定期的に見直し、定期的にチューニングする機能を提供することにある。
【課題を解決するための手段】
【０００７】
本発明は前記課題を解決するために、以下の手段を採用した。
【０００８】
すなわち、本発明は、複数の通信方式を切り換えて通信をすることが可能な複数の通信装置の間において、
事前に複数の通信条件の下で各通信方式による通信性能を測定し、
この通信条件ごとに特定の通信方式による通信性能が他の通信方式による通信性能を上回る通信方式としての条件別最適通信方式を求め、
通信時の通信条件に従い、この条件別最適通信方式を選択して通信するものである。
【０００９】
本発明は、記憶手段を備え、データ転送の単位としての最大データサイズを変更してデータ通信をすることが可能な複数の通信装置の間において、
異なる操作量によって通信装置の記憶手段を操作し、その操作の完了時間を測定し、完了時間の変化が所定値以内となる操作量の範囲において、最大データサイズを決定して通信するものである。
【００１０】
この測定結果または決定されたの最大データサイズをネットワークに接続された複数の通信装置間で互いに交換して、これらの複数の通信装置間で共通に最大データサイズを決定するようにしてもよい。
【００１１】
本発明は、ネットワークへのデータの送信およびネットワークからのデータの受信を行うネットワーク駆動部と、この駆動部との間でデータを授受して通信を制御する制御部とにおいて、そのデータの受け渡しに使用される複数の記憶領域から最適な記憶領域の種類を決定するもので、
この複数の記憶領域を使用して、ネットワーク駆動部と制御部との間で異なるデータサイズのデータを受け渡した際のデータの授受時間を測定し、データサイズごとに特定の記憶領域を使用したデータの授受時間が他の記憶領域を使用したデータの授受時間を下回る記憶領域としての最適記憶領域を求め、
通信時のデータサイズに従い、最適記憶領域を選択するものである。
【発明の効果】
【００１２】
本発明によれば、ネットワークに接続された通信装置の間で複数の通信条件の下で複数の通信方式により通信されて、各々の通信条件における各々の通信方式による通信性能が評価される。その結果、各々の通信条件における最適な通信方式が求められ、通信時の通信条件に基づいて最適な通信方式が選択されるので、ネットワークに接続された通信装置間の通信性能が自動的にチューニングされる。
【００１３】
また本発明によれば、複数の操作量によって通信装置の記憶手段を操作した際の操作の完了時間が測定され、測定された完了時間に基づいてデータ通信の最大データサイズが決定されるので、通信性能が自動的にチューニングされる。
【００１４】
また、本発明によれば、通信装置の制御部とネットワークを通じたデータの送受信を行うネットワーク駆動部との間のデータの受け渡しにおいて、複数の記憶領域を使用して複数のデータサイズのデータが受け渡され、データの授受時間が測定される。その結果、データサイズことに最適な記憶領域が決定され、データ通信時のデータサイズに基づいてデータの受け渡しに使用される最適な記憶領域が選択されるので、通信性能が自動的にチューニングされる。
【００１５】
また、以上のような通信性能の評価が定期的に行われるので、通信性能が定期的にチューニングされる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して本発明の好適な実施の形態を説明する。
（実施の形態１）
図１から図６を参照して、実施の形態１に係る通信装置について説明する。図１は本実施の形態１に係る通信装置のハードウェアの構成を示すブロック図であり、図２はこの通信装置のプログラムの構成を示すブロック図であり、図３及び図４は図２に示す通信装置間１と他の通信装置１ａとの通信方式を示す図であり、図５は上記通信装置１と他の通信装置１ａとの通信時間の測定結果の例（通信性能に相当）を示す図であり、図６は図２に示す通信ドライバ４の処理を示すフローチャートである。
＜構成＞
図１は、本実施の形態１に係る通信装置１のハードウェアの構成を示すブロック図である。この通信装置１はＣＰＵ１１、このＣＰＵ１１で実行されるプログラムやＣＰＵ１１で使用されるデータを記憶するためのメモリ１２（記憶手段に相当）、及びＣＰＵ１１によって制御されネットワーク２上の他の通信装置１ａと通信を行う通信用基板１３を備えている。通信装置１は、この通信用基板１３を介してネットワーク２に接続され、ネット
ワーク２上のノード＃０を構成し、ネットワーク２上のノード＃１を構成する他の通信装置１ａとの間でデータ通信を行う。
【００１７】
図２は、本実施の形態１に係る通信装置１のＣＰＵ１１で実行されるプログラムの構成を示すブロック図である。図２に示すように通信装置１（及び他の通信装置１ａ）は、データ通信を制御するＯＳ３（制御部に相当）及びこのＯＳ３から起動される通信ドライバ４（ネットワーク駆動部に相当）をメモリ１２に備えている。
【００１８】
ＯＳ３は、ネットワーク２に接続された他の通信装置１ａとのデータ通信に際し、ＣＰＵ１１で実行される図示しないアプリケーションプログラムからデータを受け取り、これを通信ドライバ４に引き渡して、データ通信を制御する。
【００１９】
通信ドライバ４は、ＳＥＮＤ方式の通信方式を実行するＳＥＮＤ方式部５、ＳＥＮＤ−ＧＥＴ方式の通信方式を実行するＳＥＮＤ−ＧＥＴ方式部６、これらのＳＥＮＤ方式部５及びＳＥＮＤ−ＧＥＴ方式部６の通信性能を評価する評価エンジン７（性能評価部に相当）、評価エンジン７の評価結果を格納するノード情報テーブル８及び選択部９を備えている。
【００２０】
通信ドライバ４は、ＯＳ３からの通信要求を受け、ネットワーク２に通信データを送信し、あるいはネットワーク２から通信データを受信する。その際通信ドライバ４は下記に示すＳＥＮＤ方式部５またはＳＥＮＤ−ＧＥＴ方式部６のいずれかによる通信方式を選択してネットワーク２に接続された他の通信装置１ａと通信する。
【００２１】
ＳＥＮＤ方式部５は、ＳＥＮＤ方式による通信を行う通信ドライバ４のモジュールである。ここでＳＥＮＤ方式とは、図３に示すように通信に際し、送信側の通信装置１から受信側の通信装置１ａへデータを直接転送する通信方式である。
【００２２】
一方、ＳＥＮＤ−ＧＥＴ方式部６は、ＳＥＮＤ−ＧＥＴ方式による通信を行う通信ドライバ４のモジュールである。ここでＳＥＮＤ−ＧＥＴ方式とは、図４に示すように通信に際し、まず、送信側の通信装置１から受信側の通信装置１ａへ通信データのヘッダのみを送信して通信装置１内のメモリ１２上のデータのアドレスを指定しておき、続いて、受信側の通信装置１ａが送信側の通信装置１における指定されたメモリ１２のアドレスからデータを読み出すという手順を採る通信方式である。
【００２３】
ＳＥＮＤ方式は、ネットワーク２を介した１回の送受信によりデータの転送が完了するのに対して、ＳＥＮＤ−ＧＥＴ方式では、ネットワーク２を介した２回の送受信を必要とする。一方、ＳＥＮＤ方式においては、送信側の通信装置１および受信側の通信装置１ａ内部のＯＳ３または通信ドライバ４において、送受信用のバッファ２５を介して通信データを複写する手間が発生する。これに対し、ＳＥＮＤ−ＧＥＴ方式では直接送信側の通信装置１のメモリ１２から通信データが読み取られ、受信側の通信装置１ａのメモリに転送されるため、通信用のバッファを介する手間が発生しない。従って、どちらの通信方式が有利かを決定することは一般的に困難である。
【００２４】
評価エンジン７は、上記のＳＥＮＤ方式部５及びＳＥＮＤ−ＧＥＴ方式部６による通信時間（通信速度）評価のための通信を実行し、通信性能を評価する。
【００２５】
この評価結果を図５に例示する。図５は、データサイズを変更して、ＳＥＮＤ方式及びＳＥＮＤ−ＧＥＴ方式による通信時間を測定した結果の一例を示すものである。図５では、通信データのデータサイズが１０２４(Byte)まではＳＥＮＤ方式の通信時間がＳＥＮＤ−ＧＥＴ方式による通信時間を下回り、２０４８(Byte)を越えるデータサイズでは、逆に
ＳＥＮＤ−ＧＥＴ方式による通信時間が、ＳＥＮＤ方式の通信時間を下回っている。そこで、この測定結果に基づき、２０４８(Byte)を越えるか否かに基づき、ＳＥＮＤ方式とＳＥＮＤ−ＧＥＴ方式とを切り換えて使用する。
【００２６】
このような判断の基準となるデータサイズ、この例では２０４８(Byte)を閾値と呼ぶ。評価エンジン７は、この閾値とこの閾値以下のデータサイズにおいて使用すべき通信方式（図５の測定結果ではＳＥＮＤ方式）とをノード情報テーブル８に書き込んでおく。この閾値と閾値以下のデータサイズにおいて使用すべき通信方式との組み合わせが条件別最適通信方式に相当する。
【００２７】
選択部９は、ノード情報テーブル８から上記のように評価エンジン７によって測定された閾値を読み取り、通信するデータサイズが閾値以下か否かを判定し、ＳＥＮＤ方式またはＳＥＮＤ−ＧＥＴ方式のいずれかを選択して切り換える。
＜動作例＞
次に図２に示した通信装置１の動作例を説明する。通信に先だって、通信ドライバ４の評価エンジン７は、通信相手となる通信装置１ａとの間のデータ通信に対する閾値が設定済みであるか否かをノード情報テーブル８の内容を読み出して判断する。通信装置１ａとの間のデータ通信に対する閾値が未設定である（すなわち通信装置１において今回の通信が、通信装置１ａとの初めて通信である）場合に、評価エンジン７は、予め通信装置１ａとの間で図５に示したような通信時間を測定し、その結果（上記閾値とその閾値以下ではどちらの通信方式が有利であるかを示す情報）をノード情報テーブル８に書き込んでおく。
【００２８】
次に、実際の通信に際しては図６に示したフローチャートに従って、通信がなされる。まず、通信ドライバ４の選択部９はノード情報テーブル８に記述された閾値とその閾値以下で使用すべき通信方式（本実施の形態ではＳＥＮＤ方式）を読み出す（ステップ１０１、以下Ｓ１０１と略す）。次に、通信ドライバ４の選択部９は通信されるデータのデータサイズとこの閾値とを比較する（Ｓ１０２）。通信されるデータサイズがこの閾値以下の場合、ＳＥＮＤ方式による通信を行う（Ｓ１０３）。通信されるデータサイズがこの閾値を越える場合、ＳＥＮＤ−ＧＥＴ方式による通信を行う（Ｓ１０４）。
【００２９】
このようにして、通信条件（この場合は通信データサイズ）に応じて最適な通信方式を自動的に選択するので、通信速度の向上を図ることができる。
＜変形例＞
本実施の形態では、ＳＥＮＤ方式による通信とＳＥＮＤ−ＧＥＴ方式による通信とを切り換える閾値を決定しておき、通信するデータサイズがその閾値以下か否かに基づいて通信方式を切り換える例を示したが、この閾値は１つとは限らない。例えば、通信時間として図７に示すような結果が得られた場合、データサイズが２０４８(Byte)（閾値１）未満では、ＳＥＮＤ方式による通信が有利であり、データサイズが２０４８(Byte)から１６３８４(Byte)（閾値２）の間では、ＳＥＮＤ−ＧＥＴ方式による通信が有利であり、データサイズが１６３８４(Byte)を越える場合には、再びＳＥＮＤ方式による通信が有利となる。
【００３０】
このような場合、図９のフローチャートに示したように、データサイズを複数の領域に区分する複数の閾値を保持しておき、これらと通信されるデータサイズとを比較して通信方式を決定すればよい。
【００３１】
閾値の数が多くなってくると図９のフローチャートに示したような複数回の判断を行う処理では、その判断のための処理時間により却って通信速度が低下する。そこで、図８に示したように基準となるデータサイズの単位、例えば２５６(Byte)ごとにテーブルのエン
トリを設けておき、通信されるデータサイズがどのエントリに対応するかを以下の（式１）
テーブルのエントリ番号  ＝  通信データ量／データサイズの単位（式１）
によって、選択部９が決定し、そのエントリ番号で示されるエントリに記述された通信方式を選定するようにしてもよい。このようなテーブルのエントリ番号に基づく処理を図１０のフローチャートに示す。
【００３２】
本実施の形態では、通信方式としてＳＥＮＤ方式による通信とＳＥＮＤ−ＧＥＴ方式による通信を示したが、本発明の実施は、これらの通信方式に限定されない。要するに本発明は、複数の通信方式によりデータ通信をすることが可能な複数の通信装置の間において、予め複数の通信条件の下でデータ通信を実行して各々の通信方式による通信時間を測定した結果に基づいて、実際の通信の際の通信方式を決定すればいいのであって、通信方式そのものには限定されない。
【００３３】
また、その通信方式の種類も上記の２種類に限定されるものではない。すなわち、図８に示したようなテーブルのエントリに使用する通信方式を予め記述しておくようにすれば３以上の通信方式の中から最適であると想定される通信方式を選択して通信することが可能になる。
【００３４】
本実施の形態では、通信条件として通信データのデータサイズを使用したが、データサイズの代わりに他の条件、例えば、通信時間帯、通信先の通信装置１ａのＯＳ３のバージョン等を通信条件としてもよい。すなわち、それらの通信条件における上記２つの通信方式に対して通信時間（または通信速度）を予め測定して、各通信条件ごとに最適通信方式を求めておき、実際の通信時の通信条件に基づき、最適通信方式を選択するようにしてもよい。
【００３５】
上記で説明した実施の形態では、通信相手となる通信装置１ａとの間のデータ通信に対する閾値がノード情報テーブル８において未設定である（すなわち通信装置１において今回の通信が、通信装置１ａとの初めて通信である）場合に、通信性能を測定したが、すでに閾値が設定済みであっても、その設定時点から所定時間以上経過している場合に、改めて通信性能を測定して閾値を設定するようにしてもよい。そのためには、上記閾値の設定に際し、その日付と時間とをＯＳ３に内蔵するカレンダーから読み込んでメモリ１２に記録しておけばよい。このように通信時間（または通信速度）の測定と上記閾値の設定とは、上述した実施の形態１のように通信開始時に行うのが好適であるが、通信中に測定してもよい。
（実施の形態２）
本発明の実施の形態２を図１１〜図１３を用いて説明する。図１１は本実施の形態に係る通信装置におけるプログラムの構成を示すブロック図であり、図１２及び図１３は図１１に示した通信装置１におけるメモリ１２上の領域の割付（メモリアロケーション、以下メモリ割付という）とメモリ１２上の領域の開放（メモリフリー、以下メモリ開放という）とに要する時間を測定した測定結果である（メモリ割付とメモリ開放とが記憶手段の操作に相当する）。
【００３６】
上記実施の形態１では、複数の通信方式によりデータ通信をすることが可能な複数の通信装置の間において、予め複数の通信条件の下でデータ通信を実行して各々の通信方式による通信時間を測定した結果に基づいて、実際の通信の際の通信方式を決定する通信装置について説明した。一方、本実施の形態では、ネットワーク２に接続された他の通信装置とのデータ通信おけるデータ転送の単位としての最大データサイズを変更可能な通信装置であって、その通信装置に備えたメモリの割付とメモリの開放とに要する時間からデータ通信におけるデータ転送の単位としての最大データサイズを決定する通信装置について説
明する。
【００３７】
ここでデータ転送の単位としての最大データサイズとは、例えばイーサネット（登録商標）における最大パケットサイズのように通信プロトコルにおいて規定される１回のデータ転送に際して転送可能な最大データサイズをいう。
【００３８】
本実施の形態の通信装置のプログラムのブロック図を図１１に示す。図１１のブロック図において、通信ドライバ４は、メモリ割付部１５、メモリ開放部１６（メモリ割付部１５とメモリ開放部１６とが記憶手段操作部に相当）及び最大データサイズを決定する決定部１９を備えている。その他の構成及び作用については実施の形態１と同一なので、同一の構成部分については同一の符号を付して、その説明は省略する。また、本実施の形態のハードウェアの構成は実施の形態１と同一であるので、これらについては図１を参照して説明する。
【００３９】
図１１において、メモリ割付部１５は、通信ドライバ４において実行され、通信装置１のメモリ１２上に指定された割付量のメモリ領域を確保する。一方、メモリ開放部１６は、上記のメモリ割付部１５によって割り付けられたメモリ領域のうち、指定されたメモリ領域を開放する。評価エンジン７は、以上のメモリ割付部１５及びメモリ開放部１６を実行して、その実行時間を評価する。
【００４０】
決定部１９は、この実行時間に基づいて最大データサイズを決定し、ノード情報テーブル８に書き込む。以降、この最大データサイズは通信ドライバ４においてデータ転送の単位として使用される。例えば、この最大データサイズを越えるデータのデータ転送要求が通信ドライバ４に与えられた場合には、通信ドライバ４がそのデータをこの最大データサイズ以下のデータに分割してデータ転送を行う。
【００４１】
上記評価エンジン７によってメモリ割付部１５及びメモリ開放部１６を実行して、その実行時間を評価した結果の一例を図１２及び図１３に示す。図１２は、メモリの割付量を変更してメモリ割付部１５を実行したときの実行時間を測定した結果である。図１２に示すように割付量を１６２５３(Byte)に設定した場合に、それ以下の割付量の場合と比較して実行時間が１桁以上増大し、急激に実行効率が悪化している。
【００４２】
図１３は、上記のようにメモリの割付量を変更してメモリ割付部１５が割付たメモリ領域をメモリ開放部１６を実行して開放したときの実行時間を測定した結果である。やはり、割付量を１６２５３(Byte)に設定して割り付けたメモリ領域を開放する場合に、それ以下の割付量の場合と比較して実行時間が１桁以上増大し、急激に実行効率が悪化している。
【００４３】
本実施の形態に係る通信装置１においては、決定部１９がこのようなメモリ割付時またはメモリ開放時の実行時間が不連続に悪化する割付量（この場合の１６２５３Byte）を求め、これをノード情報テーブル８に保持しておく。これは、実行時間の差が一定値以上（または一定比率以上）変化するか否かを各実行時間に対して求めることで決定できる。
【００４４】
この最大データサイズは、通信装置１が通信相手となる通信装置１ａと通信を開始するときに決定する。通信装置１においては、この最大データサイズによって通信のための作業用メモリ領域（通信用バッファ領域）が確保されるので、上記設定の結果、通信に際して、実行効率が悪化しない割付量でメモリ割付及びメモリ開放がなされる。従って、ＯＳ３のバージョン変更、通信装置１におけるＣＰＵ１１のクロック数の変更、メモリ１２の増設等に依存してメモリ割付に伴う実行時間が変化するような場合に、これに伴う通信ドライバ４の実行効率の悪化を防止することができる。
＜変形例＞
本実施の形態では、最大データサイズは、上述のように通信装置１が通信相手となる通信装置１ａと通信を開始するときに決定する。しかし、これを予めネットワーク２に接続された複数の通信装置間で決定しておくこともできる。上述のように測定したメモリ割付の実行時間及びメモリ開放の実行時間、または通信装置１において決定された最大データサイズをネットワーク２に接続された複数の通信装置間で互いに交換し、これら複数の通信装置間で最大データサイズが共通となるように決定する。これは、例えば、各通信装置１等で決定されたの最大データサイズの最大値、最小値、または、平均値等所定の方法により算出される値として決定できる。
【００４５】
本実施の形態では、通信ドライバ４におけるメモリ割付とメモリ開放の実行時間に基づいて通信におけるデータ転送の単位としての最大データサイズを決定する例を示したが、本発明の実施はこれに限定されず、その他のメモリ１２への操作（書き込み、読み出し等）における実行時間から上記最大データサイズを決定してもよい。
【００４６】
また、上記実施の形態では、メモリ割付とメモリ開放の実行時間に基づいて最大データサイズを決定する例を示したが、これを単位時間当たりのメモリ操作量（メモリ割付の容量等）である実行速度に換算して、この実行速度が不連続に変化するメモリ操作量の領域を検出して上記最大データサイズを決定してもよい。
【００４７】
上記実施の形態では、通信装置１が通信相手となる通信装置１ａと通信を開始するときに、評価エンジン７がメモリ割付とメモリ開放の実行時間を測定して最大データサイズを決定するが、このような実行時間の測定と最大データサイズの決定を定期的に実行してもよい。そのためには、ＯＳ３に内蔵されたタイマーから定期的に評価エンジン７を起動し、さらに評価エンジン７から決定部１９を起動すればよい。
（実施の形態３）
本発明の実施の形態３を図１４から図１７を参照して説明する。図１４及び図１５は、本実施の形態に係る通信装置におけるプログラムの構成を示すブロック図であり、図１６は図１４及び図１５に示した通信装置１におけるＯＳ３と通信ドライバ４とのデータ授受時間の測定結果の一例であり、図１７は、図１４及び図１５に示したＯＳ３及び通信ドライバ４の処理を示すフローチャートである。
【００４８】
本実施の形態では、通信に際して使用される作業用領域（バッファ領域）へのアクセスをチューニングする通信装置１について説明する。
【００４９】
図１４に示す通信装置１は、他の通信装置１ａ等と通信するアプリケーションプログラムとしてのデーモン２０をメモリ１２に有し、さらに、このデーモン２０によって送受信される通信データが格納される作業用領域としての通信用バッファ２１と、通信ドライバ４の作業用領域としての送受信データ領域２２を備えている。その他の構成及び作用については実施の形態１と同一なので、同一の構成部分については同一の符号を付して、その説明は省略する。
【００５０】
図１４に示す通信用バッファ２１は、ＯＳ３が管理するメモリ領域（メモリ１２上の一部分領域）に置かれている。したがって、通信ドライバ４は送受信に使用するデータをＯＳ３が管理するメモリ領域に複写することにより、ＯＳ３との間でデータの受け渡しを行う。以下これをＯＳバッファ方式と呼ぶ。
【００５１】
一方、図１５に示す通信用バッファ２３は、通信ドライバ４が管理するメモリ領域（メモリ１２上の一部分領域）に置かれている。通信ドライバ４とＯＳ３とのデータの授受においては、この通信用バッファ２３の先頭アドレスがＯＳ３に渡され、その領域を用いて
データが入出力される。以下これをドライババッファ方式と呼ぶ。
【００５２】
このように通信用バッファをどのように構成するかにより、通信装置である計算機（ＣＰＵとＯＳ）に依存して、通信ドライバ４とＯＳ３とのデータの授受に要する時間、ひいては、通信時間（または通信速度）が異なることが分かっている。このＯＳバッファ方式及びドライババッファ方式によるバッファが複数の記憶領域に相当する。
【００５３】
デーモン２０は、図１４に示すようなＯＳバッファ方式及び図１５に示すようなドライババッファ方式の各々の構成において、ＯＳ３、通信ドライバ４を通じて他の通信装置１ａ等とデータサイズを変更して通信を実行し、その通信時間（または通信速度）を測定する。本実施の形態では、デーモン２０が性能評価部に相当する。その測定結果の一例を図１６に示す。
【００５４】
図１６において、データサイズが２０４８(Byte)未満ではＯＳバッファ方式による通信時間がドライババッファ方式による通信時間を下回っている。一方、データサイズが２０４８(Byte)越えるとドライババッファ方式による通信時間がＯＳバッファ方式による通信時間を下回っている。そこで、このようなデータサイズ２０４８(Byte)を実施の形態１と同様に閾値と呼ぶことにする。
【００５５】
デーモン２０は、図１６に示すような通信時間の測定結果から上記のような閾値を求め、この閾値とこの閾値以下のデータサイズの通信で使用するバッファ方式（図１６の例ではＯＳバッファ方式）を図示しないノード情報テーブル８に設定する。この閾値と閾値以下でのデータサイズの通信で使用するバッファ方式との組み合わせが最適記憶領域に相当する。
【００５６】
一方、ＯＳ３及び通信ドライバ４は、実際の通信に際して、ノード情報テーブル８を参照して、その通信するデータサイズに応じて、ＯＳバッファを使用するか、ドライババッファを使用するかを決定して互いにデータの受け渡しを行う。ＯＳ３及び通信ドライバ４においてバッファ方式を決定する処理手順を図１７のフローチャートに示す。図１７に示すフローチャートの処理を実行するプログラム（本実施例ではＯＳ３および通信ドライバ４）が選択部に相当する。
【００５７】
このようにして通信条件に応じて通信時間の最も短い（通信速度の最も早い）バッファ方式が選択されて、通信装置１と他の通信装置１ａとの通信がなされる。
（変形例）
上記で説明したように、本実施の形態では通信するデータサイズの閾値をノード情報テーブル８に設定し、これに基づいて、ＯＳ３及び通信ドライバ４においてバッファ方式を決定したが、この決定をＯＳ３（または通信ドライバ４）が行い、その決定結果を通信ドライバ４（またはＯＳ３）に指示するようにしてよい。
【００５８】
なお、実施の形態１で説明したように閾値を複数設けるようにしてもよい。また、通信するデータサイズから実施の形態１の（式１）に従って、テーブルのエントリ番号を決定し、テーブルの各エントリに使用するバッファ方式を指定しておくようにしてもよい。
【００５９】
本実施の形態では、通信時のデータサイズに基づいてＯＳバッファ方式とドライババッファ方式とから最適なバッファ方式を選択して通信する通信装置について説明したが、本発明の実施はこのようなバッファ方式そのものには限定されない。要するに本発明は、複数のバッファ方式（またはバッファ領域）を使用可能な通信装置において、事前に異なる複数のデータサイズのデータにより各バッファを介したデータの授受を実行してその授受時間を測定して、データサイズごとに最適なバッファ方式を求めておき、通信時のデータ
サイズに基づき最適なバッファ方式（またはバッファ領域）を選択するものであって、バッファ方式そのものには依存しない。
【００６０】
本実施の形態では、２つのバッファ方式から最適なバッファ方式を選択する例を示したが、実施の形態１の（式１）から算出されるエントリ番号で示されるテーブルのエントリに最適なバッファ方式を記載する方法を採用することにより、３以上のバッファ方式が使用可能な通信装置においても、本発明を実施できる。（効果）
以上の説明により、本実施の形態に係る発明は以下の特徴を有する。
【００６１】
すなわち、本発明は、複数の通信方式を切り換えて通信をすることが可能な複数の通信装置１の間において、事前に複数の通信条件の下での条件別最適通信方式を求め、通信時の通信条件に従い、この条件別最適通信方式を選択して通信するので、利用可能な通信方式の中から最適なものを自動的に選択することができる。
【００６２】
また、本発明は、複数の通信方式を切り換えて通信をすることが可能な複数の通信装置１の間において、事前に複数の通信条件の下での条件別最適通信方式を求める評価エンジン７（性能評価部）と、通信時の通信条件に従い、この条件別最適通信方式を選択する選択部９とを備えるので、利用可能な通信方式の中から最適なものを自動的に選択することができる。
【００６３】
また、本発明の通信装置１は、上記で求めた条件別最適通信方式を記憶するノード情報テーブル８（記憶する手段）を備え、他の通信装置との通信時に、この通信装置との通信における前記条件別最適通信方式が記憶されていない場合に、評価エンジン７（性能評価部）は、この通信装置との通信における通信性能を測定して、条件別最適通信方式を求める。その結果、通信装置１は通信開始前にすべての他の通信装置１ａとの通信性能を測定し、通信時には利用可能な通信方式の中から最適なものを自動的に選択することができる。
【００６４】
また、本発明は、データ転送の単位としての最大データサイズに制限された転送データを記憶手段に一時的に記憶して通信する通信方法であって、異なる割付量を指定して、メモリ割付またはメモリ開放をしてその完了時間を測定し、この割付量の変化に対する完了時間の変化を求め、この完了時間の変化が所定値以内となる割付量の範囲において最大データサイズを決定して通信するので、メモリ割付に伴う通信速度の低下を抑制することができる。
【００６５】
また、本発明は、データ転送の単位としての最大データサイズを変更可能な通信装置であって、上記最大データサイズに制限された転送データを一時的に記憶するメモリ１２（記憶手段）と、割付量を指定してメモリ１２（記憶手段）上の領域を割り付けるメモリ割付部１５及びその領域を開放するメモリ開放部１６（記憶手段の操作部）と、このメモリ割付部１５及びメモリ開放部１６によって、異なる割付量を指定して、メモリ割付またはメモリ開放をしてその完了時間を測定する評価エンジン７（性能評価部）と、上記割付量の変化に対する完了時間の変化を求め、この完了時間の変化が所定値以内となる割付量の範囲において上記最大データサイズを決定する決定部１９とを備えるので、メモリ割付に伴う通信速度の低下を抑制することができる。
【００６６】
また、本発明において、上記割付量及び完了時間または最大データサイズに係る情報は、互いに接続された複数の通信装置１において交換されるので、上記決定部１９は、互いに接続された複数の通信装置１に共通に最大データサイズを決定することができる。
【００６７】
また、本発明において、上記評価エンジン７（性能評価部）は、メモリ割付またはメモ
リ開放の完了時間を定期的に測定するので、上記決定部１９は測定された完了時間に基づいてデータ転送の単位としての最大データサイズを定期的に決定することができる。
【００６８】
また、本発明は、ネットワークへのデータの送信およびネットワークからのデータの受信を行う通信ドライバ４（ネットワーク駆動部）と、
このネットワーク駆動部との間でデータを授受して通信を制御するＯＳ３（制御部）と、
通信ドライバ４とＯＳ３との間のデータの受け渡しに使用される複数の記憶領域と、
この複数の記憶領域を使用して、ネットワーク駆動部と制御部との間で異なるデータサイズのデータを受け渡した際のデータの授受時間を測定し、データサイズごとに特定の記憶領域を使用したデータの授受時間が他の記憶領域を使用したデータの授受時間を下回る記憶領域としての最適記憶領域を求めるデーモン２０（性能評価部）とを備え、
通信ドライバ４とＯＳ３とは、通信時のデータサイズに従い、上記最適記憶領域を選択するので、通信ドライバ４とＯＳ３とのデータ授受に伴う通信速度の低下を抑制することができる。
【００６９】
本発明において、上記デーモン２０（性能評価部）は、定期的に授受時間を測定するので、通信性能を定期的にチューニングすることができる。
【００７０】
本発明は、複数の通信方式を切り換えて通信するためのプログラムであって、複数の通信条件の下で上記各通信方式による通信性能を測定し、
通信条件ごとに特定の通信方式による通信性能が他の通信方式による通信性能を上回る通信方式としての条件別最適通信方式を求め、
通信時の通信条件に従い、条件別最適通信方式を選択して通信するプログラムをコンピュータ読み取り可能な記録媒体に記録したので、このプログラムを通信装置１におけるＣＰＵ１１で実行することで通信性能を自動的にチューニングすることができる。
【００７１】
本発明は、データ転送の単位としての最大データサイズに制限された転送データを記憶手段に一時的に記憶して通信するプログラムであって、
異なる操作量により上記記憶手段を操作して各操作の完了時間を測定し、
操作量の変化に対する上記完了時間の変化を求め、
完了時間の変化が所定値以内となる操作量の範囲において上記最大データサイズを決定して通信するプログラムをコンピュータ読み取り可能な記録媒体に記録したので、このプログラムを通信装置１におけるＣＰＵ１１で実行することで通信性能を自動的にチューニングすることができる。
【図面の簡単な説明】
【００７２】
【図１】実施の形態１に係る通信装置のハードウェアの構成を示すブロック図
【図２】実施の形態１に係る通信装置のプログラムの構成を示すブロック図
【図３】通信方式の一例を示す図
【図４】通信方式の一例を示す図
【図５】通信性能の測定結果の一例を示す図
【図６】実施の形態１に係る通信方式を選択する手順を示すフローチャート
【図７】通信性能の測定結果の一例を示す図
【図８】通信性能の測定結果の一例を示す図
【図９】実施の形態１の変形例に係る通信方式選択手順を示すフローチャート
【図１０】実施の形態１の変形例の通信方式選択手順を示すフローチャート
【図１１】実施の形態２に係る通信装置のプログラムの構成を示すブロック図
【図１２】通信性能の測定結果の一例を示す図
【図１３】通信性能の測定結果の一例を示す図
【図１４】実施の形態３に係る通信装置のプログラムの構成を示すブロック図
【図１５】実施の形態３に係る通信装置のプログラムの構成を示すブロック図
【図１６】通信性能の測定結果の一例を示す図
【図１７】実施の形態３に係るバッファ方式選択手順を示すフローチャート
【符号の説明】
【００７３】
１  通信装置
２  ネットワーク
３  ＯＳ
４  通信ドライバ
７  評価エンジン
９  選択部
１１  ＣＰＵ
１２  メモリ
１９  決定部
２０  デーモン
２１  通信用バッファ
２３  通信用バッファ
【図１】
2006005969.tif 000003
【図２】
2006005969.tif 000004
【図３】
2006005969.tif 000005
【図４】
2006005969.tif 000006
【図５】
2006005969.tif 000007
【図６】
2006005969.tif 000008
【図７】
2006005969.tif 000009
【図８】
2006005969.tif 000010
【図９】
2006005969.tif 000011
【図１０】
2006005969.tif 000012
【図１１】
2006005969.tif 000013
【図１２】
2006005969.tif 000014
【図１３】
2006005969.tif 000015
【図１４】
2006005969.tif 000016
【図１５】
2006005969.tif 000017
【図１６】
2006005969.tif 000018
【図１７】
2006005969.tif 000019