JP5535115B2 - マルチスレッド型ファイル入出力システム、及びマルチスレッド型ファイル入出力プログラム - Google Patents

マルチスレッド型ファイル入出力システム、及びマルチスレッド型ファイル入出力プログラム Download PDF

Info

Publication number
JP5535115B2
JP5535115B2 JP2011071499A JP2011071499A JP5535115B2 JP 5535115 B2 JP5535115 B2 JP 5535115B2 JP 2011071499 A JP2011071499 A JP 2011071499A JP 2011071499 A JP2011071499 A JP 2011071499A JP 5535115 B2 JP5535115 B2 JP 5535115B2
Authority
JP
Japan
Prior art keywords
file
transmission
threads
module
pieces
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011071499A
Other languages
English (en)
Other versions
JP2012208549A (ja
Inventor
峰幸 田村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Systems Ltd
Original Assignee
Hitachi Systems Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Systems Ltd filed Critical Hitachi Systems Ltd
Priority to JP2011071499A priority Critical patent/JP5535115B2/ja
Priority to US13/173,428 priority patent/US8423688B2/en
Priority to PCT/JP2012/055911 priority patent/WO2012132812A1/ja
Publication of JP2012208549A publication Critical patent/JP2012208549A/ja
Application granted granted Critical
Publication of JP5535115B2 publication Critical patent/JP5535115B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、インターネット等の通信ネットワークにおけるファイル(データ)の転送(入出力)の技術に関し、特に、マルチスレッド処理の技術に関する。
インターネット等におけるファイル転送として、例えばクライアント−サーバ間で、HTTP/FTP等の特定のプロトコルを用いてファイル転送処理が行われている。例えばクライアント端末に存在するファイルを、ネットワークを介してHTTPでサーバへ転送(送信)し、サーバ側に格納(書き込み)する場合(アップロード)や、あるいは、サーバに存在するファイルを、ネットワークを介してHTTPでクライアント端末へ転送(送信)し、クライアント側に格納(書き込み)する場合(ダウンロード)、等である。しかしながら、サイズ(容量)が大きなファイルを転送したい場合、HTTP等のプロトコルでは、元々ファイルを転送するためのプロトコルではないため、処理時間が長くなり過ぎる(処理効率)、等の問題がある。
サイズが大きなファイルを転送したい場合、ファイルを複数に分割してそれぞれを転送処理することが考えられる。例えばクライアント端末側は、対象ファイルを読み出して複数のピース(断片)に分割し、各々のピースをネットワークを介してHTTP等でサーバへ転送(送信)する。サーバ側は、それら複数の各々のピースを受信し、元の1つのファイルに構成して格納する。しかしながら、インターネットでは個々のデータの遅延や紛失が発生しがちであるため、例えば上記のようにファイルの複数のピースを転送した場合に、各々のピースの受信の順序がバラバラになったり、ピースの紛失によりリトライ/再送が必要になったりする。そのため、上記ファイルを分割して転送する場合も、処理効率などの問題がある。
上記ファイル転送に関する先行技術例として、例えば特許文献1,2などがある。
特許文献1では、http通信で大容量のファイルを送受信する場合でも、通信経路上のキャッシュ機能に負担をかけないデータ転送方法を目的とし、例えば、WebブラウザとWebサイト間での通信で、Webブラウザが自動的にファイルを圧縮した後、指定サイズに分割し、各分割ファイル毎にそれぞれ別セッションでWebサイトに送信し、Webサイトは、送信されたファイルを統合した後に解凍する、といったことが記載されている。
特許文献2では、FTPプロトコルによりファイルを転送する際に、ファイルの分割数及びTCPセッションの数を、TCPプロトコルのウィンドウサイズと、ネットワークの往復遅延時間及び回線速度とに基づいて決定し、この数でファイルを分割すると共にTCPセッションをデータ転送用に複数確立して、データ転送を行う、といったことが記載されている。
特開2005−011119号公報(「データ転送方法」) 特開平08−305643号公報(「ファイル転送方法」)
上述のように、先行技術例を含む背景技術では、ネットワーク(インターネット)上のファイルの転送(入出力)における処理効率などの問題がある。
上記を鑑み、本発明の主な目的は、ネットワーク(インターネット)上のコンピュータ間でのファイルの転送(入出力)に係わり、特に対象ファイルのサイズが大きい場合にも、ファイルを複数(ピース)に分割して転送する処理を行う構成において、全体的な処理効率を向上することができる技術を提供することである。
上記目的を達成するため、本発明のうち代表的な形態は、ネットワーク(インターネット)上のコンピュータ間でのファイルの転送(入出力)の処理を行う情報処理システム及びプログラムなどであって、特に対象ファイルのサイズが大きい場合にも、ファイルを複数(ピース)に分割して転送する処理を行う機能を備える構成であって、以下に示す構成を有することを特徴とする。
本形態のシステム(「マルチスレッド型ファイル入出力(転送)システム」)では、第1のコンピュータ(例えばクライアント端末)−第2のコンピュータ(例えばサーバ)間におけるファイル(データ)の転送(入出力)を含む処理における、ファイルの入力(読み出し)、分割、転送(送信−受信)、統合、出力(書き込み)、といった流れにおける処理において、マルチスレッド型の仕組みを適用する。即ち、対象ファイルの転送を含む処理において、分割による複数の各々のピースのデータに関する処理をマルチスレッドで並行的に行うという機能・処理部(マルチスレッド型ファイル入出力モジュール)を有する構成とする。これによりファイル転送の処理効率の向上などを図る。
第1、第2のコンピュータは、送信(入力)側と受信(出力)側とで対応した情報処理(例えばソフトウェアプログラム処理)を行うファイル入出力モジュールを具備する。例えばファイルを送信する側の第1のコンピュータに、送信用の第1のモジュール(ファイル入力(読み出し)、分割、ピースデータ送信、等を行う処理部)を備え、ファイルを受信する側の第2のコンピュータに、受信用の第2のモジュール(ピースデータ受信、統合(復元)、ファイル出力(書き込み)、等を行う処理部)を備える。
本形態のマルチスレッド型ファイル入出力システムは、ネットワーク上で第1、第2のコンピュータ間でファイルの入出力の処理を行うシステムであり、前記ファイルを送信する側の第1のコンピュータに、入力元のファイルからデータを読み出して分割して複数のピースとして前記ネットワークへ送信する処理をマルチスレッドの処理により行う第1のモジュールを備え、前記ファイルを受信する側の第2のコンピュータに、前記ネットワークから前記複数のピースを受信して統合して出力先のファイルへ書き込む処理をマルチスレッドの処理により行う第2のモジュールを備える。前記第1のモジュールは、前記分割による複数の各々のピースの送信を、割当てる複数の各々の送信スレッドにより同時並行で処理し、前記第2のモジュールは、前記分割による複数の各々のピースの受信を、割当てる複数の各々の受信スレッドにより同時並行で処理する。前記第1のモジュールは、送信するピースに、当該ファイルの送信のIDと、当該ファイルの先頭位置からの相対位置の情報とを付属させる。前記第2のモジュールは、受信したピースの相対位置と、前記出力先のファイルで先頭位置からの順でどの相対位置までピースが書き込み済みかの状態と、を確認しながら、かつ、当該受信ピースを必要に応じて前記第2のコンピュータ内の受信バッファに蓄積しながら、前記出力先のファイルへ前記複数のピースを先頭位置からの順で書き込む処理を行う。
上記構成により、前記第1のモジュールからの複数のピースの送信の順序(A)と、前記第2のモジュールの前記複数のピースの受信の順序(B)とが異なる場合であっても、前記ファイルの転送を効率的に遂行する。
本発明のうち代表的な形態によれば、ネットワーク(インターネット)上のコンピュータ間でのファイルの転送(入出力)に係わり、特に対象ファイルのサイズが大きい場合にも、マルチスレッド処理によりファイルを複数(ピース)に分割して転送する処理を行う構成において、全体的な処理効率を向上することができる。
本発明の一実施の形態のシステム(マルチスレッド型ファイル入出力モジュールを含んで成る情報処理システム(マルチスレッド型ファイル入出力システム))の概要その1を示す図である。 本実施の形態のシステムの概要その2を示す図である。 本実施の形態のシステムの機能構成例を示す図である。 本実施の形態のシステムのハードウェア・ソフトウェアの構成例を示す図である。 本実施の形態のシステムの主要処理その1として送信用モジュールの処理を示す図である。 本実施の形態のシステムの主要処理その2として受信用モジュールの処理を示す図である。 本実施の形態のシステムの機能や処理の例を示す図である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。なお説明上の記号として適宜、R:読み出し、W:書き込み、F:ファイル、d:ピース(断片)、T:送信スレッド、U:受信スレッド、A:出力位置(ファイル先頭からの相対位置)、等とする。
<特徴等>
本発明及び実施の形態の特徴などについて以下である。
(1:概要) 本実施の形態のシステム(マルチスレッド型ファイル入出力システム等)では、通信ネットワークのコンピュータ間(例えばクライアント端末−サーバ間)で、マルチスレッド型のファイル転送(入出力)の処理を行うことにより、転送処理効率の向上を実現する。本システムのマルチスレッド型ファイル入出力モジュール30(図1等)は、送信側コンピュータ1(第1のコンピュータ、例えばクライアント端末)に備える送信用モジュール(第1のモジュール)10と、受信側コンピュータ2(第2のコンピュータ、例えばサーバ)に備える受信用モジュール(第2のモジュール)20と、を有する構成である。本モジュール30は、例えばクライアント端末側・サーバ側のいずれのファイル入出力にも使用される。以下、第1のモジュール10は、Rクラス−Rインスタンスが対応し、第2のモジュール20は、Wクラス−Wインスタンスが対応する(図3)。なおRはReader(読み出し、入力)、WはWriter(書き込み、出力)を示す。クラスやインスタンスは情報処理分野の用語に基づく。
なお、図1の構成では、クライアント端末側に送信用モジュール10、サーバ側に受信用モジュール20を有し、クライアント端末からサーバへファイルを転送する場合(アップロード)の例である。逆に、クライアント端末側に受信用モジュール10、サーバ側に送信用モジュール20を有し、サーバからクライアント端末へファイルを転送する場合(ダウンロード)、とすることができる。クライアント端末・サーバの両方に両方のモジュール(10,20)を備える構成とすれば、ファイルの入力・出力の両方が可能な構成となる。
(2:動作) 本モジュール30は、ファイル転送処理に係わるマルチスレッドの各スレッドから発生するファイル入出力要求に対して排他制御しながら対応する処理を行う。各スレッドが発行する入出力要求では、ファイル先頭からの相対位置(A)を指定する。本モジュール30は、指定された相対位置(A)を基準に、(ファイルFのピースd群の)入出力順を制御する。スレッドからの処理要求が実際のファイル処理順と異なる場合、本モジュールは、メモリ(バッファ)にピースdをスタックし、順序を整合する。
例えば、500バイトのサイズのファイルFを100バイトのサイズのピースdに分割して出力する場合、出力要求は5回{[出力位置0],[出力位置100],[出力位置200],[出力位置300],[出力位置400]}(出力位置(A)=ファイルF先頭からの相対位置)発生することになる。例えば[出力位置200]のピースが[出力位置100]のピースよりも先に要求された場合、[出力位置200]のピースをメモリ(バッファ)にスタックし、[出力位置100]のピースが出力されたタイミングで[出力位置200]のピースを出力する。
(3:管理機能) 本モジュール30では、アプリケーションのプロセス内で複数のファイル入出力が同時に実行される場合を想定した管理機能(図3、61,62)を有する。
本モジュール30を利用するアプリケーション(図3、31,32)は、ファイル転送処理のために生成したRクラス及びWインスタンスを、管理機能(61,62)に登録することにより、アプリケーションのプロセス内のファイル入出力を一元管理することができる。これにより、メモリ使用量の上限管理、不要なインスタンスの削除、などを一括して実施することができる。
(4:メモリ使用量の上限とバースト) コンピュータ(特に受信側コンピュータ2)内のメモリ(特にメモリ52の受信バッファ42)にピースdをスタックする処理において、管理機能で管理するプロセス単位の上限制限、または、ファイル毎のメモリ上限制限に抵触した場合、所定の状態(説明上「バースト」と称する)となる。当該バースト状態(処理一時中断)の以降、当該ファイルに対する転送(ピース受信等)は、すべてエラーとなる。本システムは、このバースト状態に対処可能な機能としてファイル転送の再処理(継続処理)の機能も有する。バースト状態となった場合、本システム(受信用モジュール20)は、所定のメソッド(上記機能)を呼び出すことにより当該ファイル転送処理を継続することができる。
(5:管理機能のファイル出力動作) 管理機能の1つとして、(受信側における)ファイル出力処理では、出力先ファイル(図1の5)へ直接ピースdデータを書き込み処理するのではなく、間にテンポラリフォルダ(一時ファイル)を設け、テンポラリフォルダにGUID(一意な識別情報)をファイル名として出力し、すべての出力が終了した時点で出力先(図1の5)に移動させる方式(公知技術)を採用してもよい。管理機能により実行するファイル出力処理は長時間化する可能性も考えられるため、出力途中のファイル(図1の5)を他のアプリケーションから参照されることを避けるための対応として、上記方式は有効である。上記ファイルの移動は、同一ドライブ内であれば高速(インデックス付け替えのみ)であるため、上記テンポラリフォルダと出力先ファイル(図1の5)は同一ドライブに設定すると好ましい。
<実施の形態>
以下、図1〜図7を用いて、本実施の形態のシステム(マルチスレッド型ファイル入出力モジュールを含んで成る情報処理システム(マルチスレッド型ファイル入出力システム))について説明する。図1,図2は、本実施の形態の概要等をわかりやすく示している。図3,図4は、機能構成や実装構成、各要素の関係などを示している。図5,図6は、主要処理を示している。図7は、応用的な機能や処理の例などを示している。
[概要1]
図1を用いて、本実施の形態の概要その1(複数のピースdの順序を考えない所まで)について説明する。
本システム全体は、送信側コンピュータ1と、受信側コンピュータ2とが、ネットワーク(インターネット)3を介して接続される構成である。送信側コンピュータ1は例えばユーザのクライアント端末であり、受信側コンピュータ2は例えばサーバ(サーバ装置)である。送信側コンピュータ1は、転送(入出力)対象のファイルF(4)の送信(入力)側であり、受信側コンピュータ2は、当該ファイルF(5)の受信(出力)側である。
そして本システムは、送信側コンピュータ1と受信側コンピュータ2とで対応した情報処理(ソフトウェアプログラム処理による実現)を行うマルチスレッド型ファイル入出力モジュール30{送信用モジュール10,受信用モジュール20}を具備する。送信側コンピュータ1に送信用モジュール10を備え、受信側コンピュータ2に受信用モジュール20を備える。送信用モジュール10は、入力元のファイル5のデータの入力(読み出し)、分割、ピースdの送信、等の処理をマルチスレッドで行う処理部である。受信用モジュール20は、ピースdの受信、統合、出力先のファイル5へのデータの出力(書き込み)、等の処理をマルチスレッドで行う処理部である。第1のモジュール10、第2のモジュール20の各々の処理は独立しているが、第1のモジュール10−第2のモジュール20間で対応・連携した処理が自動的に実現される仕組みである。図1では省略しているが各コンピュータ(1,2)で稼働するアプリケーション等(図3)が本モジュール30(10,20)を使用して所定のファイルF転送の処理を行う。
図1のようにクライアント端末(1)側に送信用モジュール10、サーバ(2)側に受信用モジュール20を有する場合は、クライアントからサーバへのファイルFの転送(アップロード)を行うことができ、逆に、クライアント端末側に受信用モジュール20、サーバ側に送信用モジュール10を有する構成とすれば、サーバからクライアントへのファイルFの転送(ダウンロード)を行うことができる。また、クライアントとサーバのそれぞれに両方のモジュール(10,20)を有する構成とすれば、両方向の転送を行うことができる。いずれも基本的な仕組みは同じであるため以下では図1のような構成の場合で説明する。
ファイルF(入力ファイル)4は入力元を示し、ファイルF(出力ファイル)5は出力先を示す。入力ファイル4の全データを出力ファイル5へ転送して書き込みを完了することが、本モジュール30を用いた本処理の目的である。なお入力ファイル4及び出力ファイル5は、例えば、指定のパス(アドレス)による指定のドライブのデータファイルである。
送信側コンピュータ1(送信用モジュール10)における処理により、送信側のファイル4は、複数のピースd(例:d1〜dm)に分割される(送信バッファ41に格納される)。ファイルF全体のサイズをsF、分割のサイズ(ピースサイズ)をsdとする。mは、ファイルFの分割数(ピース数)とする。また、出力位置A(ファイルF先頭からの相対位置)に間して、各ピースd1〜dmの出力位置AをA1〜Amとする。例えばsF=500、sd=100の場合(m=5)、各ピースd1〜d5の出力位置Aは{A1=0,A2=100,A3=200,A4=300,A5=400}である。
送信用モジュール10は、ファイルF(ピースd1〜dm)の転送(送信)のために複数のスレッド(送信スレッド)Tを起動、割当する。例えば送信スレッドT1〜Ttとする。tは送信スレッド数とする。mとtは独立であり状況に応じて可変の値であるが(後述)、図1の例では簡単にm=tである(ピースdと送信スレッドTとが1対1の関係)。
送信側から各送信スレッドTにより各ピースdがネットワーク3を介して受信側へ転送(送信)される。各送信スレッドTが発行する入出力要求では、当該ピースdに関してファイルF先頭からの相対位置Aなどを指定する。本モジュール30(10,20)は、指定された相対位置(A)を基準に、複数のピースdの入出力順を制御する。
ネットワーク3上を転送される各ピースdのデータ6には、情報として、対象ファイルF毎の送信ID(fとする)、出力位置A、等の情報を付属させる(例えばヘッダで記述)。送信ID(f)は、対象ファイルF(4)の送信(転送)処理ごとに付けられるID(一意な識別情報)である。「送信ID」が同じものは同じファイル転送処理であると認識される。出力位置Aは、ファイルFの先頭からの相対位置を示す情報である。また、ファイルサイズsFや、ピースサイズsd等の各種の情報を付属させてもよい。
なお、送信側(1,10)、ネットワーク3、受信側(2,20)の状況などに応じて、上記ファイル転送処理における複数のピースdの順序(入出力順)は変動し得る(図2)。
一方、受信側コンピュータ2の受信用モジュール20では、ファイルF(ピースd1〜dm)の転送(受信)のために複数のスレッド(受信スレッド)Uを起動、割当する。例えば受信スレッドU1〜Uuとする。uは受信スレッド数とする。uは、m,tと同様に独立、可変の値であるが、図1の例では簡単にt=uである。送信スレッドTと受信スレッドUとの対応関係は動的割当で決まるため1対1関係ではない(それぞれ独立したマルチスレッド)。
受信用モジュール20は、ネットワーク3を介した各ピースdデータの受信に応じて受信スレッドUによる処理を行う。受信用モジュール20は、相対位置(A)を基準に、複数のピースdの出力順を制御する。受信用モジュール20の処理により、受信される複数の各ピースd1〜dmのデータは、当該ピースdの出力位置A等の情報に基づいて、必要に応じて、受信バッファ42に蓄積(スタック)され、そして複数のピースdの順序が整合され、出力ファイル5として統合、書き込みされる。
[概要2]
図2を用いて、図1に続き、本実施の形態の概要その2(複数のピースdの順序を考え、ファイル転送処理を完了する所まで)について説明する。
図2の例では、送信ID(f)=f1,ファイルサイズ(sF)=500のファイルF(4)の送信処理に関して、m=5,sd=100による複数のピースd1〜d5を、t=5の送信スレッドT(T1〜T5)により送信処理する場合とする。送信側コンピュータ1からの送信時点のピースdの送信順序(順序A)が例えば{d1,d2,d3,d4,d5}とする(出力位置Aが小さい順である)。
ネットワーク3の状況などにより、複数のピースdの転送の順序が変動し、受信側コンピュータ2での受信時点の順序(順序B)が、例として{d1,d4,d3,d2,d5}とする。
受信用モジュール20において、複数の各々の受信スレッドU(例えばu=5のU1〜U5)は、自身が受信したピースdデータについて、その情報{f,A等}を参照し、ファイルF処理順(例えば順序A)に対して異なる場合、目的のファイルF(5)(例えばディスク領域)に出力(書き込み)せずに、受信バッファ42に一旦スタックする。そして、上記スタックを利用して、複数のピースdの順序を整合させる。特に出力位置Aの情報をみることで、順序を整合させることができる。
また、受信用モジュール20は、出力ファイルF(5)に対して、先頭からどの相対位置A(ピースd)まで書き込み済みであるか、ないしは次に書き込むべき相対位置A(ピースd)、等を情報として管理する。これを「次位置X」とする。最初の次位置X1はA=0である。
送信用モジュール10−受信用モジュール20間で、以下、s1〜s5のような順の処理となる。なお各ピースd内の括弧の値は、出力位置Aの値を示す。
(s1) まず、第1の受信スレッドU1では、第1のピースd1(A1=0)を受信したとする。d1については、元の順序Aに従っており最初にファイル5に出力(書き込み)すべきピースであるため、受信バッファ42にスタックせずに、直接、ファイル5の領域に出力(書き込み)する。この時点で、次位置X2は、A2=100のピースd2になる。
(s2) 次に、第4の受信スレッドU4では、第4のピースd4(A4=300)を受信したとする。この場合、当該ピースd4は、次位置X2(=A2)ではないため、当該ピースd4を受信バッファ42にスタックする。
(s3) 次に、第3の受信スレッドU3では、第3のピースd3(A3=200)を受信したとする。この場合、当該ピースd3は、次位置X2(=A2)ではないため、当該ピースd4を受信バッファ42にスタックする。受信バッファ42には、d4,d3がスタックされた状態となる。
(s4) 次に、第2の受信スレッドU2では、第2のピースd2(A2=100)を受信したとする。この場合、当該ピースd2は、次位置X2(=A2)に該当するピースであるため、受信バッファ42にスタックせずに、直接、ファイル5の領域に出力(書き込み)する。この際、受信バッファ42にスタックされているピースd(d4,d3)において、受信ピースd(d2)に位置(A)が後続するピースd(d3,d4)が有る場合は、受信ピースd(d2)とこれら後続ピースd(d3,d4)とを一緒に、一括で、ファイル5の領域に出力(書き込み)する。即ち、s1で書き込み済みのd1の後の位置(X2=A2)から{d2,d3,d4}のデータをまとめて書き込む。これにより、d1〜d4までファイル5に書き込み済みの状態となり、次位置X3はA5となる。
(s5) その後、第5の受信スレッドU5では、第5のピースd5を受信したとする。この場合、当該ピースd5は、次位置X3(=A5)に該当するピースであるため、受信バッファ42にスタックせずに、直接、ファイル5の領域に出力(書き込み)する。これにより、d1〜d5までのすべてのピースが目的のファイルF(5)に書き込まれた状態となる。
上記のように、受信側(20)では、出力(書き込み)済みのピースdに後続する位置(A)のピースdが来ると、そのタイミングで、受信バッファ42のスタック済みデータも含めてまとめてピースdデータが出力(書き込み)される。このような仕組みにより、複数のピースdの順序が変動していても、効率的に整合させることができる。よって、目的のファイルFに対する出力(書き込み)処理の効率が良くなる。
[基本構成]
図3は、本システムの基本的な機能構成を示している。図4は、対応するハードウェア・ソフトウェア構成例を示している。
送信側コンピュータ1は、アプリケーション31、記憶装置71に格納されている転送対象となる入力ファイル(F)4、送信用モジュール10(管理機能61を含む)、送信バッファ41が確保されるメモリ51、等を有する。受信側コンピュータ2は、アプリケーション32、記憶装置71に格納される転送対象となる出力ファイル(F)5、受信用モジュール20、受信バッファ42が確保されるメモリ52、等を有する。
アプリケーション31は、本モジュール10を用いたファイル転送処理を要求するプログラム(プロセス)であり、対象ファイルFの転送処理ごとに、送信用モジュール10のRクラスを用いてRインスタンスを形成する。アプリケーション31は、ファイルFの転送の際には送信用モジュール10を呼び出して(処理要求して)制御を渡す。受信側(20)のアプリケーション32も同様である。
本モジュール30は、マルチスレッド型のファイル入出力(転送)に係わるクラス(インスタンスを生成するためのクラス)として、送信用モジュール10における送信用クラス(Rクラス」)と、受信用モジュール20における受信用クラス(Wクラス)と、を有する。それぞれ、ファイル転送処理単位ごとに、実処理用のインスタンス(Rインスタンス、Wインスタンス)を生成する。
送信用モジュール10は、プログラム処理により実現され、アプリケーション31からのファイルFの転送(ないし読み出し・入力、送信等)の要求に応じて、Rクラスから当該ファイル処理単位のRインスタンスを生成・割当てして稼働させる。送信用モジュール10は、生成したRインスタンスの情報を管理機能61(登録部12)に登録する。Rインスタンスは、マルチスレッド{T0,TM,T1〜Tt}を制御する。
受信用モジュール20は、プログラム処理により実現され、アプリケーション32からのファイルFの転送(ないし受信、書き込み・出力等)の要求に応じて、Wクラスから当該ファイル処理単位のWインスタンスを生成・割当てして稼働させる。受信用モジュール20は、生成したWインスタンスの情報を管理機能62(登録部22)に登録する。Wインスタンスは、マルチスレッド{U0,UM,U1〜Uu}を制御する。
送信用モジュール10は、送信側コンピュータ1の物理的なメモリ51内に、上記ファイル転送処理用の送信バッファ41を確保する。メモリ51内に確保される送信バッファ41のサイズ(容量)は、設定される上限値(x)による大きさである。受信用モジュール20は、受信側コンピュータ2の物理的なメモリ52内に、上記ファイル転送処理用の受信バッファ42を確保する。メモリ52内に確保される受信バッファ42のサイズ(容量)は、設定される上限値(y)による大きさである。
図4において、第1、第2のコンピュータ(1,2)ともに、図示しないがOS上でマルチスレッドが稼働可能な構成である。
送信側コンピュータ1(クライアント端末)は、プロセッサ401、メモリ402、記憶装置403、通信I/F装置404、入力装置405、出力装置406などを備える。プロセッサ401は、ディスク等の記憶装置403からアプリケーションプログラム412のコードをメモリ402(51)に読み出して実行することにより、アプリケーション31のプロセスを実現する。また、プロセッサ401は、記憶装置403から制御プログラム411のコードをメモリ402(51)に読み出して実行することにより、送信用モジュール10のRインスタンスを含むマルチスレッド処理を実現する。また記憶装置403に格納されている対象入力ファイル4のデータがメモリ402(51)の送信バッファ41に読み出されて処理される(T0)。
受信側コンピュータ2(サーバ)は、プロセッサ501、メモリ502、記憶装置503、通信I/F装置504、入力装置505、出力装置506などを備える。プロセッサ501は、ディスク等の記憶装置503からアプリケーションプログラム512のコードをメモリ502(52)に読み出して実行することにより、アプリケーション32のプロセスを実現する。また、プロセッサ501は、記憶装置503から制御プログラム511のコードをメモリ502(52)に読み出して実行することにより、受信用モジュール20のWインスタンスを含むマルチスレッド処理を実現する。またメモリ502(52)の受信バッファ42に格納されたデータは、記憶装置503に格納される対象出力ファイル5へ書き込み処理される(U0)。
送信用モジュール10(各送信スレッドT)は、通信I/F装置404を用いてピースdデータ6をネットワーク3送信処理する。受信用モジュール20(各受信スレッドU)は、通信I/F装置504を用いてピースdデータ6をネットワーク3受信処理する。
[管理機能]
図3で、管理機能61は、送信用モジュール10の一部として有する。管理機能62は、受信用モジュール20の一部として有する。なお管理機能61,62は、別のモジュールとして構成されてもよい。例えば、モジュール10,20の上位に管理・制御用の第3のモジュールなどを追加して備えてもよい(例えば複数のファイル転送処理の管理・制御用など)。
送信側(10)の管理機能61として、設定部11、登録部12、上限管理部13、バースト対処部14、等を有する。受信側(20)の管理機能62として、設定部21、登録部22、上限管理部23、バースト対処部24、等を有する。
その他、管理機能(61,62)は、バッファ(41,42)の不要なデータのクリアや、不要インスタンスの一括削除などの処理機能を有する。また、ネットワーク通信における公知技術であるリトライ(再送)などの処理機能を有する。
設定部11,21は、それぞれ、前述の各種可変の設定値(例えば送信側(10)のm,sd,x,t0等)の設定処理を行う。
登録部12,22は、それぞれ、アプリケーション(31,32)からの要求に応じてクラスからインスタンスを生成(起動)・割当した場合の情報を登録・管理する。
上限管理部13,23は、それぞれ、ファイル転送処理に係わるメモリ51,52の使用量の上限を管理する。即ちメモリ51,52に確保されるバッファ(41,42)のサイズの上限値(x,y)を管理する。上限値(x,y)は設定部11.21から設定可能とする。
バースト対処部14,24は、それぞれ、受信側(20)でバーストが発生した場合の対処処理を行う。対処処理として、継続処理などの機能を含む(後述)。送信側(10)では、送信バッファ41がピースdデータの格納により上限値xに達した場合、当該ファイル転送処理を一時停止する。受信側(20)では、受信バッファ42がピースdデータの格納により上限値yを超えた場合、「バースト」状態として、バースト対処処理を起動する(24を用いる)。
[処理シーケンス]
図5,図6において、本システムの主要処理を説明する。送信側(1,10)の処理(図5)と、受信側(2,20)の処理(図6)とは、独立した処理であり、対応した所定の内容の処理アルゴリズムを有している。複数の各々のスレッドの処理では、自スレッドの処理を所定の処理アルゴリズムに従って実行すればよい(送信側と受信側とで同期的な制御情報通信などは不要である)。これにより全体的・自動的にファイル転送処理が遂行される仕組みである。なお例えばS102とS202では、送信側(10)−受信側(20)間でピースデータ6の転送等が行われる。またS104とS207では、送信側(10)−受信側(20)間でピースデータ6の転送等が行われる。
(S101) 図5において、送信側コンピュータ1のアプリケーション31(そのプロセス)は、対象の入力ファイル4の転送処理を送信用モジュール10に要求する。
(S102) 送信用モジュール10は、要求に対して、当該ファイル4処理用のRインスタンスを生成・登録し、割当てるマルチスレッド{T0,TM,T1〜Tt}による処理(以下)を開始する。また当該ファイル転送処理を識別する送信ID(f)も設定する。送信用モジュール10はマルチスレッド{T0,TM,T1〜Tt}を排他制御する。なおS102の時点で受信側(20)では特に何も処理を開始する必要は無い。
ファイル読み出しスレッドT0により、入力ファイル4からデータ(分割ピースサイズsdごとのデータ)を順次に読み出し、複数のピースd(d1〜dm)として、送信バッファ41へ格納(登録)する。
送信ピースd(d1〜dm)毎に送信スレッドT(T1〜Tt)を割当てる。割当てる送信スレッドTの初期数はt0である。各送信スレッドTは、送信バッファ41から1ピースdデータを取り出し、必要な情報{f,A,…}を付属させてピースdデータ6を形成し、ネットワーク3へ送信処理する。送信スレッドTによるピースdデータ6送信処理では、ピースd自体に加えて付属する情報として、送信ID(f),出力位置Aを含む。送信スレッドTは、1ピースdの送信が終わると他ピースdがある場合はその送信にとりかかることができる(m>tの場合)。
(S103) 送信用モジュール10は、モニタスレッドTMにより複数の送信スレッドT1〜Ttの状況をモニタしながら、適宜、送信スレッド数(t)を調整する。
(S104) 送信側(10)は、すべての送信スレッドTで対象ファイルF(4)のすべてのピースd(d1〜dm)を読み出し・送信し、ファイルFの転送を終了する。全ピースdの送信が終了すると、送信側(10)は「終了」通知を受信側(20)へ送信する。この「終了」通知では、当該ファイルFに対応する送信ID(f)情報と、当該ファイルFのファイル名などの情報と、が指定され、付属する。
また送信側(10)は、受信側(20)から「完了」通知を受け取ると、本ファイル転送処理を完了する。
また送信側(10)は、受信側(20)からリトライ要求を受けた場合は、要求・指定されたピースdデータを対応する送信スレッドTにより受信側(20)へ再送する。
また送信側(10)は、受信側(20)からバースト対処(継続処理)の要求を受けた場合は、バースト対処部14を用いて、要求・指定されたピースdデータ群を対応する送信スレッドT群により受信側(20)へ送信する。
(S201) 図6において、受信側コンピュータ2のアプリケーション32は、対象の出力ファイル(F)5の転送処理を受信用モジュール20に要求する。
(S202) 受信用モジュール20は、要求に対して、当該ファイル5処理用のWインスタンスを生成・登録し、割当てるマルチスレッド{U0,UM,U1〜Uu}による処理(以下)を開始する。受信用モジュール20はマルチスレッド{U0,UM,U1〜Ut}を排他制御する。
受信側(20)は、送信側(10)からのピースdを受信すると、受信ピースd毎に受信スレッドU(U1〜Uu)を割当てる。各受信スレッドU(U1〜Un)によりネットワーク3から各ピースd(d1〜dm)のデータ6(情報{f,A,…}が付属)を受信処理する。ファイル書き込みスレッドU0により、複数のピースdデータを統合して出力ファイル5へ書き込む処理を行う。U0を用いて、ファイル5の次位置Xから順に連続的にピースdデータを書き込むように制御する。詳しくはS203以下のようになる。
(S203) 受信用モジュール20では、(送信側(10)と同様に)モニタスレッドUMにより受信スレッドU1〜Uuの状況をモニタし、適宜、受信スレッド数(u)を調整する。
各受信スレッドUは、受信ピースdの付属情報{f,A,…}を参照し、対応ファイルFや、当該ピースdの出力位置Aやサイズsdなどを確認する。同じ送信ID(f)のものは同じファイル転送処理として取り扱う。ここで、受信用モジュール20で、各受信スレッドUは、目的(出力先)のファイル5に先頭位置から順に連続的にピースdデータを書き込むための、次位置Xの情報を管理・確認しながら、以下の分岐に応じた処理を行う。
(S204) 各受信スレッドUは、受信ピースdの出力位置Aが次位置Xに該当するか否かを判断する。次位置Xに該当する場合(Y)はS205の処理を行い、該当しない場合(N)はS206の処理を行う。
(S205) 受信スレッドUは、受信ピースdと、当該ピースdに位置(A)が後続する一連のピースd(1つ以上)が受信バッファ42にスタックされている場合は当該一連のピースd(1つ以上)とを、一括で、直接、出力ファイル5の次位置Xから書き込むようにする。受信バッファ42にスタックされている該当ピースdが無い場合は単に受信ピースdを直接ファイル5に書き込むだけである。上記ファイル5への書き込み処理は、ファイル書き込みスレッドU0により行われる。次位置Xの例は図2に示している。
(S206) 受信スレッドUは、受信ピースdを受信バッファ42にスタック(蓄積)する。この時点では次位置Xからのピースdがまだ受信側(20)に無いため、当該受信ピースdをファイル5に書き込まずに受信バッファ42にスタックする。
(S207) 受信用モジュール20は、すべての受信スレッドU(U1〜Uu)で対象ファイルFのすべてのピースdを受信し、T0により出力ファイルF(5)への書き込みが終了し、送信側(10)からの「終了」通知を受信すると、最後に「完了」通知を受信側(10)へ送信する。「完了」通知には、送信ID(f)などの情報を付属させる。受信側(20)は、当該ファイル出力処理を終了し、当該ファイルF(5)のファイル名を変更する。即ち送信側(10)から「終了」通知で指定されたファイル名へ変更して確定する。
[各種スレッド、スレッド数]
上述のように、送信側(10)、受信側(20)において、それぞれ、マルチスレッド構成として、いくつかの種類のスレッドを有する。以下、送信側(10)のマルチスレッド構成を説明するが、受信側(20)においても基本的に同様の考え方である。
送信側(10)において、個別のファイルF転送処理(送信ID(f)単位)ごとのマルチスレッド処理として、1つのファイル読み出しスレッドT0と、1つのモニタスレッドTMと、複数(t)の送信スレッドTと、が起動される。ファイル読み出しスレッドT0は、起動により、入力ファイルF(4)のデータを複数のピースd(d1〜dm)として送信バッファ41へ読み込む処理を行う。なお、T0を単数とする理由は、一般に1つのスレッドのファイルオープン処理に時間がかかるためである。仮に複数のスレッドでファイルのデータを読み込むためには、これらスレッド数分ファイルオープン処理が必要になるため時間がかかる。1つのファイル読み出しスレッドT0でファイルデータ読み出し処理(1回のオープン)を行い、かつ複数の送信スレッドTにより各ピースの送信処理を行うことも、本構成の1つの特徴である。
受信側(20)では、ファイル5を書き込むコンポーネント(ファイル書き込みスレッドU0)が複数の受信スレッドUから独立して存在し、当該コンポーネント(U0)がファイル出力(書き込み)処理を行う。これにより出力ファイル5は1つのコンポーネント(U0)から実施されるため、ファイルオープンは1回となる。
送信スレッドT(T1〜Tt)により、それぞれ送信バッファ41からピースd(d1〜dm)のデータを読み出して情報{f,A,…}を付属させてネットワーク3への送信処理を行う。
モニタスレッドTMは、送信スレッドTと共に起動され、送信スレッドTの状況をモニタする。モニタスレッドTMの制御により、送信状況に応じて、送信スレッドTの数tを動的に変動させる。この送信スレッド数tは、環境設定や、モニタスレッドTMによる調整などに応じて決定される。例えば、最初(ファイル転送処理開始時)は送信スレッド数tを一定数(t0)にする。そして、モニタスレッドTMにより、ネットワーク通信・転送の状況などをみながら、必要に応じて数tが調整(増減)される。例えば処理性能不足と判断した場合は1つ以上の送信スレッドTを追加し、処理性能過剰と判断した場合は1つ以上の送信スレッドTを休眠し、あるいは、処理性能不足と判断した場合は1つ以上の休眠中の送信スレッドTを起動し、といった制御をする。送信スレッド数tなどを適切に調整することにより、処理効率の向上などを図る。
分割のピースdの数m(ないし分割ピースサイズ(sd)等)と、送信スレッド数tとは、独立・可変の値である。例えばm>tの場合、まず送信スレッドT1〜Ttによりt個分のピースdを送信処理し、そのうちある送信スレッドTによるあるピースdの送信が終われば、次に残りの(m−t)分のうちのあるピースdの送信処理にとりかかることができる(多重処理)。
本システムでは、ファイル転送処理の効率については、概ね、送信スレッドTの数tにより決定(調整)することができる。実際の転送では、ネットワーク3環境とその状態などに依存し、同じネットワーク3であってもその状態により大きく通信効率が異なる。また、例えばスレッドの多重度を上げすぎると、逆にネットワーク3内の通信量を増やし、通信効率が落ちてしまう。また、当該ファイル転送が、あまりにもネットワークリソースを消費すると、他の処理に影響してしまう。
上記を考慮して、以下のように制御してもよい。本システムの管理・設定情報として、送信側(10)において、「目標転送量」(r)、「ピースサイズ」(sd)、「初期送信スレッド数」(t0)、などを設定する(可変設定可能)。「目標転送量」(r)は、例えば1秒間に何バイト転送したいかを規定する情報である。
転送開始時の送信スレッド数tは、上記初期送信スレッド数t0にする。その後、前述のモニタスレッドTMにより現在の転送量などを確認しながら、例えば現在の転送量が目標転送量rを超えている場合は、送信スレッド数tを少なくするために、例えば1つ以上の送信スレッドTを休眠させる。また目標転送量rに至っていない場合は、送信スレッド数tを増やすために、例えば、休眠状態の送信スレッドがある場合は当該休眠スレッドを起動し、あるいは、新規に1つ以上の送信スレッドTを追加する。また、送信スレッドTを増やしたにも関わらず、逆に転送量が下がった場合には、当該送信スレッドTを休眠させる。それでも転送量が下がる場合には、更に送信スレッドTを休眠させる。また、一定回数以上送信スレッド数tを下げても転送量が上昇しない場合は、送信スレッド数tを増やしてみる。モニタスレッドTMによりこのような調整を常時繰り返すことにより、転送効率の最適化を図る。
なお、送信用モジュール10における、ファイル読み出しスレッドT0、及びモニタスレッドTMについては、送信スレッドTとは独立させた別の機能(モジュール)として構成してもよい。受信用モジュール20(U0,UM)についても同様である。
[複数ファイル転送処理]
また本モジュール30(10,20)は、応用的な形として、アプリケーション31,32のプロセス内で複数のファイルFの入出力(転送)を同時並行的に実行する場合にも対応可能な実装(管理機能61,62)を有する。
図7中に例を示している。第1のファイルF1の入出力処理#1(701)(送信ID:f1)と、第2のファイルF2の入出力処理#2(702)(送信ID:f2)と、を同時並行的に実行する場合である。ファイル転送処理単位(送信ID)ごとに、それぞれ、対応するインスタンスやバッファ(41,42)が割当される。これらの情報は例えば登録部12,22を用いて管理される。複数のファイル転送処理に係わるR,Wインスタンスの情報を一元管理することにより、アプリケーション31,32のプロセス内の複数のファイル入出力処理の全体を把握して適切に制御する。
[バッファ上限管理]
管理機能61,62の上限管理部13,23を用いて、各バッファ(41,42)のサイズを上限値x,yにより制限する仕組みを有する。この制限により、メモリ51,52リソース消費の抑制などを実現する。上限値x,yの設定は、例えば、アプリケーション31,32のプロセス単位の設定値や、あるいは、ファイルF毎の設定値、などが可能である。また例えば、対象ファイルFのサイズが通常よりも大きい場合などには、上限値が大きくなるように設定を変更することにより、柔軟に対応が可能である。
[バースト対処]
受信バッファ42にスタック(蓄積)されるピースdデータ量が上限値yを超えてしまう場合(状態)を本明細書では「バースト」と称する。このバースト状態になった時は、以降、基本的には、当該ファイル転送処理に関するピースdの処理に関してすべてエラー(処理一時中断など)にする。そして、バースト対処部14,24を用いて対処処理を起動する。
ネットワーク3の状況などに応じてバーストが発生し得る。例えば、送信側(10)が受信側(20)へのピースdデータの到達を認識していない場合などに発生しやすい。図2の例で言えば、例えば第2のピースd2が受信側(20)へ到達しないまま、第3のピース以降が送信されてしまう場合、それらのピース群が受信バッファ42にスタックされるので、当該ピースデータ量によって上限値yを超えてしまう可能性がある。
管理機能61,62は、ファイル転送のバースト時に関するバースト対処部(継続処理部)14,24を有する。ある送信IDのファイル転送処理でバーストになった時は、本処理を呼び出して実行することにより、当該ファイル転送処理に関するバーストによるエラー(処理一時中断)状態からの継続処理(再処理)を行うことができる。継続処理とは、新規ファイル送信(転送)処理ではなく、受信側(20)のバーストなどによって不完全なまま中断した処理を継続・再開する処理を指している。
本実施の形態のバースト対処処理における継続処理として以下がある。
第1の継続処理例として、受信側(20)でバーストが発生した場合、出力ファイル5へ未出力(未書き込み)分のピースdの転送処理を、送信側(10)−受信側(20)間で行う。図7中に例示しており、s15のピースdの分の処理に相当する。またバースト分に対応した不要なインスタンスを削除する。
受信用モジュール20(24)は、バースト時、当該時点までに出力ファイル5へ正常に出力(書き込み)済みの分のピースdデータを一旦ファイルとして確定させる。受信バッファ42にスタックされている分のピースd、未到達分のピースd、及びバースト(上限値y超え)分のピースdデータについては無視ないし削除する。
受信側(20)は、バースト対処部24により、継続処理の要求(指示)を送信側(10)へ通知する。これに対し、送信側(10)のバースト対処部14は、要求に従い、バースト対処のための継続処理を実行する。
送信側(10)は、継続処理として、受信側(20)で不足分(上記確定分以外、即ち、次位置X以降の分)のピースdデータの送信処理を、前述の初期開始時のマルチスレッド処理と同様に行う。前述の初期開始時のマルチスレッド送信処理と同様に行う。なおこの継続処理では、通常時のピースd単位の転送のリトライ処理(再送処理)を用いてもよい。
具体的に、図7の例では、ファイル入出力処理#2(702)に関して、バースト発生時、s11は、出力ファイル5(次位置Xまで)に直接的に書き込み済み分のピースd1〜di及びその処理を示す。s12は、ネットワーク3上の障害等により受信側(20)へ未到達のピースdx及びその処理を示す。s13は、受信バッファ42の上限値y以内で正常にスタックされたピースdj〜dk及びその処理を示す。s14は、受信バッファ42の上限値yを超えたバースト分のピースdl〜dm及びその処理を示す。
s15は、対処処理(継続処理)の第1の例を示す。s13のピースdj〜dkを無視した場合であり、s12のピースdx以降、dmまでを転送処理すればよい。
送信側(10)の継続処理の例については以下である。送信側(10)は、バーストにより中断した処理と同じ送信ID(f)を使い、対象ファイルFの存在確認を受信側(20)に対して実行する。受信側(20)は、送信側(10)からの存在確認の対象の送信ID(f)のファイルFが存在している場合は、そのうちどこまでピースdデータを書き込み(確定)済みであるかを示す位置やサイズ等の情報を送信側(10)へ応答する。例えば次位置Xの情報を応答する。これに対し、送信側(10)は、受信側(20)で書き込み済みのサイズ分のピースdの処理をスキップし、当該次位置XからのファイルFのピースdの読み出し・送信処理を、前述同様に開始する。
第2の継続処理の例として、バースト時点で受信バッファ42内に正常に受領(スタック)しているピースdデータを一旦ファイルとして出力確定させて、受信バッファ42領域を空けるようにしてもよい。即ち、そのまま受信バッファ42に保持、もしくはファイル(5とは別)として保存し、当該時点の受信バッファ42の状態をクリアする。受信用モジュール20(24)は、バースト(上限値y超え)分のピースdデータは無視ないし削除する。
具体的に、図7の例では、s16は、対処処理(継続処理)の第2の例を示す。s13の受信バッファ42の上限値y以内で正常にスタックされたピースdj〜dkについてはそのまま保持、もしくはs11とは別のファイルとして保存しておく。そして、s14のピースdl〜dmと、s12のピースdxとを転送処理すればよい。
[リトライ、再送]
受信側(20,受信スレッドU)が、ピースdデータの到達/未到達の状態を認識することにより、送信側(10,送信スレッドT)に対して、必要なピースdの送信のリトライを要求(指示)することができる。この場合、送信側(10)は受信側(20)からのリトライ要求に応じたピースdデータを再送する。これにより、バースト時にも、受信側(20)で不足分のピースdデータ(例えば図7の例の次位置X以降のピースd)を転送することができる。
送信側(10)は、ピースdデータ送信で通信エラー等が発生しそれにより受信側(20)からリトライ要求を受けた場合、当該ピースdデータを再送する。受信側(20)は、送信側(10)から再送されたピースdデータを受信した場合は、当該時点で既に取得済みであった対応するピースdの方を無視し、当該再送で新たに取得したピースdの方を用いる。
また、受信側(20)は、送信側(10)から「終了」通知を受けたとき、受信側(20)で当該ファイル5への全ピースdの出力が終了していない場合は、送信側(10)から未到達のピースdがあると判断できる。これにより、受信側(20)及び送信側(10)は、バースト時と同様に、未到達分のピースdデータの再送などによる処理を行う。
[不要インスタンス削除、受信バッファクリア]
また上述した処理と併せて、管理機能61,62を用いて、以下のような処理を行うことができる。まず不要インスタンス削除処理として、バースト分のピースdに関係付けられていた受信スレッドU(対応Wインスタンス)については、不要インスタンスとして削除する。
送信側コンピュータ1やネットワーク3に例えば障害が発生した場合、受信側(20)には、中断されたファイル転送に関連する処理バッファ・データ(受信バッファ42及びスタック状態のピースdデータ)と出力処理途中のファイルF(5)が残ることになる。不要インスタンス削除処理では、一定時間経過後にも残っている上記データ・情報を削除する処理を行う。
またバッファクリア処理として、バースト対処における受信バッファ42のクリアの際、受信バッファ42にスタック済みの当該ファイル転送に係わる全ピースデータを削除する(第1の継続処理の例)。
<効果等>
以上説明したように、本実施の形態によれば、ネットワーク3(インターネット)上のコンピュータ(1,2)間でのファイルFの転送(入出力)に係わり、特に対象ファイルFのサイズが大きい場合にも、マルチスレッド処理によりファイルFを複数(ピースd)に分割して転送する処理を行う構成において、全体的な処理効率を向上することができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
本発明は、インターネット上の情報処理システムなどに利用可能である。
1…送信側コンピュータ(クライアント端末)、2…受信側コンピュータ(サーバ)、3…ネットワーク、4…ファイル(入力ファイル)、5…ファイル(出力ファイル)、6…ピースデータ、10…送信用モジュール(第1のモジュール)、20…受信用モジュール(第1のモジュール)、11,21…設定部、12,22…登録部、13,23…上限管理部、14,24…バースト対処部(継続処理部)、30…本モジュール(マルチスレッド型ファイル入出力モジュール)、31,32…アプリケーション、41…送信バッファ、42…受信バッファ、51,52…メモリ、61,62…管理機能、71,72…記憶装置、
d…ピース/ピースデータ、F…ファイル、T…送信スレッド、U…受信スレッド、A…出力位置。

Claims (5)

  1. ネットワーク上で第1、第2のコンピュータ間でファイルの入出力の処理を行うシステムであり、
    前記ファイルを送信する側の第1のコンピュータに、入力元のファイルからデータを読み出して分割して複数のピースとして前記ネットワークへ送信する処理をマルチスレッドの処理により行う第1のモジュールを備え、
    前記ファイルを受信する側の第2のコンピュータに、前記ネットワークから前記複数のピースを受信して統合して出力先のファイルへ書き込む処理をマルチスレッドの処理により行う第2のモジュールを備え、
    前記第1のモジュールは、前記分割による複数の各々のピースの送信を、割当てる複数の各々の送信スレッドにより同時並行で処理し、
    前記第2のモジュールは、前記分割による複数の各々のピースの受信を、割当てる複数の各々の受信スレッドにより同時並行で処理し、
    前記第1のモジュールは、送信するピースに、当該ファイルの送信のIDと、当該ファイルの先頭位置からの相対位置の情報とを付属させ、
    前記第2のモジュールは、受信したピースの相対位置と、前記出力先のファイルで先頭位置からの順でどの相対位置までピースが書き込み済みかの状態と、を確認しながら、かつ、当該受信ピースを必要に応じて前記第2のコンピュータ内の受信バッファに蓄積しながら、前記出力先のファイルへ前記複数のピースを先頭位置からの順で書き込む処理を行い、
    前記第1のモジュールは、前記入力元のファイルからデータを読み出して所定のサイズまたは数で分割して前記複数のピースとして、前記第1のコンピュータ内の送信バッファに格納する処理を行う、1つのファイル読み出しスレッドを起動し、
    前記第2のモジュールは、前記複数のピースを前記出力先のファイルへ先頭位置から順に連続的なデータとして書き込む処理を行う、1つのファイル書き込みスレッドを起動し、
    前記第1のモジュールは、前記複数の送信スレッドの状況をモニタして当該送信スレッドの数を調整する、第1のモニタスレッドを起動し、
    前記第2のモジュールは、前記複数の受信スレッドの状況をモニタして当該受信スレッドの数を調整する、第2のモニタスレッドを起動し、
    前記第1のモジュールは、初期送信スレッド数を設定し、当該初期送信スレッド数で前記複数の送信スレッドを起動し、
    前記第2のモジュールは、初期受信スレッド数を設定し、当該初期受信スレッド数で前記複数の受信スレッドを起動し、
    前記第1のモジュールは、前記ファイルの複数のピースの転送に関する目標量を設定し、
    前記第1のモニタスレッドは、前記ファイルの複数のピースに関する現在の転送量を確認して前記目標量と比較し、目標量を超える場合は送信スレッドの数を減らし、目標量に至らない場合は送信スレッドの数を増やし、上記送信スレッドの数を増やした結果で転送量が下がった場合は送信スレッドの数を減らし、上記送信スレッドの数を一定数減らしても転送量が上がらない場合は送信スレッドの数を増やす、という調整を含む制御を行うこと、を特徴とするマルチスレッド型ファイル入出力システム。
  2. 請求項1記載のマルチスレッド型ファイル入出力システムにおいて、
    前記第2のモジュールにおける各々の受信スレッドは、受信したピースの相対位置と、前記出力先のファイルで次に書き込む相対位置を示す次位置と、を確認しながら、当該受信ピースが、次位置に該当しない場合は、当該受信ピースを前記第2のコンピュータ内の受信バッファに蓄積し、次位置に該当する場合は、当該受信ピースと、前記受信バッファに蓄積されている前記相対位置の順で後続する1つ以上のピースがある場合は当該後続ピースとを一緒に一括で、前記出力先のファイルの次位置から書き込む処理を行うこと、を特徴とするマルチスレッド型ファイル入出力システム。
  3. 請求項1記載のマルチスレッド型ファイル入出力システムにおいて、
    前記第2のモジュールは、前記第2のコンピュータ内の物理的なメモリに前記受信バッファを確保し、前記受信バッファのサイズを、設定された上限値で制限する機能を有し、
    前記第2のモジュールは、前記受信バッファに蓄積されるピースのデータ量が前記受信バッファのサイズを超えた場合、バースト状態とし、
    上記バーストの対処のための継続処理として、前記第1、第2のモジュールは、当該ファイル転送に関する前記出力先のファイルへ書き込み済みのピース以降のピースに関する転送処理を行う機能を有すること、を特徴とするマルチスレッド型ファイル入出力システム。
  4. 請求項1記載のマルチスレッド型ファイル入出力システムにおいて、
    前記第1のコンピュータの第1のアプリケーションプログラムは、前記第1のモジュールに対して第1のファイルの読み出し・送信処理を要求し、当該要求に対して前記第1のモジュールは当該第1のファイルの処理用の第1のインスタンスを生成し、
    前記第2のコンピュータの第2のアプリケーションプログラムは、前記第2のモジュールに対して前記第1のファイルの受信・書き込み処理を要求し、当該要求に対して前記第2のモジュールは当該第1のファイルの処理用の第2のインスタンスを生成し、
    上記構成により複数のファイルの転送処理を同時並行で可能とすること、を特徴とするマルチスレッド型ファイル入出力システム。
  5. ネットワーク上で第1、第2のコンピュータ間でファイルの入出力の処理を実行させるプログラムであり、
    前記ファイルを送信する側の第1のコンピュータに、入力元のファイルからデータを読み出して分割して複数のピースとして前記ネットワークへ送信する処理をマルチスレッドの処理により行わせる第1のプログラムと、
    前記ファイルを受信する側の第2のコンピュータに、前記ネットワークから前記複数のピースを受信して統合して出力先のファイルへ書き込む処理をマルチスレッドの処理により行わせる第2のプログラムと、を有し、
    前記第1のプログラムは、前記分割による複数の各々のピースの送信を、割当てる複数の各々の送信スレッドにより同時並行で処理させ、
    前記第2のプログラムは、前記分割による複数の各々のピースの受信を、割当てる複数の各々の受信スレッドにより同時並行で処理させ、
    前記第1のプログラムは、送信するピースに、当該ファイルの送信のIDと、当該ファイルの先頭位置からの相対位置の情報とを付属させ、
    前記第2のプログラムは、受信したピースの相対位置と、前記出力先のファイルで先頭位置からの順でどの相対位置までピースが書き込み済みかの状態と、を確認しながら、かつ、当該受信ピースを必要に応じて前記第2のコンピュータ内の受信バッファに蓄積しながら、前記出力先のファイルへ前記複数のピースを先頭位置からの順で書き込む処理を行わせ
    前記第1のプログラムは、前記入力元のファイルからデータを読み出して所定のサイズまたは数で分割して前記複数のピースとして、前記第1のコンピュータ内の送信バッファに格納する処理を行う、1つのファイル読み出しスレッドを起動させ、
    前記第2のプログラムは、前記複数のピースを前記出力先のファイルへ先頭位置から順に連続的なデータとして書き込む処理を行う、1つのファイル書き込みスレッドを起動させ、
    前記第1のプログラムは、前記複数の送信スレッドの状況をモニタして当該送信スレッドの数を調整する、第1のモニタスレッドを起動させ、
    前記第2のプログラムは、前記複数の受信スレッドの状況をモニタして当該受信スレッドの数を調整する、第2のモニタスレッドを起動させ、
    前記第1のプログラムは、初期送信スレッド数を設定し、当該初期送信スレッド数で前記複数の送信スレッドを起動させ、
    前記第2のプログラムは、初期受信スレッド数を設定し、当該初期受信スレッド数で前記複数の受信スレッドを起動させ、
    前記第1のプログラムは、前記ファイルの複数のピースの転送に関する目標量を設定し、
    前記第1のモニタスレッドは、前記ファイルの複数のピースに関する現在の転送量を確認して前記目標量と比較し、目標量を超える場合は送信スレッドの数を減らし、目標量に至らない場合は送信スレッドの数を増やし、上記送信スレッドの数を増やした結果で転送量が下がった場合は送信スレッドの数を減らし、上記送信スレッドの数を一定数減らしても転送量が上がらない場合は送信スレッドの数を増やす、という調整を含む制御を行うこと、を特徴とするマルチスレッド型ファイル入出力プログラム。
JP2011071499A 2011-03-29 2011-03-29 マルチスレッド型ファイル入出力システム、及びマルチスレッド型ファイル入出力プログラム Expired - Fee Related JP5535115B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011071499A JP5535115B2 (ja) 2011-03-29 2011-03-29 マルチスレッド型ファイル入出力システム、及びマルチスレッド型ファイル入出力プログラム
US13/173,428 US8423688B2 (en) 2011-03-29 2011-06-30 Multi-thread file input and output system and multi-thread file input and output program
PCT/JP2012/055911 WO2012132812A1 (ja) 2011-03-29 2012-03-08 マルチスレッド型ファイル入出力システム、及びマルチスレッド型ファイル入出力プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011071499A JP5535115B2 (ja) 2011-03-29 2011-03-29 マルチスレッド型ファイル入出力システム、及びマルチスレッド型ファイル入出力プログラム

Publications (2)

Publication Number Publication Date
JP2012208549A JP2012208549A (ja) 2012-10-25
JP5535115B2 true JP5535115B2 (ja) 2014-07-02

Family

ID=46928834

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011071499A Expired - Fee Related JP5535115B2 (ja) 2011-03-29 2011-03-29 マルチスレッド型ファイル入出力システム、及びマルチスレッド型ファイル入出力プログラム

Country Status (3)

Country Link
US (1) US8423688B2 (ja)
JP (1) JP5535115B2 (ja)
WO (1) WO2012132812A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101374533B1 (ko) * 2013-04-17 2014-03-14 주식회사 엔써티 대용량 데이터에 대한 고성능 복제 및 백업 시스템과, 고성능 복제 방법
US9628299B2 (en) * 2013-05-24 2017-04-18 Datadirect Networks, Inc. Method and system for data transfer between compute clusters and file system
CN103442037A (zh) * 2013-08-09 2013-12-11 华南理工大学 一种基于ftp协议实现超大文件多线程断点上传的方法
US10084839B2 (en) * 2013-12-27 2018-09-25 Sap Se Upload operation using multiple connections
US9398014B2 (en) * 2014-04-04 2016-07-19 International Business Machines Corporation Validation of a location resource based on recipient access
US9722958B2 (en) * 2014-07-18 2017-08-01 International Business Machines Corporation Recommendation of a location resource based on recipient access
JP6378044B2 (ja) * 2014-10-31 2018-08-22 東芝メモリ株式会社 データ処理装置、データ処理方法およびプログラム
US20170142186A1 (en) * 2015-11-17 2017-05-18 Le Holdings (Beijing) Co., Ltd. Method, apparatus, and electronic device for downloading files
CN105893409A (zh) * 2015-11-17 2016-08-24 乐视网信息技术(北京)股份有限公司 文件下载方法及装置
JP6773299B2 (ja) * 2016-06-10 2020-10-21 富士通コネクテッドテクノロジーズ株式会社 データ書き込み制御装置、データ書き込み制御プログラムおよびデータ書き込み制御方法
USD848486S1 (en) * 2017-01-30 2019-05-14 Zama Japan Kabushiki Kaisha Needle valve for carburetors
CN110708363A (zh) * 2019-09-20 2020-01-17 济南浪潮数据技术有限公司 一种文件传输方法、系统、电子设备及存储介质
CN111404990B (zh) * 2020-02-14 2023-06-02 Oppo(重庆)智能科技有限公司 文件传输方法、装置、客户端及存储介质
CN111338780B (zh) * 2020-02-28 2023-03-31 中国工商银行股份有限公司 并发文件的传输方法及装置
CN115150383B (zh) * 2021-03-31 2023-07-07 华为技术有限公司 文件发送方法、设备及计算机可读存储介质
CN118283026A (zh) * 2022-12-30 2024-07-02 华为技术有限公司 传输文件的方法及电子设备
CN116880998A (zh) * 2023-06-09 2023-10-13 广州开得联智能科技有限公司 资源文件的分解处理方法、装置、设备和存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809527A (en) * 1993-12-23 1998-09-15 Unisys Corporation Outboard file cache system
US5572590A (en) * 1994-04-12 1996-11-05 International Business Machines Corporation Discrimination of malicious changes to digital information using multiple signatures
US5646866A (en) * 1995-02-15 1997-07-08 Intel Corporation Preloading files for subsequent processing
JP3711156B2 (ja) 1995-05-11 2005-10-26 Kddi株式会社 ファイル転送方法
JP2970553B2 (ja) * 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
JPH10171607A (ja) * 1996-12-09 1998-06-26 Matsushita Electric Ind Co Ltd データ転送システム
US7590133B2 (en) * 1998-02-24 2009-09-15 Canon Kabushiki Kaisha Data communication system, data communication method, and data communication apparatus
JP2000029854A (ja) * 1998-07-10 2000-01-28 Hitachi Ltd ホストコンピュータ間のファイル転送方法
JP3472511B2 (ja) * 1999-07-12 2003-12-02 Kddi株式会社 データ伝送装置
US7340764B2 (en) * 2000-01-26 2008-03-04 Sony Corporation Data transmission system
JP2005011119A (ja) 2003-06-19 2005-01-13 Hitachi Software Eng Co Ltd データ転送方法
WO2005091161A1 (en) * 2004-03-22 2005-09-29 Nitgen Technologies Inc. A streaming based contents distribution network system and methods for splitting, merging and retrieving files
JPWO2006051964A1 (ja) * 2004-11-12 2008-05-29 株式会社ジャストシステム データ処理システム、データ処理方法、及び管理サーバ
JP2008077266A (ja) * 2006-09-20 2008-04-03 Nec Corp サービス制御装置、分散サービス制御システム、サービス制御方法、及び、プログラム
JP2009194765A (ja) * 2008-02-15 2009-08-27 Nippon Telegr & Teleph Corp <Ntt> 情報配信システムとその情報配信装置

Also Published As

Publication number Publication date
US8423688B2 (en) 2013-04-16
WO2012132812A1 (ja) 2012-10-04
US20120254485A1 (en) 2012-10-04
JP2012208549A (ja) 2012-10-25

Similar Documents

Publication Publication Date Title
JP5535115B2 (ja) マルチスレッド型ファイル入出力システム、及びマルチスレッド型ファイル入出力プログラム
JP5364773B2 (ja) クライアントとサーバ間の接続を管理するためのシステムおよび方法
US7953817B2 (en) System and method for supporting TCP out-of-order receive data using generic buffer
US8732306B2 (en) High speed parallel data exchange with transfer recovery
US20020026502A1 (en) Network server card and method for handling requests received via a network interface
US20050135395A1 (en) Method and system for pre-pending layer 2 (L2) frame descriptors
US8788576B2 (en) High speed parallel data exchange with receiver side data handling
US6701373B1 (en) Data transmission apparatus
CN113709131B (zh) 一种网络数据传输方法、装置、计算机设备及可读介质
US20130138771A1 (en) Apparatus and method for transmitting data
US7457845B2 (en) Method and system for TCP/IP using generic buffers for non-posting TCP applications
US9130740B2 (en) Variable acknowledge rate to reduce bus contention in presence of communication errors
US11347567B2 (en) Methods and apparatus for multiplexing data flows via a single data structure
CN115086104B (zh) 一种支持数据断线重传的方法及串口服务器
KR100992257B1 (ko) 완료 프로세싱 방법 및 시스템과 컴퓨터 판독 가능한 기록매체
JP2007200055A (ja) iSCSI通信制御方法とそれを用いた記憶システム
CN103888452B (zh) 用于报文压缩的保序方法和装置
US7817572B2 (en) Communications apparatus and communication method
US20160085683A1 (en) Data receiving device and data receiving method
JP2020144410A (ja) メモリコントローラ
CN101662416B (zh) 多重网络封包的处理方法
JPH10154116A (ja) データ転送方法
CN117687984A (zh) 数据写入方法、装置、设备、介质和分布式文件系统
US8121127B2 (en) Method for handling multiple network packets
WO2010029168A1 (en) A method and an apparatus for data storage and communications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140207

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140401

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140422

R150 Certificate of patent or registration of utility model

Ref document number: 5535115

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees