JP2002196960A - ファイル入出力制御方法、ファイル管理サーバ及び並列計算機システム - Google Patents

ファイル入出力制御方法、ファイル管理サーバ及び並列計算機システム

Info

Publication number
JP2002196960A
JP2002196960A JP2000392686A JP2000392686A JP2002196960A JP 2002196960 A JP2002196960 A JP 2002196960A JP 2000392686 A JP2000392686 A JP 2000392686A JP 2000392686 A JP2000392686 A JP 2000392686A JP 2002196960 A JP2002196960 A JP 2002196960A
Authority
JP
Japan
Prior art keywords
file
processes
request
buffer
collective
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.)
Pending
Application number
JP2000392686A
Other languages
English (en)
Inventor
Koji Sonoda
浩二 薗田
Naoki Utsunomiya
直樹 宇都宮
Hiroyuki Kumazaki
裕之 熊▲崎▼
Toshiya Kurakake
稔也 鞍掛
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 Ltd
Original Assignee
Hitachi 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 Ltd filed Critical Hitachi Ltd
Priority to JP2000392686A priority Critical patent/JP2002196960A/ja
Priority to US10/024,336 priority patent/US6687764B2/en
Publication of JP2002196960A publication Critical patent/JP2002196960A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1858Parallel file systems, i.e. file systems supporting multiple processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Abstract

(57)【要約】 【課題】 複数のプロセスが同一ファイルを共有アクセ
スするコレクティブI/Oにおいて、各プロセスのI/
O待ち時間を短縮し、プロセッサ稼働率を向上させる。 【解決手段】 I/O要求を発行する各ユーザプロセス
1110、1210、1310、1410は、I/O要
求を発行するとき、関連する全プロセスの発行するI/
O要求と共に、プロセスの全てがアクセスするファイル
領域情報、プリフェッチを行うか否かを指定する情報、
ディスクのプリアロケートを行うか否かを指定する情報
を、ヒント情報としてシステムに通知する。システム
は、このヒント情報に基づいて、プロセスの全てがアク
セスするファイル領域のデータを格納するバッファを用
意して、全プロセスのI/O処理をこのバッファを使用
して行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ファイル入出力制
御方法、ファイル管理サーバ及び並列計算機システムに
係り、特に、複数のプロセスを協調動作させて計算を行
う並列計算機におけるファイル入出力制御方法、ファイ
ル管理サーバ及び並列計算機システムに関する。
【0002】
【従来の技術】並列計算機上に複数のプロセスを起動
し、それら複数のプロセスを協調させて計算を行う並列
計算は、全プロセスが同一のプログラムコードを実行
し、それぞれ異なるデータに対して演算を行うSPMD
(Single Program Multiple Data stream)モデルが用い
られて行われる場合が多い。このモデルは、全プロセス
が同一のプログラムコードを実行しているため、ほぼ同
じタイミングで全プロセスからI/O要求が発行される
ことが多い。特に、科学技術計算向けの並列プログラム
における処理は、処理に使用するファイルに格納されて
いるデータが配列データであり、同配列データを複数プ
ロセス間で領域分割することが多く、その場合、ある1
つのプロセスが特定の行や列のデータをアクセスするこ
とになる。特定の行や列のデータは、ファイル上で不連
続状に配置されている。このため、前述のような並列プ
ログラムにおける各プロセスのファイルアクセスパター
ンは不連続領域に対するアクセスとなる。
【0003】“Dynamic file-access characteristicso
f a production parllel scientific workload”David
Kots,Song Bac Tho,and Sriram Radhakrishanan.Pro
ceedings of Supercomputing '94、pp.640-649、Novem
ber 1994(以下、Kots-94)には、前述したようなファイ
ルアクセスパターンを持つプログラムが、従来のUNI
X(登録商標)インタフェースを用いてI/O要求を発
行した場合の欠点として、次の2点を挙げている。
【0004】(1)各プロセスは、不連続領域の数分の
I/O要求を発行することになるため、システムコール
のオーバヘッドが増加する。
【0005】(2)システムは、複数のプロセスが発行
するI/O要求相互間の関係を把握することができない
ため、各I/O要求に応じてランダムなディスクアクセ
スが発生する。
【0006】一般に、ディスクアクセスは、メモリアク
セスに比べてそのアクセス速度が遅い。さらに、ランダ
ムなディスクアクセスの性能は、ディスクヘッドの移動
を伴うため、連続領域に対するアクセス性能に比べて悪
い。前述のように並列プログラムを実行するプロセスが
それぞれ不連続領域ファイルアクセスを行うと、各プロ
セスから発行されるI/O要求順序が一定していないた
め、不連続なディスク領域アクセスが発生し、ファイル
の入出力性能が大幅に低下することになる。
【0007】Kots-94 には、さらに、これらの欠点は、
UNIX型のファイル入出力インタフェースが不連続領
域アクセス機能と、複数プロセスのファイル入出力間の
関係を指定する機能とを持たないことに起因するもので
あることを指摘し、それらを解決するための手段とし
て、ストライドI/Oインタフェースや、関連する全て
のプロセスが同一ファイルに対するI/O要求を発行す
るコレクティブI/Oインタフェースの使用が有効であ
ると指摘している。
【0008】ストライドI/Oインタフェースは、ファ
イル上の不連続領域を1回のI/O要求でアクセスする
ことができるインタフェースであり、コレクティブI/
Oインタフェースは、複数のプロセスの全てが同一のフ
ァイルに対してI/O要求を発行するインタフェースで
ある。
【0009】前述のインタフェースの代表例として、
“MPI-2:Extensions to the Message-Passing Interfa
ce”,Message Passing Interface Forum,http://ww
w.mpi-forum.org/docs/docs.html(以下、MPI−2
という)の9章で定義されているMPI−IOを挙げる
ことができる。また、“Data Sieving and コレクティ
ブI/O in ROMIO”,Rajeev Thakur,William Gropp,Ew
ing Lusk,Proceedings ofthe 7th Symposium on the F
rontiers of Massively Parallel Computaion,Februar
y 1999,pp.182-189(以下、ROMIOという)が知
られており、これは、MPI−IOの実現例である。
【0010】前述のROMIOによれば、前述のような
並列プログラムは、各プロセスが発行するI/O要求が
不連続領域に対するアクセスの場合にも、コレクティブ
I/Oによってそれら全てのI/O要求をマージするこ
とにより連続領域に対するアクセスに変換することがで
き、ファイルの入出力性能を向上させることができる。
ROMIOは、関連する全プロセスがコレクティブI/
O要求を発行し終わるのを待ち合わせ、全てのコレクテ
ィブI/O要求が揃った時点で、全I/O要求をマージ
して連続領域に対するアクセスに変換した後にディスク
I/Oを行い、その結果を各プロセスに通知する。前述
のように、ストライドI/Oインタフェースとコレクテ
ィブI/Oインタフェースとを用いることにより、複数
プロセスからのファイル入出力性能の向上を図ることが
できる。
【0011】
【発明が解決しようとする課題】前述した従来技術によ
るコレクティブI/Oは、関連する全てのプロセスがコ
レクティブI/O要求を発行するまで待ち合わせを行う
ため、プロセス間でコレクティブI/O要求の発行時刻
にばらつきがあった場合、最初にコレクティブI/O要
求を発行したプロセスが全プロセスからコレクティブI
/O要求が発行されるまで待たされ、このため、コレク
ティブI/O要求を発行したプロセスが待ち時間の間、
他の処理を実行することができず、プロセッサの稼動率
を低下させてしまうという問題点を有している。
【0012】本発明の目的は、前述した従来技術の問題
点を解決し、複数のプロセスからのファイル入出力に係
るファイル入出力性能をコレクティブI/Oと同等に保
ちながら、各プロセスのファイルI/O待ち時間を短縮
させることのできるファイル入出力制御方法、ファイル
管理サーバ及び並列計算機システムを提供することにあ
る。
【0013】また、本発明の他の目的は、従来のコレク
ティブI/Oインタフェースを変更することなく、各プ
ロセスのコレクティブI/O要求の待ち時間を短縮する
ことができるファイル入出力制御方法、ファイル管理サ
ーバ及び並列計算機システムを提供することにある。
【0014】
【課題を解決するための手段】本発明によれば前記目的
は、複数のプロセスが同一のファイルを共有してアクセ
スするファイル入出力制御方法において、前記複数のプ
ロセスのそれぞれが、自プロセスのファイル入出力要求
と、前記複数のプロセスの全てがアクセスするファイル
領域情報を含むヒント情報とをファイル管理サーバに通
知し、ファイル管理サーバは、前記ヒント情報により通
知されたファイル領域に対し入出力を行うためのバッフ
ァを用意し、前記複数のプロセスからのファイル入出力
要求がファイル読み込み要求の場合、前記用意したバッ
ファに前記ヒント情報で指定されたファイル領域のデー
タをディスクから読み込み、ディスクからの読み込み終
了後、各プロセスがファイル入出力要求で指定したデー
タ領域に、前記用意したバッファの対応するメモリ領域
からメモリコピーを行い、前記複数のプロセスからのフ
ァイル入出力要求がファイル書き込み要求の場合、各プ
ロセスがファイル入出力要求で指定したデータ領域から
前記用意したバッファの対応する領域へのメモリコピー
を行い、前記複数のプロセス全てからのメモリコピーの
終了後、前記用意したバッファのデータを前記ヒント情
報で通知されたファイル領域に対してディスク書き込み
を行うことにより達成される。
【0015】前述した処理を備える本発明は、コレクテ
ィブI/O発行時に各ユーザプロセスが、自分の担当領
域に加えて、全ユーザプロセスが読み込みを行うファイ
ル領域をヒント情報として指定する。ファイル管理サー
バは、各ユーザプロセスのコレクティブI/O要求発行
時に、ヒント情報により全ユーザプロセスのI/O要求
を把握できるため、その情報を用いて全ユーザプロセス
分のデータを一括してディスクから読み出すことができ
る。この結果、本発明は、他のプロセスのコレクティブ
I/O要求発行を待ち合わせる必要がなく、ユーザプロ
セスに早く制御を返すことができプロセッサの利用率の
向上を図ることができる。
【0016】また、本発明は、一旦ディスクから読み出
したデータを、全ユーザプロセスがコレクティブI/O
要求を発行し終えるまでファイル管理サーバ内のバッフ
ァに保持しておく。そして、他のユーザプロセスがコレ
クティブI/O要求を発行したとき、そのバッファから
該当するデータのみをユーザ空間にコピーする。このた
め、本発明は、必要なディスクアクセスを最初のプロセ
スがコレクティブI/O要求を発行したときの1回のみ
とすることができ、従来のコレクティブI/O方法と同
等の性能を実現することができる。
【0017】また、本発明は、複数のユーザプロセスが
同一の並列ファイルにWRITEアクセスを行う場合に
おいても前述と同様に適用することができる。すなわ
ち、各ユーザプロセスは、WRITEコレクティブI/
O要求を発行するとき、全ユーザプロセスが書き込みを
行うファイル領域をヒント情報として指定する。ファイ
ル管理サーバは、このヒント情報を用いて、マージした
I/Oデータの格納に必要なバッファサイズを把握する
ことができ、ファイルサーバ内に即座にバッファを確保
することができる。このため、本発明は、ユーザプロセ
スのコレクティブI/Oデータを、バッファの該当する
領域にコピーした後、すぐに制御をユーザプロセスに戻
すことができ、プロセッサの利用率を向上させることが
できる。
【0018】さらに、本発明は、ファイルサーバ内に確
保したバッファを、全ユーザプロセスがコレクティブI
/O要求の発行を完了するまで保持し、全ユーザプロセ
スのコレクティブI/O要求データがそろった時点で1
度だけディスクへの書き込みを行えばよいので、従来の
コレクティブI/O方法と同等の性能を実現することが
できる。
【0019】
【発明の実施の形態】以下、本発明によるファイル入出
力制御方法、ファイル管理サーバ及び並列計算機システ
ムの一実施形態を図面により詳細に制御する。
【0020】図1は本発明が適用される並列計算機シス
テムの構成を示すブロック図であり、まず、これについ
て説明する。
【0021】図示並列計算機システムは、複数の計算ノ
ード1100、1200、1300、1400と複数の
I/Oノード1500、1600、1700、1800
とがネットワーク1900により結合されて構成されて
いる。各計算ノード及び各I/Oノードのそれぞれは、
プロセッサ1130、1230、1330、1430、
1530、1630、1730、1830とメモリ11
40、1240、1340、1440、1540、16
40、1740、1840とを備えている。
【0022】各I/Oノード1500、1600、17
00、1800のそれぞれには、ディスク1520、1
620、1720、1820が接続され、メモリ内に
は、ファイルを管理するファイルサーバ1510、16
10、1710、1810が格納されている。また、各
計算ノード上のメモリには、ユーザプロセス1110、
1210、1310、1410と、ユーザプロセスから
のI/O要求を受け取り、I/Oノードのファイルサー
バにI/O要求を発行するファイルサーバエージェント
1120、1220、1320、1420が格納されて
いる。
【0023】I/Oサーバ内のファイルサーバ151
0、1610、1710、1810は、複数のディスク
1520、1620、1720、1820上に並列ファ
イルシステムを構成している。並列ファイルシステムの
構成方法としては、“TFLOPS PFS:Architecture and D
esign of A Highly Efficient Parallel File System-
ユ,Sharad Garg,Proceedings of Super Computing” '
98,Nov.10 1998 に記載された方法、特開平11−
15720号公報に記載の方法等を利用することができ
る。
【0024】図1に示す例は、特開平11−15720
号公報に記載の方法を用いて並列ファイルシステムを構
築している。すなわち、図1において、各ファイルサー
バ1510、1610、1710、1810及びファイ
ルサーバエージェント1120、1220、1320、
1420は、並列ファイル内のオフセットとディスクと
を対応付けるファイル構造テーブルを保持しており、フ
ァイル入出力時に、ファイル構造テーブルを参照して各
ディスク毎のアクセス要求を作成する。
【0025】簡単のため、本発明の実施形態は、並列フ
ァイルが一定サイズのブロックを単位として各ディスク
に分散して格納され、ユーザプロセスがブロック単位で
ファイルにアクセスする例を用いて説明する。しかし、
ファイル構造の定義を任意のファイルオフセットとサイ
ズとで指定したり、あるいは、アクセス範囲を任意のフ
ァイルオフセットとサイズとを用いて指定するようにす
ることも可能である。
【0026】なお、図1に示すシステムは、計算ノード
内にファイルサーバエージェントを備え、I/Oノード
内にファイルサーバを備えるとしているが、ファイルサ
ーバエージェントとファイルサーバとは、全体で1つの
ファイル管理サーバを構成するものであり、図1に示す
ように分離されていてもよいが、計算ノード内にファイ
ルサーバエージェントとファイルサーバとによるファイ
ル管理サーバを備えるようにしてもよい。また、ファイ
ルサーバエージェントとファイルサーバとによるファイ
ル管理サーバを独立した構成として、ネットワーク19
00に接続しておいてもよい。
【0027】図2は各ユーザプロセスが担当する配列デ
ータと、その配列データが格納されている並列ファイル
と、並列ファイルの各ブロックを格納する各ディスク上
のストライプファイルとの関係を説明する図である。
【0028】各ユーザプロセスが担当する配列データ2
100、その配列データが格納されている並列ファイル
2200、及び、並列ファイル2200の各ブロックを
格納する各ディスク1520、1620、1720、1
820上のストライプファイル1521、1621、1
721、1821の関係を示している。
【0029】配列データ2100は、図示例の場合、4
×4の行列による16個のブロックからなるとしてお
り、各ユーザプロセスは、それぞれ配列データの異なる
行を担当する。配列データ2100の各ブロックは、並
列ファイル2200に行方向優先に格納される。このた
め、各ユーザプロセスは、並列ファイル2200上の異
なる領域を連続にアクセスすることが可能である。例え
ば、ユーザプロセス1110は、配列データのブロック
1〜4からなるサブファイルをアクセスする。これらの
ブロックは、並列ファイル2200上の先頭の4ブロッ
クに連続配置されているため、並列ファイル2200の
先頭から4ブロックが連続してアクセスされることにな
る。
【0030】ところが、並列ファイル2200は、ブロ
ック単位で異なるディスクのストライプファイル152
1、1621、1721、1821に分散格納されてい
るため、ユーザプロセス1110の発行するコレクティ
ブI/O要求は、ストライプファイル1521、162
1、1721、1821の全てに対してアクセスを行う
ことになる。複数のディスクへのアクセスは、一般に、
並列に実行することができ、このため、高速に分散格納
されている複数のブロックを読み出すことが可能であ
る。
【0031】図3は各ユーザプロセスが用いるコレクテ
ィブI/Oインタフェースを説明する図である。
【0032】コレクティブI/Oインタフェースは、図
3に示すように、ユーザプロセス自身のI/O要求11
30とヒント情報1140とにより構成される。I/O
要求1130には、ファイル識別子fd1131、アクセ
スするファイルブロック番号req1132、I/Oバッ
ファのアドレス buf1133が含まれる。また、ヒント
情報1140には、全ユーザプロセスがアクセスするフ
ァイルブロック番号 all_blk1141とバッファの保持
期間time1142とが含まれる。
【0033】図3に示す例は、ファイル識別子4で示さ
れるファイルのブロック1から4に対し、 bufで示され
るバッファとの間でI/Oを行うことを示しており、ヒ
ント情報が、全プロセスのアクセスするファイル領域が
ブロック1から16であること、及び、ファイルサーバ
内に保持するバッファの保持期間を10秒とすることを
指定している。なお、バッファの保持期間は、システム
管理者あるいはユーザにより任意に設定することがで
き、長いほどよいが、ファイルサイズによって最適な値
を予測することもできる。
【0034】図4はファイルサーバエージェントが、ユ
ーザプロセスが指定したコレクティブI/O要求から各
ストライプファイル毎のサブコレクティブI/O要求を
作成するために使用するファイル管理テーブルとファイ
ル構造テーブルとについて説明する図であり、以下、こ
れについて説明する。
【0035】ファイル管理テーブル1121は、オープ
ンしたファイルを管理するためのテーブルであり、オー
プンファイル毎に1つのエントリが用意される。各エン
トリは、ファイル識別子fd1150、グループ識別子 G
ID1151、全プロセス数 total1153、ファイル構
造テーブルへのポインタinfo1154により構成され
る。
【0036】グループ識別子 GID1151は、コレクテ
ィブI/Oを行うプロセスのグループに対し、オープン
ファイル毎にシステムが与える識別子である。全プロセ
ス数total1153は、コレクティブI/Oを行うプロ
セスのグループに含まれる全プロセス数を示す。そし
て、グループ識別子 GID1151、全プロセス数 total
1153は、ファイルサーバエージェントが作成する各
ストライプファイルへのサブコレクティブI/O要求に
付加され、ファイルサーバが複数プロセスからのサブコ
レクティブI/O要求のマッチングを行うために使用さ
れる。
【0037】図4において、エントリ1160は、ユー
ザプロセス1110がコレクティブI/O要求を発行す
るオープンファイルのエントリ例を示しており、ファイ
ル識別子が4、グループ識別子が4321、全プロセス
数が4、ファイル構造テーブルへのポインタが1180
を指していることを示している。
【0038】ファイル構造テーブル1122は、並列フ
ァイルを構成する全ストライプファイルの識別子 sfile
1170と、各ストライプファイルに格納する並列ファ
イルのブロック番号リストblocks1171とにより構成
される。このファイル構造テーブル1122は、並列フ
ァイル内のあるブロックが、どのストライプファイルに
格納されているかの対応関係を保持している。ファイル
サーバエージェントは、このファイル構造テーブルを参
照してユーザプロセスの発行するコレクティブI/O要
求を各ストライプファイルに対するサブコレクティブI
/O要求に変換する。
【0039】図4において、1つのファイル構造テーブ
ル1180は、ユーザプロセス1110がコレクティブ
I/Oを発行している並列ファイルの構造を示してお
り、ストライプファイル1521、1621、172
1、1821が、それぞれ(1、5、9、13)、
(2、6、10、14)、(3、7、11、15)、
(4、8、12、16)のブロックを格納していること
を示している。ここで、ファイル構造テーブルに記述さ
れているブロック番号は、並列ファイルの先頭からのブ
ロック番号である。そして、ブロック番号リスト117
1内の順番が、各ストライプファイル内でのブロック番
号に対応しており、ファイルサーバエージェントが作成
する各ストライプファイルに対するサブコレクティブI
/O要求は、このストライブファイル内でのブロック番
号を指定する。
【0040】図5はファイルサーバエージェントがユー
ザプロセスのコレクティブI/O要求を元に作成するス
トライプファイルへのサブコレクティブI/O要求を説
明する図である。
【0041】サブコレクティブI/O要求1910は、
ストライブファイル識別子 r-sfile1911、グループ
識別子 r-GID1912、全プロセス数 r-total191
4、全ユーザプロセスがアクセスするストライプファイ
ルブロック番号all_sblk1915、I/O種別 r-cmd1
916、I/O要求ストライプファイルブロック r-req
1917、データr-data1918、ファイルサーバ上で
のバッファ保持期間time1919により構成される。
【0042】ストライプファイル識別子 r-sfile191
1は、ファイル構造テーブル1122内のストライプフ
ァイル識別子リスト sfile1170から取得する。グル
ープ識別子 r-GID1912と全プロセス数 r-total19
14とは、ファイル管理テーブル1121内のグループ
識別子 GID1151と全プロセス数 total1153とか
ら取得する。I/O種別 r-cmd1916は、ユーザのコ
レクティブI/O要求から取得する。I/O要求ストラ
イプファイルブロック r-req1917と全ユーザプロセ
スがアクセスするストライプファイルブロック番号all_
sblk1915とは、ユーザが指定したコレクティブI/
O要求とヒント情報とを用い、ファイル構造テーブル1
122を参照して作成する。なお、サブコレクティブI
/O要求の作成処理の詳細は後述する。
【0043】図6はファイルサーバが保持するコレクテ
ィブI/O管理テーブルの構成を説明する図であり、以
下、これについて説明する。
【0044】図示コレクティブI/O管理テーブル15
11は、ファイルサーバがコレクティブI/Oの制御を
行うためのテーブルである。コレクティブI/O管理テ
ーブル1511には、コレクティブI/O毎に1つのエ
ントリが割り当てられる。また、各エントリに対応し
て、コレクティブI/Oバッファ1560が1つずつ割
り当てられる。各エントリは、複数のコレクティブI/
O要求を識別するためのストライプファイル識別子 sfi
le1551、グループ識別子 GID1552、全プロセス
数 total1554、コレクティブI/O処理完了プロセ
ス数done1555、ヒント情報で与えられたストライプ
ファイルブロック番号リストall_sbuf1556、I/O
種別 cmd1557、コレクティブI/Oバッファへのア
ドレス buf1558、及び、バッファの保持期間time
(1559)により構成される。
【0045】図6に示す例は、ストライプファイル15
21に対しグループ識別子4321を持つグループが2
回目のコレクティブI/Oを実行していることを示して
いる。また、当グループを構成するプロセス数は4、全
プロセスがアクセスするストライプファイルブロックは
1、2、3、4の読み込み要求であり、すでに1つのプ
ロセスがI/O要求を完了している。そして、r-dataが
指すバッファの有効期間は10秒である。
【0046】次に、本発明の実施形態におけるコレクテ
ィブI/O方法の処理について説明する。
【0047】図7はファイルサーバエージェントの処理
動作を説明するフローチャート、図8はファイルサーバ
エージェントのサブコレクティブI/O要求作成の処理
動作を説明するフローチャート、図9はファイルサーバ
の処理動作を説明するフローチャート、図10はコレク
ティブI/Oバッファのタイムアウト処理の動作を説明
するフローチャートであり、以下、これらのフローを参
照して、本発明の実施形態におけるコレクティブI/O
方法の処理について説明する。
【0048】最初に図7を用いてファイルサーバエージ
ェントの処理動作を説明する。
【0049】(1)ユーザプロセスがコレクティブI/
Oインタフェースを用いて発行したコレクティブI/O
要求は、まず始めにユーザプロセスの存在するノード上
のファイルサーバエージェントにより受け取られる(ス
テップ7001)。
【0050】(2)コレクティブI/O要求を受け取っ
たファイルサーバエージェントは、ユーザプロセスのI
/Oデータを各ファイルサーバとの間で通信するための
転送バッファを確保し、コレクティブI/O要求が WRI
TE要求であるか否かを判定する(ステップ7002、7
003)。
【0051】(3)ステップ7003での判定で、コレ
クティブI/O要求が WRITE要求であった場合、ユーザ
プロセスが指定したデータ領域から、転送バッファにデ
ータをコピーし、ファイルサーバに転送することができ
るようにする(ステップ7004)。
【0052】(4)ステップ7004の処理後、また
は、ステップ7003で、コレクティブI/O要求が W
RITE要求でなかった場合、ファイルサーバエージェント
は、ユーザプロセスのコレクティブI/O要求を各スト
ライプファイルに対するサブコレクティブI/O要求に
分割する。なお、このステップでのサブコレクティブI
/O要求への分割処理は、図8を参照して後述する(ス
テップ7005)。
【0053】(5)ステップ7005の処理で全ストラ
イプファイルに対するサブコレクティブI/O要求が作
成できると、ファイルサーバエージェントは、各サブコ
レクティブI/O要求を、各ストライプファイルを管理
するファイルサーバに並列に送信して、それらからの応
答を待つ。このとき、送信するサブコレクティブI/O
要求が WRITE要求の場合、転送バッファのデータも同時
に転送する(ステップ7006)。
【0054】(6)各ファイルサーバからの応答を受信
すると、I/O要求がREADであるか否かを判断し、READ
要求の場合、転送バッファに受信データが格納されてい
るため、該当するデータをユーザプロセスのデータ領域
にコピーする(ステップ7007〜7009)。
【0055】(7)ステップ7009の処理後、また
は、ステップ7008でI/O要求がREADでなかった場
合、全てのファイルサーバからの応答受信が完了したか
否かを判断し、完了していた場合、転送バッファを解放
して処理を終了する。また、まだ、応答受信が完了して
いない場合、残りのファイルサーバからの受信待ちから
の処理継続する(ステップ7010、7011)。
【0056】次に、前述のステップ7005でのファイ
ルサーバエージェントがサブコレクティブI/O要求を
作成する処理動作を図8を参照して説明する。このサブ
コレクティブI/O要求の作成は、ファイル管理テーブ
ル1121及びファイル構造テーブル1122を用いて
おこなわれる。
【0057】(1)まず、ユーザプロセスが指定したフ
ァイル識別子を用いて、図4に示すファイル管理テーブ
ル1121を検索し、オープンファイルエントリ116
0を取得する(ステップ7101)。
【0058】(2)次に、オープンファイルエントリに
含まれるファイル構造テーブルへのポインタinfo115
4のフィールドを参照して、ファイル構造テーブル11
22の該当するエントリ1180を取得する(ステップ
7102)。
【0059】(3)前述で説明したように、ステップ7
102で取得したエントリ1180には並列ファイルを
構成する全ストライプファイルと、各ストライプファイ
ルが格納している並列ファイル内のブロック番号のリス
トが記述されているので、ファイルサーバエージェント
は、各ストライプファイルのブロック番号リストを取得
しする(ステップ7103)。
【0060】(4)そして、ファイルサーバエージェン
トは、ユーザプロセスが指定したI/O要求ブロックと
ヒント情報で指定された全ユーザプロセスアクセスブロ
ックとのうち、各ストライプファイルに格納されている
ブロックを抽出する(ステップ7104)。
【0061】(5)さらに、ファイルサーバエージェン
トは、抽出したブロックの番号を各ストライプファイル
内のブロック番号に変換し、ブロック番号の変換が完了
すると、そのブロック番号とオープンファイルエントリ
の情報をまとめてサブコレクティブI/O要求を作成す
る。サブコレクティブI/O要求の構成は、図5に示し
た通りである(ステップ7105、7107)。
【0062】(6)全てのストライプファイルに対する
サブコレクティブI/O要求の作成処理が完了したか否
かを調べ、完了していなければステップ7103からの
処理を繰り返し実行し、完了している場合、ここでの処
理を終了する(ステップ7108)。
【0063】図9はファイルサーバにおける処理動作を
説明するフローチャートであり、次に、これについて説
明する。
【0064】(1)ファイルサーバは、サブコレクティ
ブI/O要求を受信すると、コレクティブI/O管理テ
ーブル1511を検索する。この検索処理は、受信した
サブコレクティブI/O要求に含まれるストライプファ
イル識別子1911とグループ識別子1912とをキー
として行われる(ステップ7201、7202)。
【0065】(2)ステップ7202での検索処理の結
果、該当するエントリが存在するか否かを判定し、該当
するエントリが存在しない場合、新規なエントリを作成
してコレクティブI/O管理テーブル1511に登録す
る。このとき、登録するエントリの初期化は、サブコレ
クティブI/O要求に含まれるストライプファイル識別
子1911、グループ識別子1912、全プロセス数1
914、全プロセスがアクセスするブロックリスト19
15、I/O種別1916、コレクティブI/Oバッフ
ァの保持期間1919の情報を、コレクティブI/O管
理テーブル1511のストライプファイル識別子155
1、グループ識別子1552、全プロセス数1554、
全プロセスがアクセスするブロックリスト1556、I
/O種別1557、コレクティブI/Oバッファの保持
期間1559に格納し、コレクティブI/O処理完了プ
ロセス数done1555を“0”にクリアすることにより
行う(ステップ7203、7204)。
【0066】(3)ステップ7204の処理後、また
は、ステップ7203の判定で、該当するエントリが存
在していた場合、すなわち、コレクティブI/O管理テ
ーブル1511のエントリが取得できると、次にコレク
ティブI/Oバッファが割り当てられているか否かをチ
ェックする(ステップ7205)。
【0067】(4)ステップ7205のチェックで、コ
レクティブI/Oバッファが割り当てられていなかった
場合、コレクティブI/Oバッファを確保し、コレクテ
ィブI/O管理テーブルのコレクティブI/Oバッファ
アドレス1558への登録を行ってエントリを登録する
と共にタイマを起動する。このとき、タイマのタイムア
ウト期間は、コレクティブI/O管理テーブルのバッフ
ァの保持期間1559に設定する(ステップ720
6)。
【0068】(5)ステップ7206の処理で、コレク
ティブI/Oバッファの確保を行うことができると、I
/O要求種別がREAD要求か否かを調べ、READ要求の場
合、全プロセスがアクセスするブロックの内容をディス
クからコレクティブI/O用バッファに読み込む(ステ
ップ7207、7208)。
【0069】(6)ステップ7208の処理で、全プロ
セスがアクセスするブロックの内容をディスクからコレ
クティブI/O用バッファに読み込んだ後、ステップ7
205でのチェックで、コレクティブI/Oバッファが
すでに割り当てられていた場合、または、ステップ72
07の判定で、I/O要求種別がREAD要求でなかった場
合、再びI/O要求種別がREAD要求か否かを調べる(ス
テップ7209)。
【0070】(7)ステップ7209での判定で、I/
O要求種別がREAD要求であった場合、コレクティブI/
Oバッファ上の該当するデータをサブコレクティブI/
O要求を送信してきたファイルサーバエージェントに送
信し、I/O要求種別がREAD要求でない場合(すなわ
ち、WRITEの場合)、サブコレクティブI/O要求に含ま
れる書き込みデータをコレクティブI/O用バッファの
該当する領域に書き込む(ステップ7210、721
1)。
【0071】(8)前述までの処理で、1つのファイル
サーバエージェントからのサブコレクティブI/O要求
の処理が完了するので、コレクティブI/O管理テーブ
ルのコレクティブI/O処理完了プロセス数done155
5をインクリメントする(ステップ7212)。
【0072】(9)さらに、コレクティブI/O処理完
了プロセス数done1555と全プロセス数 total155
4とを比較し、全プロセスのコレクティブI/O処理が
完了したか否かを調べ、全プロセスのコレクティブI/
O処理が完了していなければ、ここでの処理終了し、次
のサブコレクティブI/O要求の受信を待つ(ステップ
7213)。
【0073】(10)ステップ7213の判定で、全プロ
セスのコレクティブI/O処理が完了していれば、I/
O要求種別がWRITE要求か否かを調べ、WRITE要求の場
合、コレクティブI/O用バッファの内容をディスクに
書き込む(ステップ7214、7215)。
【0074】(11)ステップ7215の処理後、また
は、ステップ7214の判定で、I/O要求種別が WRI
TE要求でなかった場合、コレクティブI/O用バッファ
とコレクティブI/O管理テーブルのエントリとを解放
し、タイマをキャンセルして、ファイルサーバでの処理
を終了する(ステップ7216)。
【0075】図10はコレクティブI/Oバッファの保
持期間が過ぎた場合のファイルサーバでのタイムアウト
処理の動作を説明するフローチャートであり、次に、こ
れについて説明する。
【0076】(1)コレクティブI/Oバッファの保持
期間が過ぎタイムアウトが発生すると、そのコレクティ
ブI/OバッファのI/O種別が WRITE要求か否かを調
べ、 WRITE要求であった場合、コレクティブI/Oバッ
ファのデータをディスクに書き込む(ステップ7301
〜7303)。
【0077】(2)ステップ7303でのデータのディ
スクへの書き込みの終了後、または、ステップ7302
の判定で、コレクティブI/OバッファのI/O種別が
WRITE要求でなかった場合、そのコレクティブI/Oバ
ッファアドレスをコレクティブI/O管理テーブルから
抹消して、コレクティブI/Oバッファを解放して処理
を終了する(ステップ7304)。
【0078】前述したようなタイムアウトの処理によ
り、一定時間以上の間メモリを保持する必要をなくすこ
とができる。また、タイムアウト発生後に残りのサブコ
レクティブI/O要求を受信した場合、そのときに再び
コレクティブI/Oバッファを取得することができるた
め、バッファを開放してしまっても問題が生じることは
ない。
【0079】前述した本発明の実施形態によれば、ユー
ザプロセスがコレクティブI/O要求と共にヒント情報
を通知し、ファイルサーバ内部にコレクティブI/Oバ
ッファを設けることにより、グループ内の全プロセスの
コレクティブI/O要求を待ち合わせる必要をなくすこ
とができ、この結果、各ユーザプロセスがコレクティブ
I/O処理で無駄に待たされることがなく、CPUの稼
働率を上げることができる。また、前記した本発明の実
施形態によれば、コレクティブI/Oバッファの保持期
間を指定することができるので、長時間メモリが占有さ
れるという無駄を避けることができる。
【0080】次に、本発明の他の実施形態を図11〜図
15を参照して説明する。
【0081】以下に説明する本発明の他の実施形態は、
コレクティブI/O要求とヒント情報通知とを分離した
点が前述下実施形態と異なっている。すなわち、前述し
た実施形態は、コレクティブI/O要求時にヒント情報
を通知していたが、他の実施形態は、コレクティブI/
O要求に先立ってヒント情報を通知するようにしてい
る。このようにヒント情報通知とコレクティブI/O要
求とを分離することにより従来のコレクティブI/Oイ
ンタフェースを変更することなく、CPUの稼働率を向
上させることがが可能となる。
【0082】本発明の他の実施形態は、前述した場合と
同様に、図1に示す並列計算機システムに適用されて動
作する。また、各ユーザプロセスも、前述した場合と同
様に、図2に示す配列データをアクセスする。そして、
この実施形態が、前述までに説明した実施形態と異なる
点は、ユーザプロセスからのI/O要求発行方法、ファ
イルサーバエージェントが保持するファイル管理テーブ
ル、及び、ファイルサーバエージェントの処理方法の3
点であり、その他は同様である。このため、以下では、
前述までに説明した実施形態との相違点についてのみ説
明する。
【0083】図11は本発明の他の実施形態で使用され
るファイル管理テーブルの構造を説明する図であり、ま
ず、これについて説明する。
【0084】図示ファイル管理テーブルのエントリは、
ファイル識別子fd3310、グループ識別子 GID332
0、全プロセス数 total3330、ファイル構造テーブ
ルへのポインタinfo3340、全プロセスがアクセスす
るブロックリスト all_blk3350、コレクティブI/
Oバッファの保持期間time3360、プリフェッチ指示
フィールドpf3370、プリアロケート指示フィールド
pa3380により構成される。これらのうち、ファイル
識別子3310、グループ識別子3320、全プロセス
数3330、ファイル構造テーブルへのポインタ334
0は、図4により説明したものと同一である。
【0085】そして、全プロセスがアクセスするブロッ
クリスト3350、コレクティブI/Oバッファの保持
期間3360、プリフェッチ指示フィールド3370、
プリアロケート指示フィールド3380は、何れも後述
するヒント情報通知インタフェースで与えられる情報を
保持するためのフィールドである。
【0086】図12は本発明の他の実施形態で使用する
ユーザインタフェースを説明する図である。ここで使用
するユーザインタフェースは、何れも MPI-2に定義され
ているインタフェースであるため、インタフェースの具
体的な使用方法はここでは説明せず、本発明の実施形態
で新規に定義する部分についてのみ説明する。
【0087】説明している本発明の実施形態において、
ユーザプログラムは、コレクティブI/O要求を発行す
る前に、ヒント情報の通知を行う。MPI-IOは、ヒント情
報の通知を、ヒントオブジェクトの作成4110、ヒン
トオブジェクトに対する情報の設定4120、414
0、4160、4190、ヒント情報の通知4130、
4150、4170、4200の手順で行う。
【0088】MPI-2 で予め定義されているヒント情報
は、コレクティブI/Oでシステムが使用するバッファ
サイズ、コレクティブI/O処理を実行するノード数、
並列ファイルの構成等の静的な情報のみであり、また、
ヒント情報通知インタフェース自身もコレクティブに実
行する必要がある。
【0089】そして、本発明の他の実施形態は、ヒント
情報として、全プロセスがアクセスする領域のヒント情
報“collective_region”4120、コレクティブI/
Oバッファの保持期間“collbuf_lifetime”4140、
プリアロケートを指示する“prealloc”4160、プリ
フェッチを指示する“prefetch”4190を新設してい
る。また、ヒント情報通知インタフェースは、これらの
ヒント情報を通知する場合、プロセス間の待ち合わせを
行わないようにし、さらに、“collective_region” の
ヒント情報が設定されたファイル識別子を指定したコレ
クティブI/O要求についても、プロセス間の待ち合わ
せを行わないようにする。
【0090】コレクティブ WRITE要求MPI_WRITE_AT_ALL
4180、及び、コレクティブREAD要求 MPI_READ_AT_A
LL4210は、“collective_region” ヒント情報が設
定されたとき、プロセス間の待ちあわせを行わないこと
以外、MPI-2 と同一である。
【0091】図13はユーザのプリフェッチヒント情報
及びプリアロケートヒント情報によりファイルサーバエ
ージェントから各ストライプファイルのファイルサーバ
に送信されるプリアロケート/プリフェッチ要求のフォ
ーマットを示す図である。
【0092】プリアロケート/プリフェッチ要求は、ス
トライプファイル識別子 sfile8001、グループ識別
子 GID8002、全プロセスがアクセスするブロック番
号 blk8003、プリアロケート(PA)かプリフェッ
チ(PF)かを指定するコマンドフィールド cmd800
4、コレクティブI/Oバッファの保持期間time800
5により構成される。
【0093】図14はユーザプロセスがヒント情報通知
インタフェースを実行した場合のファイルサーバエージ
ェントでの処理動作を説明する図であり、以下、これに
ついて説明する。
【0094】(1)ユーザプロセスがヒント情報を通知
してくると、ファイルサーバエージェントは、ヒント情
報に指定されているファイル識別子を用いてファイル管
理テーブルを検索し、オープンファイルエントリを取得
する(ステップ9001、9002)。
【0095】(2)ヒント情報のタイプが“collective
_region” であるか否かをチェックして、ヒント情報の
タイプが“collective_region” であれば、オープンフ
ァイルエントリの全プロセスがアクセスするブロックを
格納するフィールド3350にヒント情報で指定された
値を格納して処理を終了する(ステップ9003、90
07)。
【0096】(3)ステップ9003のチェックで、ヒ
ント情報のタイプが“collective_region” でなけれ
ば、ヒント情報のタイプが“collbuf_lifetime”である
か否かをチェックして、ヒント情報のタイプが“collbu
f_lifetime”であれば、オープンファイルエントリのコ
レクティブI/Oバッファ保持期間を格納するフィール
ドにヒント情報で指定された値を格納して処理を終了す
る(ステップ9004、9008)。
【0097】(4)ステップ9004のチェックで、ヒ
ント情報のタイプが“collbuf_lifetime”でなければ、
ヒント情報のタイプが“prealloc”であるか否かをチェ
ックして、ヒント情報のタイプが“prealloc”であれ
ば、各ストライプファイルを管理しているファイルサー
バにプリアロケート要求を送信して処理を終了する(ス
テップ9005、9009)。
【0098】(5)ステップ9005のチェックで、ヒ
ント情報のタイプが“prealloc”でなければ、ヒント情
報のタイプが“prefetch”であるか否かをチェックし
て、ヒント情報のタイプが“prefetch”であれば、各ス
トライプファイルを管理しているファイルサーバにプリ
フェッチ要求を送信し、ヒント情報のタイプが“prefet
ch”でなければ、何もせずに処理を終了する(ステップ
9006、9010)。
【0099】前述のステップ9009、9010で、各
ファイルサーバに送信するプリアロケート要求やプリフ
ェッチ要求は、図13により説明したフォーマットで作
成される。そのとき、各ストライプファイルからプリフ
ェッチするブロックやプリアロケートするブロックは、
ファイル管理テーブルのエントリに登録されている全プ
ロセスがアクセスするブロック all_blk3350をすで
に説明した本発明の実施形態におけるサブコレクティブ
I/O要求作成時と同様に各ストライプ毎のブロック番
号に変換して作成される。また、ファイルサーバエージ
ェントは、プリアロケート要求やプリフェッチ要求の応
答を待たずに処理を終了する。
【0100】図15はプリフェッチ要求、プリアロケー
ト要求を受信したファイルサーバでの処理の動作を説明
するフローチャートであり、以下、これについて説明す
る。
【0101】(1)ファイルサーバは、プリアロケート
要求またはプリフェッチ要求を受信すると、コレクティ
ブI/O管理テーブルを検索する。この検索は、キーと
して、すでに説明した本発明の実施形態入出力おけるフ
ァイルサーバの処理の場合と同様に、ストライプファイ
ル識別子とグループ識別子とを使用して行われる(ステ
ップ9101、9102)。
【0102】(2)ステップ9102での検索の結果、
該当するエントリが存在するか否かを判定し、該当する
エントリが存在しなければ、新規エントリを作成して初
期化した後、そのエントリをコレクティブI/O管理テ
ーブルに登録する。エントリの初期化は、プリフェッチ
要求またはプリアロケート要求に含まれるストライプフ
ァイル識別子8001、グループ識別子8002、全プ
ロセスのアクセスするブロック8003、コレクティブ
I/Oバッファの保持期間8005を使用して行う(ス
テップ9103、9104)。
【0103】(3)ステップ9104の処理により初期
化済みのエントリを取得した後、または、ステップ91
03の判定で、コレクティブI/O管理テーブルに該当
するエントリが存在した場合、コレクティブI/Oバッ
ファが割り当てられているか否かを調べ、コレクティブ
I/Oバッファが割り当てられていなければ、新しくコ
レクティブI/Oバッファを割り当てて、前記エントリ
への登録と、タイマの起動を行う(ステップ9105、
9106)。
【0104】(4)ステップ9106の処理でコレクテ
ィブI/Oバッファを取得した後、または、ステップ9
105の判定で、コレクティブI/Oバッファがすでに
存在していた場合、要求がプリフェッチ要求であるか否
かを調べ、要求がプリフェッチ要求であった場合、コレ
クティブI/Oバッファにストライプファイルからデー
タを読み込んで処理を終了する(ステップ9107、9
108)。
【0105】(5)ステップ9107の判定で、要求が
プリフェッチ要求でなければ、次に要求がプリアロケー
ト要求か否かを調べる。この結果、プリアロケート要求
でなければ、何もせずに処理を終了し、プリアロケート
要求であった場合、ディスクブロックの確保を行って処
理を終了する(ステップ9109、9110)。
【0106】前述で説明した処理において、プリフェッ
チ要求の場合もプリアロケート要求の場合も、使用する
ファイルブロックとしては全プロセスがアクセスするブ
ロック blk8003が使用される。
【0107】前述で説明した本発明の他の実施形態にお
いて、ユーザプロセスがコレクティブI/O要求を発行
したときのファイルサーバエージェント及びファイルサ
ーバでの処理は、基本的にすでに説明した実施形態の場
合と同様である。唯一異なる点は、ファイルサーバエー
ジェントがサブコレクティブI/O要求を作成する場合
に必要とする全プロセスがアクセスするファイルブロッ
クとコレクィブI/Oバッファの保持期間との情報を、
すでに説明した実施形態の場合、ユーザがコレクティブ
I/O要求と同時に指定したヒント情報から取得してい
たのに対し、他の実施形態の場合、ファイル管理テーブ
ルのエントリから取得する点である。
【0108】前述した本発明の他の実施形態によれば、
ヒント情報通知インタフェースを設け、ファイル管理テ
ーブル内にヒント情報を保持しておくようにしているの
で、従来のコレクティブI/Oインタフェースを変更す
ることなくCPUの稼働率を向上させることが可能とな
る。また、前述した本発明の他の実施形態によれば、ヒ
ント情報通知インタフェースを分離し、プリアロケート
やプリフェッチのヒント情報を新設しているので、これ
らの処理とユーザプロセスの処理とを並列に実行するこ
とが可能となり、システムの処理性能の向上をはかるこ
とができる。
【0109】
【発明の効果】以上説明したように本発明によれば、複
数のプロセスが同一ファイルを共有アクセスするコレク
ティブI/Oにおいて、各プロセスのI/O待ち時間を
短縮し、プロセッサ稼働率を向上させることができる。
【図面の簡単な説明】
【図1】本発明が適用される並列計算機システムの構成
を示すブロック図である。
【図2】各ユーザプロセスが担当する配列データと、そ
の配列データが格納されている並列ファイルと、並列フ
ァイルの各ブロックを格納する各ディスク上のストライ
プファイルとの関係を説明する図である。
【図3】各ユーザプロセスが用いるコレクティブI/O
インタフェースを説明する図である。
【図4】各ストライプファイル毎のサブコレクティブI
/O要求を作成するために使用するファイル管理テーブ
ルとファイル構造テーブルとを説明する図である。
【図5】ユーザプロセスのコレクティブI/O要求を元
に作成するストライプファイルへのサブコレクティブI
/O要求を説明する図である。
【図6】ファイルサーバが保持するコレクティブI/O
管理テーブルの構成を説明する図である。
【図7】ファイルサーバエージェントの処理動作を説明
するフローチャートである。
【図8】ファイルサーバエージェントのサブコレクティ
ブI/O要求作成の処理動作を説明するフローチャート
である。
【図9】ファイルサーバの処理動作を説明するフローチ
ャートである。
【図10】コレクティブI/Oバッファのタイムアウト
処理の動作を説明するフローチャートである。
【図11】本発明の他の実施形態で使用されるファイル
管理テーブルの構造を説明する図である。
【図12】本発明の他の実施形態で使用するユーザイン
タフェースを説明する図である。
【図13】ファイルサーバエージェントから各ストライ
プファイルのファイルサーバに送信されるプリアロケー
ト/プリフェッチ要求のフォーマットを示す図である。
【図14】ユーザプロセスがヒント情報通知インタフェ
ースを実行した場合のファイルサーバエージェントでの
処理動作を説明する図である。
【図15】プリフェッチ要求、プリアロケート要求を受
信したファイルサーバでの処理の動作を説明するフロー
チャートである。
【符号の説明】
1100、1200、1300、1400 計算ノード 1110、1210、1310、1410 ユーザプロ
セス 1111 I/Oバッファ 1120、1220、1320、1420 ファイルサ
ーバエージェント 1121 ファイル管理テーブル 1122 ファイル構造テーブル 1123 転送バッファ 1130、1230、1330、1430、1530、1630、1730、1830 プ
ロセッサ 1140、1240、1340、1440、1540、1640、1740、1840 メ
モリ 1500、1600、1700、1800 I/Oノー
ド 1510、1610、1710、1810 ファイルサ
ーバ 1511 コレクティブI/O管理テーブル 1512 コレクティブI/Oバッファ 1520、1620、1720、1820 ディスク 1521、1621、1721、1821 ストライプ
ファイル 1900 ネットワーク
───────────────────────────────────────────────────── フロントページの続き (72)発明者 熊▲崎▼ 裕之 神奈川県横浜市戸塚区戸塚町5030番地 株 式会社日立製作所ソフトウェア開発本部内 (72)発明者 鞍掛 稔也 神奈川県横浜市戸塚区戸塚町5030番地 株 式会社日立製作所ソフトウェア開発本部内 Fターム(参考) 5B065 BA01 CA11 CE11 CH20 ZA16 5B082 FA01 5B098 AA03 GA04 GB13 GD03 GD12 GD15

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 複数のプロセスが同一のファイルを共有
    してアクセスするファイル入出力制御方法において、前
    記複数のプロセスのそれぞれが、自プロセスのファイル
    入出力要求と、前記複数のプロセスの全てがアクセスす
    るファイル領域情報を含むヒント情報とをファイル管理
    サーバに通知し、ファイル管理サーバは、前記ヒント情
    報により通知されたファイル領域に対し入出力を行うた
    めのバッファを用意し、前記複数のプロセスからのファ
    イル入出力要求がファイル読み込み要求の場合、前記用
    意したバッファに前記ヒント情報で指定されたファイル
    領域のデータをディスクから読み込み、ディスクからの
    読み込み終了後、各プロセスがファイル入出力要求で指
    定したデータ領域に、前記用意したバッファの対応する
    メモリ領域からメモリコピーを行い、前記複数のプロセ
    スからのファイル入出力要求がファイル書き込み要求の
    場合、各プロセスがファイル入出力要求で指定したデー
    タ領域から前記用意したバッファの対応する領域へのメ
    モリコピーを行い、前記複数のプロセス全てからのメモ
    リコピーの終了後、前記用意したバッファのデータを前
    記ヒント情報で通知されたファイル領域に対してディス
    ク書き込みを行うことを特徴とするファイル入出力制御
    方法。
  2. 【請求項2】 前記ファイル管理サーバが用意するバッ
    ファは、前記複数のプロセスの中の最初のプロセスがヒ
    ント情報を通知したときに用意され、前記複数プロセス
    の中の最後のプロセスのファイル入出力要求が終了した
    ときに破棄されることを特徴とする請求項1記載のファ
    イル入出力制御方法。
  3. 【請求項3】 前記プロセスのそれぞれは、入出力要求
    と同時に、あるいは、入出力要求に先立って前記ヒント
    情報を前記ファイル管理サーバに通知することを特徴と
    する請求項1または2記載のファイル入出力制御方法。
  4. 【請求項4】 前記プロセスのそれぞれからのファイル
    入出力要求がファイル読み込み要求の場合、前記用意し
    たバッファに対する前記ヒント情報で指定されたファイ
    ル領域データのディスクからの読み込みは、前記複数プ
    ロセスの最初のプロセスがヒント情報をファイル管理サ
    ーバに通知したときに行われることを特徴とする請求項
    1、2または3記載のファイル入出力制御方法。
  5. 【請求項5】 前記プロセスのそれぞれから通知される
    ファイル入出力要求は、他のプロセスからのファイル入
    出力要求がファイル管理サーバに通知されたか否かに関
    わらず、前記ファイル管理サーバが用意したバッファと
    各プロセスが指定したデータ領域との間のメモリコピー
    が完了した時点で完了することを特徴とする請求項1な
    いし4のうちいずれか1記載のファイル入出力制御方
    法。
  6. 【請求項6】 前記プロセスのそれぞれが通知するヒン
    ト情報は、前記ファイル管理サーバが用意するバッファ
    の保持期間を含み、前記ファイル管理サーバは、前記複
    数プロセスの全てが通知したファイル入出力要求の処理
    が完了するか、または、前記ヒント情報に含まれる保持
    期間が経過するまで前記用意したバッファを保持するこ
    とを特徴とする請求項1ないし4のうちいずれか1記載
    のファイル入出力制御方法。
  7. 【請求項7】 前記プロセスのそれぞれが通知するヒン
    ト情報は、ファイル読み込み要求の発行に先立ってプリ
    フェッチを行うか否かを指定する情報、あるいは、ファ
    イル書き込み要求の発行に先立ってディスクのプリアロ
    ケートを行うか否かを指定する情報を含み、ファイル管
    理サーバは、前記ヒント情報でプリフェッチを行うよう
    に指定されていた場合、前記ファイル管理サーバが用意
    するバッファに指定されたファイル領域のデータをディ
    スクから予め読み込み、前記ヒント情報でプリアロケー
    トを行うように指定されていた場合、前記複数のプロセ
    スの全データを格納するための領域を予めディスク上に
    確保することを特徴とする請求項1ないし6のうちいず
    れか1記載のファイル入出力制御方法。
  8. 【請求項8】 複数のプロセスが同一のファイルを共有
    してアクセスすることを可能にするファイル管理サーバ
    において、前記複数のプロセスのそれぞれからのそのプ
    ロセスのファイル入出力要求、及び、前記複数のプロセ
    スの全てがアクセスするファイル領域情報を含むヒント
    情報を受領する手段と、前記ヒント情報により通知され
    た前記複数のプロセスの全てがアクセスするファイル領
    域のデータを保持するためのバッファを確保する手段
    と、前記複数のプロセスからのファイル入出力要求がフ
    ァイル読み込み要求の場合に、前記ヒント情報で指定さ
    れた前記複数のプロセスの全てがアクセスするファイル
    領域のデータをディスクから一括して前記確保したバッ
    ファに読み込む手段と、前記複数のプロセスからのファ
    イル入出力要求がファイル書き込み要求の場合に、前記
    バッファの内容を一括してディスクに書き込む手段と、
    各プロセスからのファイル入出力要求時に、プロセスの
    データ領域と前記バッファの対応する領域との間でのメ
    モリコピーを行うことによりファイル入出力処理を完了
    させる手段とを備えることを特徴とするファイル管理サ
    ーバ。
  9. 【請求項9】 前記プロセスのそれぞれが通知するヒン
    ト情報に含まれるファイル読み込み要求の発行に先立っ
    てプリフェッチを行うか否かを指定する情報、あるい
    は、ファイル書き込み要求の発行に先立ってディスクの
    プリアロケートを行うか否かを指定する情報を受領する
    手段と、前記ヒント情報でプリフェッチを行うように指
    定されていた場合に、前記プロセスの処理と非同期に前
    記バッファにディスクから予めデータを読み込む手段
    と、前記ヒント情報でプリアロケートを行うように指定
    されていた場合に、前記プロセスの処理と非同期にディ
    スク領域のプリアロケートを行う手段とを備えることを
    特徴とする請求項8記載のファイル管理サーバ。
  10. 【請求項10】 並列プログラムを実行する複数のプロ
    セスを協調動作させて計算を行う並列計算機システムに
    おいて、請求項8または9記載のファイル管理サーバを
    備え、前記並列プログラムを実行する複数のプロセスが
    同一のファイルに対して同時にアクセスを行う場合に、
    前記複数のプロセスのそれぞれは、自プロセスのファイ
    ル入出力要求を発行する前に、前記複数の全プロセスが
    アクセスするファイル領域情報を含むヒント情報をファ
    イル管理サーバに通知することを特長とする並列計算機
    システム。
JP2000392686A 2000-12-25 2000-12-25 ファイル入出力制御方法、ファイル管理サーバ及び並列計算機システム Pending JP2002196960A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000392686A JP2002196960A (ja) 2000-12-25 2000-12-25 ファイル入出力制御方法、ファイル管理サーバ及び並列計算機システム
US10/024,336 US6687764B2 (en) 2000-12-25 2001-12-21 File I/O control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000392686A JP2002196960A (ja) 2000-12-25 2000-12-25 ファイル入出力制御方法、ファイル管理サーバ及び並列計算機システム

Publications (1)

Publication Number Publication Date
JP2002196960A true JP2002196960A (ja) 2002-07-12

Family

ID=18858636

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000392686A Pending JP2002196960A (ja) 2000-12-25 2000-12-25 ファイル入出力制御方法、ファイル管理サーバ及び並列計算機システム

Country Status (2)

Country Link
US (1) US6687764B2 (ja)
JP (1) JP2002196960A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689573B2 (en) 2002-12-11 2010-03-30 Hitachi, Ltd. Prefetch appliance server
JP2013196066A (ja) * 2012-03-16 2013-09-30 Hitachi Information & Control Solutions Ltd ファイルサーバ、データ入出力方法、i/oフックモジュールプログラム及びi/o代行デーモンプログラム

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7047321B1 (en) * 2002-08-26 2006-05-16 Network Appliance, Inc. Unblocking an operating system thread for managing input/output requests to hardware devices
US7188128B1 (en) 2003-12-12 2007-03-06 Veritas Operating Corporation File system and methods for performing file create and open operations with efficient storage allocation
US7433928B1 (en) * 2003-12-31 2008-10-07 Symantec Operating Corporation System pre-allocating data object replicas for a distributed file sharing system
US20060080350A1 (en) * 2004-10-13 2006-04-13 Timothy Mark Allocation of file storage based on pattern recognition
US7519782B2 (en) * 2006-08-24 2009-04-14 Sun Microsystems, Inc. Ring optimization for data sieving writes
US8370456B2 (en) * 2006-09-22 2013-02-05 Microsoft Corporation Intelligent pre-fetching using compound operations
US7899811B2 (en) * 2006-12-01 2011-03-01 Stephen L. Adams Boosting throughput of a computer file server
US8326804B2 (en) * 2008-06-06 2012-12-04 Symantec Corporation Controlling resource allocation for backup operations
US8180793B2 (en) * 2009-03-19 2012-05-15 Hewlett-Packard Development Company, L.P. Access to data stored in a file system
US8850116B2 (en) * 2010-03-10 2014-09-30 Lsi Corporation Data prefetch for SCSI referrals
US9767107B1 (en) * 2013-06-29 2017-09-19 EMC IP Holding Company LLC Parallel file system with metadata distributed across partitioned key-value store
US9940336B2 (en) * 2014-10-24 2018-04-10 Splunk Inc. File monitoring
US9612756B1 (en) * 2015-03-26 2017-04-04 EMC IP Holding Company LLC Data storage system with parallel handling of sub-I/O requests for individual host I/O requests
US9934172B1 (en) * 2015-12-17 2018-04-03 EMC IP Holding Company LLC Data storage system with dynamic throttling of parallel sub-I/O request for individual host I/O requests
US10037289B1 (en) 2015-12-17 2018-07-31 EMC IP Holding Company LLC Data storage system with efficient processing of single mapping callback for host I/O requests
US10996989B2 (en) * 2016-06-13 2021-05-04 International Business Machines Corporation Flexible optimized data handling in systems with multiple memories
CN113253933B (zh) * 2017-04-17 2024-02-09 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机可读存储介质
CN110209353B (zh) * 2019-05-17 2022-10-21 青岛海洋科学与技术国家实验室发展中心 区域耦合预报系统中roms模式的i/o并行加速方法、装置及介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07191899A (ja) * 1993-12-27 1995-07-28 Hitachi Ltd ファイル転送方法、データアクセス方法およびデータ書き込み方法
JP3371044B2 (ja) * 1994-12-28 2003-01-27 株式会社日立製作所 ディスクアレイのための領域割り当て方法およびディスクアレイアクセス方法
US5758149A (en) * 1995-03-17 1998-05-26 Unisys Corporation System for optimally processing a transaction and a query to the same database concurrently
JP3545906B2 (ja) * 1997-05-29 2004-07-21 富士通株式会社 ファイルシステム制御方法,パラレルファイルシステムおよびプログラム記憶媒体
JP3817339B2 (ja) * 1997-06-26 2006-09-06 株式会社日立製作所 ファイル入出力制御方法
JP3324572B2 (ja) * 1999-03-30 2002-09-17 三菱電機株式会社 情報処理装置並びにコンピュータに実行させるためのプログラムを記録した記録媒体

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689573B2 (en) 2002-12-11 2010-03-30 Hitachi, Ltd. Prefetch appliance server
JP2013196066A (ja) * 2012-03-16 2013-09-30 Hitachi Information & Control Solutions Ltd ファイルサーバ、データ入出力方法、i/oフックモジュールプログラム及びi/o代行デーモンプログラム

