(57)【特許請求の範囲】
【請求項１】
リモートファイル入力およびリモートファイル出力を要求するクライアント計算機とその要求を処理するサーバ計算機から構成されるクライアントサーバシステムにおいて、
クライアント計算機は複数種類のサイズのメモリの連続領域をメッセージバッファとしてあらかじめ準備し、
リモートファイルの出力要求もしくは入力要求が発生すると、前記メッセージバッファのなかから、該出力要求もしくは入力要求が要求するデータサイズが格納できるサイズのメッセージバッファがあれば該出力要求もしくは入力要求が要求するデータサイズが格納できる最小のサイズのメッセージバッファを、また該出力要求もしくは入力要求が要求するデータサイズが格納できるサイズのメッセージバッファがなければ前記複数種類のサイズのメッセージバッファのなかの最大サイズのメッセージバッファを受信データ格納領域もしくは送信データ格納領域に設定してサーバ計算機にリモートファイル出力要求もしくはリモートファイル入力要求を送信し、
かつ各サイズのメッセージバッファの使用率を算出し、使用率が第１の基準値を超えた場合は当該サイズのメッセージバッファを新たに作成し、使用率が第２の基準を下回るメッセージバッファがあれば当該サイズのメッセージバッファを削除することを特徴とするリモートファイルの入出力方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機システム間においてリモートファイルを入出力する方法に係わる。
【０００２】
【従来の技術】
パーソナルコンピュータ，ワークステーションやメインフレーム等の様々な規模の計算機システムがネットワークにより接続された分散コンピューティング環境が構築されている。このような分散コンピューティング環境では、通常、様々な情報が分散ファイルシステムにより共有されている。特に、米国  サン  マイクロシステムズ（Sun Microsystems）社が開発した分散ファイルシステムの仕様(倉骨彰訳／砂原秀樹監訳「ＮＦＳ ＆ ＮＩＳ」アスキー出版局，ｐｐ.１８３−２１８（１９９２）（原著：Managing NFS and NIS 、原著者：Hal Stern、原発行所：O'Reilly & Associates,Inc.）は業界標準として分散ファイルシステムに使用されている。
【０００３】
この分散ファイルシステムにおいて、クライアント計算機からサーバ計算機への入出力要求はバッファサイズと呼ばれる単位で読み出し／書き込み処理される。このバッファサイズはネットワークの物理的なパケットの転送単位、及び、計算機システムのディスクの入出力単位とは独立である。１９８５年にリリースされたバージョン２ではバッファサイズの上限は８キロバイトであった。信頼性の高いネットワークを利用できるようになり、また、動画像データといった数メガバイト程度の大きなデータを転送したりするようになったために、１９９３年にリリースされたバージョン３ではこの上限値が除去され、個々の実装により任意の値をバッファサイズとして設定できるようになった。
【０００４】
バージョン２においてバッファサイズは、ネットワークやクライアント計算機やサーバ計算機の性能に基づいて、入出力処理が行われる時点ではなく、計算機管理者がファイルシステムをマウントする際に設定され、一旦設定されたバッファサイズはそのファイルシステムがマウントされている間は一定であった。バージョン３においては、計算機管理者がファイルシステムに対してバッファサイズの最大値および好ましいと考える値を設定し、クライアントが入出力を行う際にそれを知ることができるようになっている。しかし、これらの値はファイルシステムの静的な情報として保持されているのであり、動的に変更されることはない。
【０００５】
【発明が解決しようとする課題】
ファイルシステムの中には、画像データのような数メガバイトのサイズをもつ大きなファイルからプログラムのような数キロバイトの比較的小さなファイルなど大小様々な大きさのファイルが混在する。そのため、ファイルシステムをマウントする際にバッファサイズを決定してしまったり、ファイルシステムの好ましいバッファサイズを静的に決定してしまうと、バッファサイズを大きく設定した場合には小さなサイズの入出力要求にとっては大きすぎるために、バッファサイズを小さく設定した場合には大きなサイズの入出力要求にとって小さすぎるために、いずれも入出力要求の処理性能が低下してしまうという問題があった。
【０００６】
例えば、バッファサイズが大きく設定されている場合に小さなデータのリモート入出力要求が生じると、その入出力要求の処理は、バッファサイズのデータの入出力要求が蓄積されるまで、もしくは、この待ちがタイムアウトするまで遅らせなければならない。また、例えば、バッファサイズが小さく設定されている場合に大きなデータのリモート入出力要求が生じると、その入出力要求を処理するために小さなサイズの入出力要求をいくつも出さなければならなくなってしまう。
【０００７】
本発明の目的は、大きなデータ，小さなデータの入出力が混在している場合においても効率的なリモートファイル入出力方法を提供することである。
【０００８】
【課題を解決するための手段】
上記の目的達成のために、本発明のリモートファイル入出力方法では、クライアント計算機が新たなリモートファイル入出力要求を出す際に、上記リモートファイル入出力要求が要求するデータの大きさがある値以上である場合には、各々のリモートファイル入力要求（リモートファイル出力要求）が受信データ格納領域（送信データ格納領域）に一度に書き込むことができるデータのサイズ（これを以後、入力バッファサイズ（出力バッファサイズ）と呼ぶ）を、上記リモートファイル入出力要求が入出力を要求するデータの大きさに基づいて設定する。
【０００９】
上記送受信データ格納領域は、ある一定の大きさの連続領域（メッセージバッファ）のリスト複数種類から構成されている。その複数種類のメッセージバッファリストには、計算機のメモリ管理の特性に基づいて決定された大きさのメッセージバッファ（デフォルトメッセージバッファ）のリストと、デフォルトメッセージバッファの大きさの倍数であり、かつ、使用可能なネットワークの最大データ転送サイズ以下であるという条件を満たした大きさのメッセージバッファのリストが含まれている。
【００１０】
上記リモートファイル入出力要求の入出力バッファサイズは、入出力を要求するデータサイズがあらかじめ決められた値以下である場合には、デフォルトメッセージバッファサイズに設定され、入出力を要求するデータサイズがあらかじめ決められた値より大きい場合には、入出力を要求するデータサイズ以下であるメッセージバッファサイズの中の最大値に設定される。各リモートファイル入出力要求を処理する際には、上記リモートファイル入出力要求の入出力バッファサイズと等しいサイズのメッセージバッファのリストが使用される。
【００１１】
上記クライアント計算機は上記入力バッファサイズ（出力バッファサイズ）のデータの受信（送信）にある基準以上失敗した場合に上記入力バッファサイズ（出力バッファサイズ）をより小さいメッセージバッファサイズに設定し、上記入力バッファサイズ（出力バッファサイズ）のデータの受信（送信）にある基準以上成功した場合には上記入力バッファサイズ（出力バッファサイズ）をより大きいメッセージバッファサイズに設定する。
【００１２】
あるメッセージバッファサイズのリストの使用率がある基準以下であり、かつ、他のメッセージバッファサイズのリストの使用率がある基準以上である場合には適当なサイズのメッセージバッファリストを新たに作成する。
【００１３】
【発明の実施の形態】
次に、本発明によるリモートファイルの入出力方法の一実施例を図面を用いて詳細に説明する。
【００１４】
〔１〕構成の概略
図１は本発明によるリモートファイル入出力方法を実施するクライアントサーバシステムの構成例を示している。１００はクライアント計算機（以下では簡単化のためにクライアントと呼ぶ）、２００はサーバ計算機（以下では簡単化のためにサーバと呼ぶ）、３００はネットワーク、３１０はディスクを示している。クライアントとサーバはネットワークにより接続されている。
【００１５】
クライアント１００上では、ＯＳ１１０の制御下において、ユーザプログラム１２０，クライアントリモートファイル入出力処理プログラム１３０，入出力バッファ設定プログラム１４０，入出力バッファ更新プログラム１５０，送受信データ格納領域調整プログラム１６０が稼働しており、送信データ格納領域１３１と受信データ格納領域１３２は送受信データ格納領域管理表１８０により管理されている。
【００１６】
サーバ２００上では、ＯＳ２１０の制御下において、リモートファイル入力処理プログラム２３０，送受信データ格納領域調整プログラム２６０が稼働しており、送信データ格納領域２３１と受信データ格納領域２３２は送受信データ格納領域管理表２８０により管理されている。
【００１７】
クライアント１００がサーバ２００へリモートファイル出力（書き込み）要求を出すと、出力データは送信データ格納領域１３２に書き込まれ、ネットワーク３００を介してサーバ２００の受信データ格納領域２３１に移動する。クライアント１００がサーバ２００にリモートファイル入力（読み出し）要求を出すと、入力データはサーバ２００の送信データ格納領域２３２に書き込まれ、データはネットワーク３００を介して受信データ格納領域１３１に移動する。
【００１８】
〔２〕リモートファイル出力方法の実施例
次に具体的な例を挙げてリモートファイル出力方法の処理の流れを示す。図２は、クライアント１００上においてユーザプログラムがリモートファイル出力を要求した例における、本発明のリモートファイル出力方法の主要部分のタイムチャートを示している。タイムチャートはクライアントリモートファイル入出力処理プログラム１３０(出力)，サーバリモートフイル入出力処理プログラム２３０（入力）の動作を示す。
【００１９】
（１）リモートファイル出力要求４００
クライアント１００においてユーザプログラム１２０がリモートファイル出力要求４００を起こすと、クライアントリモートファイル入出力処理プログラム１３０が実行される。
【００２０】
図３はクライアントリモートファイル入出力処理プログラム１３０（出力）の処理の流れを示す。入出力バッファ設定プログラム１４０を実行し（ステップ５００）、リモートファイル出力要求４００の出力バッファサイズを設定する。図４は入出力バッファ設定プログラム１４０の処理の流れを示している。
【００２１】
出力データサイズがある基準より小さいか否かを調べ（ステップ６００）、小さければ出力バッファサイズをデフォルトメッセージバッファサイズに設定する（ステップ６１０）。出力データサイズがある基準以上である場合には、送受信データ格納領域管理表１８０を参照し、出力データサイズ以上のメッセージバッファがある場合にはその最小のメッセージバッファサイズを、ない場合には最大のメッセージバッファサイズを出力バッファサイズとして入出力バッファ管理表１７０に設定する（ステップ６２０）。送受信データ格納領域管理表１８０の出力バッファサイズの大きさのメッセージバッファのリストを使用するリモートファイル出力要求の数を一つ増やす（ステップ６２１）。
【００２２】
（２）データ送信４０１
クライアントリモートファイル入出力処理プログラム１３０は未出力データが存在するか否かを調べ（ステップ５０１）、未出力データが存在しない場合にはクライアントリモートファイル入出力処理プログラム１３０を終了する。未出力データが存在する場合には、リモートファイル出力要求４００の出力バッファサイズを参照し（ステップ５０２）、出力バッファサイズのデータを出力バッファサイズの大きさのメッセージバッファに書き込み（ステップ５０３）、書き込んだデータをリモートファイル出力要求先のサーバ２００に送信し(ステップ５０４)、送受信データ格納領域管理表１８０の出力バッファサイズのメッセージバッファリストに関して、メッセージバッファ使用率，メッセージバッファリスト使用率を更新する（ステップ５０５）。そして、送受信データ格納領域調整プログラム１６０を実行し（ステップ５０６）、サーバ２００から出力バッファ転送成功／失敗通知を受信することを待つ（ステップ５０７）。
【００２３】
図５は送受信データ格納領域管理表１８０の例である。図５はクライアント１００のリモートファイル出力要求の８０％が６０キロバイトのメッセージバッファを使用しており、１回のデータ送信において６０キロバイトのメッセージバッファの平均して８キロバイトしか使用していないことを示している。
【００２４】
図６は送受信データ格納領域調整プログラム１６０の処理の流れを示している。使用率がある基準以上であるメッセージバッファリストがあるか調べる（ステップ７００）。ある場合にはそのメッセージバッファリストのメッセージバッファ使用率に基づき新しいメッセージバッファリストを作成する(ステップ７１０)。使用率がある基準より小さく、かつ、使用しているリモートファイル出力要求がないメッセージバッファリストがあるか調べる（ステップ７０１）。ある場合にはそのメッセージバッファリストを削除する（ステップ７２０）。
【００２５】
（３）データ受信４０２、データ転送成功／失敗通知送信４０３
サーバ２００は書き込みデータを受信すると、サーバリモートファイル入出力処理プログラム２３０を実行する。
【００２６】
図７はサーバリモートファイル入出力処理プログラム（入力）を示している。送受信データ格納領域管理表２８０を参照し、受信したデータのサイズ以上のメッセージバッファがあるか調べる（ステップ８００）。ない場合には転送失敗をクライアント１００に通知し（ステップ８２０）、サーバリモートファイル入出力処理プログラム２３０を終了する。受信したデータのサイズ以上のメッセージバッファがある場合には、その中の最小のメッセージバッファにデータを読み出し（ステップ８１０）、送受信データ格納領域管理表２８０のメッセージバッファ使用率とメッセージバッファリスト使用率を更新する（ステップ８１１）。そして、送受信データ格納領域調整プログラム１６０を実行し（ステップ８１２）、クライアント１００に転送成功を通知する（ステップ８１３）。
【００２７】
（５）データ転送成功／失敗通知受信４０４
クライアント１００がデータ転送成功／失敗通知を受信すると、入出力バッファ管理表１７０のリモートファイル出力要求４００に関して転送成功率を更新し（ステップ５０８）、入出力バッファ更新プログラム１５０を実行する（ステップ５０９）。送信した出力バッファサイズのデータすべてが受信されなかった場合には転送は失敗したと見なす。入出力バッファ更新プログラム実行後ステップ５０１に戻る。
【００２８】
図８は入出力バッファ管理表１７０の例である。図８はリモートファイル入出力要求４００の入出力バッファサイズは４キロバイトであり、転送成功率は９５％であることを示している。
【００２９】
図９は入出力バッファ更新プログラム１５０の処理の流れを示す。入出力バッファ更新プログラム１５０は、入出力バッファの転送の成功率がある基準より小さいか調べる（ステップ９００）。小さい場合には、入出力データ格納領域管理表１８０を参照し、入出力バッファサイズを現在よりも小さいメッセージバッファのサイズに設定する（ステップ９０１）。入出力バッファの転送の成功率がある基準以上であるか調べる（ステップ９０２）。以上である場合には、入出力データ格納領域管理表１８０を参照し、入出力バッファサイズを現在よりも大きいメッセージバッファのサイズに設定する（ステップ９０３）。
【００３０】
〔３〕リモートファイル入力方法の実施例
次に具体的な例を挙げてリモートファイル入力方法の処理の流れを示す。図１０はクライアント１００上がリモートファイル入力要求を出した例における、本発明のリモートファイル入力方法の主要部分のタイムチャートである。タイムチャートはクライアントリモートファイル入出力処理プログラム１３０（入力），サーバリモートファイル入力処理プログラム２３０（出力）の動作を示す。
【００３１】
（１）リモートファイル入力要求１０００
クライアント１００のユーザプログラム１２０がリモートファイル入力要求１０００を出すと、クライアントリモートファイル入出力処理プログラム１３０が実行される。
【００３２】
図１１はクライアントリモートファイル入出力処理プログラム１３０（入力）の処理の流れを示す。入出力バッファ調停プログラム１４０を実行し（ステップ１１００）、リモートファイル入力要求１０００の入力バッファサイズを設定する。未入力データが存在するか否かを調べ（ステップ１１０１）、未入力データが存在しない場合にはクライアントリモートファイル入出力プログラム１３０を終了させる。未入力データが存在する場合には、入出力バッファ管理表１７０のリモートファイル入力要求１０００の入力バッファサイズを参照し（ステップ１１０２）、リモートファイル入力要求先のサーバ２００に入力要求・入力バッファサイズを送信する（ステップ１１０３）。
【００３３】
（３）リモートファイル入力要求・入力単位受信１００２
サーバリモートファイル入出力処理プログラム２３０はクライアント１００から送信されてきたリモートファイル入力要求・入力バッファサイズを受信すると、サーバリモートファイル入出力処理プログラム２３０を実行する。
【００３４】
図１２はサーバリモートファイル入出力処理プログラム２３０の処理の流れを示している。送受信データ格納領域管理表２８０を参照し、受信した入力バッファサイズ以下である最大のメッセージバッファを用いてリモートファイル入力要求元のクライアント１００にデータを送信する（ステップ１２００）。送受信データ格納領域管理表２８０のメッセージバッファ使用率とメッセージバッファリスト使用率を更新し（ステップ１２０１）、送受信データ格納領域調整プログラム２６０を実行する（ステップ１２０２）。
【００３５】
（５）データ及びデータ転送成功／失敗通知受信１００４
クライアント１００がデータ及びデータ転送成功／失敗通知を受信すると、入力バッファサイズのメッセージバッファに受信したデータを読み出し（ステップ１１０５）、送受信データ格納領域管理表１８０のリモートファイル入力要求１０００の入力バッファサイズのメッセージバッファリストに関して、メッセージバッファ使用率及びメッセージバッファリスト使用率を更新して（ステップ１１０５）、送受信データ格納領域調整プログラム１６０を実行する（ステップ１１０６）。そして、入出力バッファ管理表１７０のリモートファイル入力要求１０００の転送成功率を更新し（ステップ１１０７）、入出力バッファ更新プログラム１５０を実行する（ステップ１１０８）。受信したデータのサイズが入力バッファサイズよりも小さい場合には転送は失敗したと見なす。入出力バッファ更新プログラム１５０を実行後ステップ１１０２に戻る。
【００３６】
【発明の効果】
本発明は、リモートファイルの入出力要求が起きる毎に、入出力を要求するデータの大きさに基づいて転送単位を決め、データ転送の成功率に基づいて転送単位を調節し、クライアント計算機が処理しているリモートファイル入出力要求の転送単位の分布に応じて送受信データ格納領域の構成を調節することにより効率的なリモートファイル入出力が可能となる。
【図面の簡単な説明】
【図１】本発明の一実施例のクライアントサーバシステムの構成を示すブロック図。
【図２】リモートファイル出力例のタイムチャート。
【図３】クライアントリモートファイル入出力処理プログラム（出力）のフローチャート。
【図４】入出力バッファ設定プログラムのフローチャート。
【図５】送受信データ格納領域管理表の構造を示す説明図。
【図６】送受信データ格納領域調整プログラムのフローチャート。
【図７】サーバリモートファイル入出力処理プログラム（入力）のフローチャート。
【図８】入出力バッファ管理表の構造を示す説明図。
【図９】入出力バッファ更新プログラムのフローチャート。
【図１０】リモートファイル入力例のタイムチャート。
【図１１】クライアントリモートファイル入出力処理プログラム（入力）のフローチャート。
【図１２】サーバリモートファイル入出力処理プログラム（出力）のフローチャート。
【符号の説明】
１００…クライアント計算機、１１０…ＯＳ、１２０…ユーザプログラム、１３０…クライアントリモートファイル入出力処理プログラム、１３１…送信データ格納領域、１３２…受信データ格納領域、１４０…入出力バッファ設定プログラム、１５０…入出力バッファ更新プログラム、１６０…送受信データ格納領域調整プログラム、１７０…入出力バッファ管理表、１８０…送受信データ格納領域管理表、２００…サーバ計算機、２１０…ＯＳ、２３０…リモートファイル入力処理プログラム、２３１…送信データ格納領域、２３２…受信データ格納領域、２６０…送受信データ格納領域調整プログラム、２８０…送受信データ格納領域管理表、３００…ネットワーク、３１０…ディスク。
【図１】
0003785741.tif 000002
【図２】
0003785741.tif 000003
【図３】
0003785741.tif 000004
【図４】
0003785741.tif 000005
【図５】
0003785741.tif 000006
【図６】
0003785741.tif 000007
【図７】
0003785741.tif 000008
【図８】
0003785741.tif 000009
【図９】
0003785741.tif 000010
【図１０】
0003785741.tif 000011
【図１１】
0003785741.tif 000012
【図１２】
0003785741.tif 000013