Also Published As

Publication number Publication date
US20020091751A1 (en) 2002-07-11
US6687764B2 (en) 2004-02-03

Similar Documents

Publication Publication Date Title
JP2002196960A (ja) ファイル入出力制御方法、ファイル管理サーバ及び並列計算機システム
US8117615B2 (en) Facilitating intra-node data transfer in collective communications, and methods therefor
Raveendran et al. A framework for elastic execution of existing mpi programs
US7380039B2 (en) Apparatus, method and system for aggregrating computing resources
KR101697937B1 (ko) 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템
Nukada et al. NVCR: A transparent checkpoint-restart library for NVIDIA CUDA
US20090125907A1 (en) System and method for thread handling in multithreaded parallel computing of nested threads
Beynon et al. Optimizing execution of component-based applications using group instances
JP3628595B2 (ja) 少なくとも1つのnuma(non−uniformmemoryaccess)データ処理システムとして構成可能な相互接続された処理ノード
US8738890B2 (en) Coupled symbiotic operating system
JP2006508468A (ja) マルチスレッド・プロセッサ性能を制御する装置及び方法
JP2008287631A (ja) デプロイ対象計算機、デプロイメントシステムおよびデプロイ方法
Dagum et al. Polytopes, permanents and graphs with large factors
CN110457261B (zh) 数据访问方法、装置及服务器
JP2005056077A (ja) データベース制御方法
US10289306B1 (en) Data storage system with core-affined thread processing of data movement requests
US20100005275A1 (en) Multiprocessing system
JP3169624B2 (ja) プロセッサ間通信方法およびそのための並列プロセッサ
JPH09146904A (ja) アドレス空間共有システム
JPH07129518A (ja) 計算機システム
JPH07152640A (ja) 分散共有メモリ方式
JPH07248949A (ja) 入出力実行方法
JP2001022614A (ja) 階層形記憶システム
JPH08212090A (ja) サーバシステム
JP2003076562A (ja) メモリ量的制御方法、装置、コンピュータプログラム及び記録媒体