(57)【要約】【課題】  複数のディスク装置を備える単一のコンピュータシステムで，一つのファイルに対する入出力スループット性能の最適化を実現する。【解決手段】  一つのファイル入出力要求を前記複数のストレージに対する入出力要求に分割する機能を備える計算機システムにおいて，計算機のプロセッサの構成情報と，分割格納されるファイルの構成情報を利用し，単一のファイルに対する単一の入出力要求に対して，所定の条件が満たされるか否かを判定した結果に基づいて、所定数の複数の入出力スレッドを生成，または，選択して，複数のストレージが保持する，単一ファイルの分割データに対して，前記複数の入出力スレッドがそれぞれ入出力する。【選択図】  図１
2010186284.tif 000002
【特許請求の範囲】
【請求項１】
計算機と、前記計算機にネットワークを介して接続される複数のストレージ装置と、を備える計算機システムであって、
前記ストレージ装置は、前記計算機が利用する  一つのファイルのデータが分割された分割データを格納し、
前記計算機は、前記ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記計算機は，
前記計算機は、
前記計算機のプロセッサの構成情報と，
前記分割格納されるファイルの構成情報を保持し，
ファイルに対する入出力要求に対して，前記複数のストレージ装置に対する入出力要求に分割し、
所定の条件が満たされるか否かを判定し、
判定結果に基づいて、前記分割された複数の入出力要求に所定数の複数の入出力スレッドを割り当て、
前記プロセッサは、前記複数のストレージが保持する，前記ファイルの分割データに対して，前記割り当てられた複数の入出力スレッドを用いてそれぞれ入出力することを特徴とする計算機システム。
【請求項２】
前記計算機は、前記計算機が備えるプロセッサ数であるか否かに基づいて、前記所定の条件が満たされるか否かを判定することを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記計算機は、前記一つのファイルデータの分割数であるか否かに基づいて、前記所定の条件が満たされるか否かを判定することを特徴とする請求項１に記載の計算機システム。
【請求項４】
前記計算機は、所定の方法により，前記複数の入出力スレッドを，動作させるプロセッサを決定することを特徴とする請求項２および３に記載の計算機システム。
【請求項５】
前記計算機は、前記所定の方法が，プロセッサ番号を指定されているか否かに基づいて，前記複数の入出力スレッドを動作させるプロセッサとして決定する請求項４に記載の計算機システム。
【請求項６】
前記計算機は、前記所定の方法が，複数のプロセッサに分散するように指定されているか否かに基づいて，前記複数の入出力スレッドを動作させるプロセッサとして決定する請求項４に記載の計算機システム。
【請求項７】
計算機と、前記計算機にネットワークを介して接続される複数のストレージと、を備える計算機システムであって、
前記ストレージは、前記計算機が利用可能な一つのファイルのデータを、複数に分割し分割データとして格納し，
前記計算機は、前記ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリとを備える複数のプロセッサユニットと、
前記プロセッサユニット間を接続するプロセッサユニット間ネットワークと，
前記プロセッサユニット間ネットワークと，前記プロセッサユニットを接続するプロセッサユニット間インターフェースと，を備え，
前記計算機のプロセッサの構成情報と，
前記分割格納されるファイルの構成情報と
前記各々のプロセッサユニットに接続するストレージの情報を保持し，
ファイルに対する入出力要求を複数の入出力要求に分割する場合、所定の条件が満たされるか否かを判定し、
判定結果、所定の条件が満たされる場合は、所定数の複数の入出力スレッド及びプロセッサユニットを前記分割された複数の入出力要求に割り当て，
前記複数のストレージが保持する，前記単一ファイルの分割データに対して，前記複数の入出力スレッドを用いてそれぞれ入出力することを特徴とする計算機システム。
【請求項８】
前記計算機は、前記計算機が備えるプロセッサ数であるか否かに基づいて、前記所定の条件が満たされるか否かを判定することを特徴とする請求項７に記載の計算機システム。
【請求項９】
前記計算機は、前記一つのファイルデータの分割数であるか否かに基づいて、前記所定の条件が満たされるか否かを判定することを特徴とする請求項７に記載の計算機システム。
【請求項１０】
前記計算機は、前記計算機のメモリ構成が，前記計算機の備えるプロセッサからメモリへのアクセス経路が、プロセッサユニット間ネットワークを介するか否かに基づいて、前記所定の条件が満たされるか否かを判定することを特徴とする請求項７に記載の計算機システム。
【請求項１１】
前記計算機は、所定の方法により，前記複数の入出力スレッドを，動作させるプロセッサを決定することを特徴とする請求項８に記載の計算機システム。
【請求項１２】
前記計算機は、前記所定の方法が，前記プロセッサユニットの構成に基づいて，前記複数の入出力スレッドを動作させるプロセッサとして決定する請求項１１に記載の計算機システム。
【請求項１３】
前記計算機は，
前記単一のファイルのデータを格納するためのメモリの割り当て要求に対して，
前記単一ファイルの分割データの分割数に応じた数のメモリ領域を割り当て，
前記メモリ領域を，
前記各分割データを格納するストレージが接続されるプロセッサユニットに割り当て，  前記各分割データと前記各割り当てたメモリ領域の対応情報を保持して，
前記複数の入出力スレッドがそれぞれ入出力する場合に，
前記分割データを対応するメモリ領域を使うことを特徴とする請求項７に記載の計算機システム。
【請求項１４】
前記計算機は、前記計算機のメモリ構成が，前記計算機の備えるプロセッサからメモリへのアクセス経路がプロセッサユニット間ネットワークを介するか否かに基づいて、前記所定の条件が満たされるか否かを判定することを特徴とする請求項１３に記載の計算機システム。
【請求項１５】
計算機と、前記計算機にネットワークを介して接続される複数のストレージと、を備える計算機システムを制御する方法であって、
前記ストレージは、計算機が利用可能なファイルのデータが、複数に分割された分割データいずれか一の分割データを格納し，
前記計算機は、前記ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記方法は、
前記計算機のプロセッサの構成情報と，
前記分割格納されるファイルの構成情報を保持し，
ファイルに対する入出力要求を複数のストレージに入出力要求に分割する場合、所定の条件が満たされるか否かを判断し、
前記判定した結果に基づいて、
所定数の複数の入出力スレッドを一以上のプロセッサに割当てる第１手順と，
前記複数のストレージが保持する，前記単一ファイルの分割データに対して，前記複数の入出力スレッドがそれぞれ入出力する第２手順と，を含むことを特徴とする方法。
【請求項１６】
計算機と、前記計算機にネットワークを介して接続される複数のストレージと、を備える計算機システムを制御する方法であって、
前記計算機は、前記ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記計算機は，前記プロセッサと前記メモリと前記インターフェースとを有する複数のプロセッサユニットと複数のプロセッサユニットを接続するプロセッサユニット間ネットワークと，前記プロセッサユニット間ネットワークと，プロセッサユニットを接続するプロセッサユニット間インターフェースと，を備え，
前記方法は，
前記計算機のプロセッサの構成情報と，前記分割格納されるファイルの構成情報と
前記各々のプロセッサユニットに接続するストレージの情報を保持し，
一つのファイルのデータを、前記複数のストレージに分割して格納し，
単一のファイルに対する単一の入出力要求に対して，
一つのファイル入出力要求を前記複数のストレージに対する入出力要求に分割する場合、所定の条件が満たされるか否かを判定し、前記判定結果所定の条件が満たされている場合は、所定数の複数の入出力スレッドを生成，または，選択する第１手順と，
前記複数のストレージが保持する，前記単一ファイルの分割データに対して，前記複数の入出力スレッドがそれぞれ入出力する弟２手順と，を含むことを特徴とする計算機システム。
【請求項１７】
前記方法は，
前記単一のファイルのデータを格納するためのメモリの割り当て要求に対して，
前記単一ファイルの分割データの分割数に応じた数のメモリ領域を割り当て，
前記メモリ領域を，
前記各分割データを格納するストレージが接続されるプロセッサユニットに割り当て，  前記各分割データと前記各割り当てたメモリ領域の対応情報を保持して，
前記複数の入出力スレッドがそれぞれ入出力する場合に，
前記分割データを対応するメモリ領域を使う弟３手順と，を含むことを特徴とする請求項１６に記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で開示される技術は、ストレージシステムが有するディスクへの入出力制御方法またはシステムに関し、特に、複数のディスク装置を接続した単一のサーバにおいて、接続されたディスク装置の構成に応じた入出力制御方法を実現するファイルシステムに関する。
【背景技術】
【０００２】
単一のディスク装置の入出力スループット性能は、ホストコンピュータのプロセッサで行うソフトウェアのファイル入出力処理に比較して遅い。単一のディスク装置だけでなく、ディスクアレイ装置でも同様である。
【０００３】
ディスクアレイ装置は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）とも呼ばれ、アレイ状に配置された複数のディスク装置及びそれらを制御する制御部とを有するストレージシステムである。ディスクアレイ装置では、計算機からの一つの入出力要求を、ディスク装置におけるの並列動作により高速に処理する。
【０００４】
一方、複数のディスク装置（ＬＵ、以下、特に断らない限り、物理的に単一なディスク装置と論理ディスク装置は区別しない）を用いて、トータルで入出力スループット性能を向上する技術がある（特許文献1参照）。特許文献１によれば、各ＬＵに、それぞれ異なるファイルを格納し、マルチプロセス／マルチスレッドで各ファイルに対する入出力を実行することで、ディスク装置に並列にアクセスする。
【０００５】
また、複数のＬＵに単一のファイルをストライピングして格納することにより、単一のファイルの入出力性能を向上できる技術もある。特許文献２では、複数のＬＵを論理的に単一のディスク装置（論理ボリューム）として扱うことを可能にする、ＬＶＭ（Ｌｏｇｉｃａｌ  Ｖｏｌｕｍｅ  Ｍａｎａｇｅｒ：論理ボリュームマネージャ）の技術を利用している。この技術によれば、単一のファイルを論理ボリュームに格納することで、特にＵＡＰ（Ｕｓｅｒ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ）が特に意識することなく、複数のＬＵに分割格納される。この論理ボリュームに対するファイル入出力要求は、ＬＵ台数を考慮した入出力制御を行う。
【０００６】
さらに、ホストコンピュータを、入出力サーバとして複数利用して、トータルの入出力性能を向上する並列ファイルシステム技術もある（特許文献３参照）。特許文献３によれば、演算サーバ（ホストコンピュータ）上の並列ファイルシステムクライアントと複数入出力サーバ上の並列ファイルシステムサーバの間で、それぞれで動作する通信用スレッドを介してデータをやり取りする。複数の入出力サーバを並列に動作させる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平７−２４８９４９号公報
【特許文献２】特開２００４−２６５１１０号公報
【特許文献３】特開２００２−１８２９５３号公報
【特許文献４】米国特許公開２００８／００２２２８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
並列プログラムではない、単一のＵＡＰの場合、単一ホストコンピュータでＬＶＭを利用して複数のＬＵを統合しても、ＬＵの数に応じたスケーラブルな性能を引き出すことができない。  これは入出力要求を発行するＵＡＰが１プロセス（１スレッド）の場合、ＯＳの構造に起因して、入出力発行処理までそのＵＡＰのプロセスのコンテキストで走行しきるためである。これにより、ＵＡＰのコンテキストが一つしかない場合、一つのプロセッサのみで入出力処理が実行される。
【０００９】
また、上述した特許文献では、ホストコンピュータにＬＵが複数接続された場合、ある程度の数まではＬＵの数に応じた入出力スループット性能向上を考慮した入出力制御が開示されているが、ソフトウェアの入出力処理を実行するプロセッサ（ＣＰＵ）がネックとなり、それ以上入出力スループット性能性能を引き出せなくなる。
【００１０】
このプロセッサネックを入出力処理に伴うメモリコピー処理を例に考えると次のようになる。プロセッサの動作クロックが５ＧＨｚ、かつ、理想的に１クロックで８バイトのロード、または、ストアが可能と仮定したとき、単純にロード／ストアを繰り返したとしても２０ＧＢｙｔｅ／秒（５ＧＨｚ×８Ｂｙｔｅ÷２（ロードおよびストア））が最大性能となる。実際は他の処理も行うため、単一スレッドのジョブで期待できるデータ処理能力は、高々２０ＧＢｙｔｅ／秒の数分の１程度となる。
【００１１】
一方、並列ファイルシステムでは、演算サーバと入出力サーバ間の通信を複数の通信用スレッドが行うため、通信部分は複数のプロセッサを使用して、並列に動作することが可能である。
【００１２】
しかし、単一のＵＡＰでは、ＬＶＭの場合と同様、演算サーバの入出力処理で利用するプロセッサは単一である。また、この通信用スレッドは、演算サーバと入出力サーバ間の通信路として利用されるのみであり、ファイルの構成（ストライピング数）を考慮しておらず、接続されているディスク装置の数に応じた最適化は行えない。
【００１３】
さらに、現在、高多重マルチプロセッササーバはＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）構成が主流である。ＮＵＭＡは、複数プロセッサが共有するメインメモリおよび入出力装置へのアクセスコストが、メモリ領域とプロセッサに依存して均一でないアーキテクチャである（特許文献４参照）。仮に上記通信用スレッドを入出力スレッドとして多重に入出力処理を行わせたケースで、スレッドが動作するプロセッサと、入出力装置やメモリの位置関係は任意となる。  この場合、ホストコンピュータ内の低スループットの経路を経由することにより、十分な入出力性能を引き出すことができない。
【課題を解決するための手段】
【００１４】
上記課題の少なくともひとつを解決するために、本発明の一形態は、計算機と、前記計算機にネットワークを介して接続される複数のストレージと、を備える計算機システムであって、前記計算機は、前記ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え前記計算機は，一つのファイルのデータを、前記複数のストレージに分割して格納し，一つのファイル入出力要求を前記複数のストレージに対する入出力要求に分割する機能を備える計算機システムであって，前記計算機は、前記計算機のプロセッサの構成情報と，前記分割格納されるファイルの構成情報を保持し，単一のファイルに対する単一の入出力要求に対して，所定の条件が満たされるか否かを判定した結果に基づいて、所定数の複数の入出力スレッドを生成，または，選択して，前記複数のストレージが保持する，前記単一ファイルの分割データに対して，前記複数の入出力スレッドがそれぞれ入出力することを特徴とする。
【００１５】
本発明の別の形態によれば、前記単一ホストコンピュータがＮＵＭＡ構成であっても、入出力処理を行うプロセッサと、入出力対象データを格納するディスク装置を選択する、ことを特徴とする。または、プロセッサとディスク装置のほかに、入出力対象データを格納するメモリ領域を選択することを特徴とする。
【発明の効果】
【００１６】
本発明の一形態によれば、複数のＬＵ（ディスク装置）を接続した単一ホストコンピュータにおいて、一つのファイルを複数のＬＵに分割格納するファイルシステムで、ディスク装置の数に応じて入出力性能を向上することができる。
【００１７】
また、本発明の別の形態によれば、前記単一ホストコンピュータがＮＵＭＡ構成であっても、入出力処理を行うプロセッサと、入出力対象データを格納するディスク装置を選択することにより、ディスク装置の数に応じて入出力性能を向上することができる。
【００１８】
また、本発明の別の形態によれば、前記単一ホストコンピュータがＮＵＭＡ構成であっても、入出力処理を行うプロセッサと、入出力対象データを格納するディスク装置と、入出力対象データを格納するメモリ領域を選択することにより、ディスク装置の数に応じて入出力性能を向上することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施例の計算機システムの構成を示すブロック図である。
【図２】本発明の実施例のプロセッサ構成情報の説明図である。
【図３】本発明の実施例の論理ファイル構成情報の説明図である。
【図４】本発明の実施例の入出力スレッド指定情報の説明図である。
【図５】本発明の実施例において、入出力スレッド生成および入出力処理実行部が実行する処理を示すフローチャートである。
【図６】本発明の実施例において、入出力スレッド数決定処理を示すフローチャートである。
【図７】本発明の実施例において、入出力スレッド動作プロセッサ決定処理を示すフローチャートである。
【図８】本発明の実施例において、入出力スレッド動作プロセッサ決定処理（均等化処理）を示すフローチャートである。
【図９】本発明の実施例において、ファイル入出力起動処理を示すフローチャートである。
【図１０】本発明の実施例において、ファイル入出力完了処理を示すフローチャートである。
【図１１】本発明の実施例のファイルシステムプログラムが実行する論理ファイル作成部を示すフローチャートである。
【図１２】本発明の実施例のファイルシステムプログラムが実行する論理ファイル入出力部を示すフローチャートである。
【図１３】本発明の実施例の計算機システムの構成を示すブロック図である。
【図１４】本発明の実施例のプロセッサ構成情報の説明図である。
【図１５】本発明の実施例の接続デバイス情報の説明図である。
【図１６】本発明の実施例のファイルシステム構成情報の説明図である。
【図１７】本発明の実施例において、入出力スレッド動作プロセッサ決定処理を示すフローチャートである。
【図１８】本発明の実施例において、入出力スレッド動作プロセッサ決定処理（ＮＵＭＡ処理）を示すフローチャートである。
【図１９】本発明の実施例の計算機システムの構成を示すブロック図である。
【図２０】本発明の実施例において、CPUボード毎メモリ割り当て処理実行部を示すフローチャートである。
【図２１】本発明の実施例のメモリとサブデータ対応情報の説明図である。
【図２２】本発明の実施の例における問題点の概略説明図である。
【図２３】本発明の実施の例におけるシステムの概略説明図である
【実施例１】
【００２０】
以下、本発明の実施例を、図面を参照して説明する。
【００２１】
図１は、本実施例の計算機システムの構成を示すブロック図である。
【００２２】
本実施例の計算機システムは、ホストコンピュータ１０１、ディスク装置１０２及びを備える。ホストコンピュータ１０１は、ストレージネットワーク１０３を介して、ディスク装置１０２と接続される。
【００２３】
ホストコンピュータ１０１は、ＬＵ１０２を使用して種々のアプリケーションを実現する計算機である。本実施例のホストコンピュータ１０１は、相互に接続されたプロセッサ１１１、メモリ１１２、インターフェース（Ｉ／Ｆ）１１３を備える。
【００２４】
プロセッサ１１１は、メモリ１１２に格納されたプログラムを実行するプロセッサである。以下の説明において各プログラムが実行する処理は、実際にはプロセッサ１１１によって実行される。
【００２５】
メモリ１１２は、プロセッサ１１１によって実行されるプログラム及びプロセッサ１１１によって参照されるデータ等を格納する記憶装置である。メモリ１１２が例えばＤＲＡＭのような半導体メモリである場合、上記のプログラム及びデータ等は、ハードディスクドライブ（図示省略）に格納され、必要に応じてそれらの全部又は一部がメモリ１１２にコピーされてもよい。本実施例のメモリ１１２は、少なくとも、ファイルシステムプログラム１２１、及び、マルチスレッド入出力プログラム１２２を格納する。メモリ１１２には、さらに、任意の機能をユーザに提供するユーザアプリケーションプログラム（図示省略）が格納されてもよい。
【００２６】
マルチスレッド入出力プログラム１２２は、ホストコンピュータ１０１に接続された複数のＬＵに対して、マルチスレッド入出力を行うプログラムである。マルチスレッド入出力プログラム１２２は、入出力スレッド生成および入出力処理実行部１４１、プロセッサ構成情報１３１、論理ファイル構成情報１３２、入出力スレッド指定情報１３３を含む。これらについては後で詳細に説明する。
【００２７】
ファイルシステムプログラム１２１は、オペレーティングシステム（ＯＳ）（図示省略）の一部として提供されるファイルシステムプログラムであってもよいし、ユーザアプリケーション（図示省略）によって使用される入出力ライブラリであってもよい。以下の説明は、ファイルシステムプログラム１２１が入出力ライブラリである場合にも適用することができる。
【００２８】
マルチスレッド入出力プログラム１２２は、図ではファイルシステムプログラム１２１と別に示しているが、ファイルシステムプログラム１２１の一部として提供されても良い。
【００２９】
Ｉ／Ｆ１１３は、ストレージネットワーク１０３に接続され、ストレージネットワーク１０３を介してＬＵ１０２と通信するインターフェースである。
【００３０】
ＬＵ１０２は、ホストコンピュータ１０１によって書き込まれたデータを格納する。ＬＵは、ホストコンピュータに提供される、ホストコンピュータが利用可能なデータを格納可能な記憶部(storage unit)であり、それぞれディスク装置により構成される。また複数のディスク装置からＲＡＩＤ構成により構成されたものであってもよい。
【００３１】
本実施例では、ストレージネットワーク１０３においてファイバーチャネル（ＦＣ）プロトコルが使用される。しかし、これらのネットワークは上記以外のいかなるプロトコルを使用するものであってもよい。上記以外のプロトコルが使用される場合、Ｉ／Ｆ１１３は、それぞれ、それらに接続されるネットワークに適合するインターフェースによって置き換えられる。上記以外のプロトコルが使用される場合、Ｉ／Ｆ１１３は、それぞれ、それらに接続されるネットワークに適合するインターフェースによって置き換えられる。
【００３２】
図２は、本実施例のプロセッサ構成情報１３１の説明図である。
【００３３】
プロセッサ構成情報１３１は、ホストコンピュータのプロセッサ数を示すプロセッサ数情報２０１を含む。ここでいうプロセッサ数は、物理的なプロセッサの数でも、論理的なプロセッサ数でも、どちらでもよい。論理的なプロセッサとは、同時マルチスレッディング（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ：ＳＭＴ）機能を持つプロセッサで、仮想的に見えるプロセッサのことで、アプリケーションに提供されるプロセッサである。ＳＭＴは、単一の物理プロセッサの中に複数の仮想的なスレッド実行単位を持つことによって、単一のプロセッサながら、ソフトウェアからみると、論理的に複数のプロセッサが存在するように見える。
【００３４】
図３は、本実施例の論理ファイル構成情報１３２の説明図である。
【００３５】
論理ファイル構成情報１３２は、例えば各ＬＵ１０２に分割されて格納されるサブデータ１５２を単一の論理的なファイルとして扱えるようにする情報を格納する。
【００３６】
論理ファイル構成情報１３２は、サブデータ１５２の数を表すストライプ数情報３０１と、サブデータにストライピングするときのストライピング単位（サイズ）をあらわすストライプサイズ情報３０２と、サブデータの位置を特定するための情報であるサブデータ情報３０３を含む。
【００３７】
このほかに、例えば、論理的なファイルの名前や、複数の論理的なファイルをツリー構造で管理するための情報を保持してもよい。
【００３８】
図４は、本実施例の入出力スレッド指定情報１３３の説明図である。
【００３９】
入出力スレッド指定情報１３３は、ファイル入出力処理に伴い、入出力スレッドを生成する、または、あらかじめ作成した中から選択する際に利用する情報を格納する。
【００４０】
入出力スレッド指定情報１３３は、生成、または、選択する入出力スレッド数の上限を示す入出力スレッド数上限４０１と、実際のファイル入出力処理のとき、入出力スレッド数上限に達しない範囲で、使用する入出力スレッド数を決定するための情報を表す入出力決定項目４０２、生成、または、選択した入出力スレッドをどのプロセッサにバインドするか決定するための情報を表す入出力スレッドバインド指定情報４０３を含む。
【００４１】
入出力スレッド数決定情報４０２は、具体的には、論理ファイルのサブデータの数を基に入出力スレッド数を決定することを示す「サブデータ数」や、ホストコンピュータ１０１が備えるプロセッサ１１１の数を示す「プロセッサ数」を表す値が登録される。
【００４２】
入出力スレッド数決定情報４０２は、必ずしも値が登録されていなくてもよい。また、入出力スレッド指定情報１３３に、入出力スレッド数決定情報４０２自体がなくてもよい。その場合、あらかじめシステムで決められた動作に従い、入出力スレッド数を決定する。
【００４３】
図５は、本実施例において、入出力スレッド生成および入出力処理実行部１４１が実行する処理を示すフローチャートである。
【００４４】
入出力スレッド生成および入出力処理実行部１４１は、指定されたファイルはストライピングファイル(論理ファイル)か否かを判定する（ステップ５０１）。この判定は、ファイルを含むディレクトリがどのようなファイルを保持するかの情報や、ファイルの属性情報、ファイルのメタデータが論理ファイル構成情報を参照しているかなどの判定により実行される。
【００４５】
ステップ５０１において、ストライピングファイルであると判定された場合、入出力スレッド生成および入出力処理実行部１４１は、プロセッサ構成情報１３１、および、論理ファイル構成情報１３２に基づき、指定されたファイルの入出力を行う入出力スレッド数を決定する（ステップ５０２）。指定されたファイルの入出力を行う入出力スレッド数を決定する処理については、図６を参照して後述する。
【００４６】
次に、入出力スレッド生成および入出力処理実行部１４１は、ステップ５０２で決定した入出力スレッド数と、プロセッサ構成情報１３１から入出力スレッドを動作させるプロセッサを決定し、入出力スレッドを生成、または、選択し、各入出力スレッドを決定したプロセッサで動作させる（ステップ５０３）。ステップ５０３の具体的な処理については、図７を参照して後述する。
【００４７】
次に、生成、または、選択した、各入出力スレッドに対して、入出力対象とするサブデータに対する入出力を起動する（ステップ５０４）。ステップ５０４の入出力を起動する処理については、図９を参照して後述する。一方、ステップ５０１において、ストライピングファイルでないと判定された場合、処理を終える。以上で、入出力スレッド生成および入出力処理実行部１４１が実行する処理が終了する。
【００４８】
図６は、本実施例の入出力スレッド生成および入出力処理実行部１４１で実行される、入出力スレッド数を決定する処理（ステップ５０２）を示すフローチャートである。
【００４９】
入出力スレッド数決定処理は、入出力スレッド指定情報１３３の入出力スレッド数決定情報４０２を参照し、ホストコンピュータ１０１が備えるプロセッサ１１１の数を示す「プロセッサ数」を表す値が登録されているか否かを判定する（ステップ６０１）。
【００５０】
ステップ６０１において、「プロセッサ数」を表す値が登録されていると判定された場合、入出力スレッド数決定処理は、ファイルのサブデータ数がプロセッサ数以上か否かを判定する（ステップ６０２）。
【００５１】
ステップ６０２において、ファイルのサブデータ数がプロセッサ数以上であると判定された場合、変数「仮入出力スレッド数」にプロセッサ数の値をセットする（ステップ６０３）。
【００５２】
また、ステップ６０２において、ファイルのサブデータ数がプロセッサ数以上でないと判定された場合、変数「仮入出力スレッド数」にサブデータ数の値をセットする（ステップ６０４）。
【００５３】
一方、ステップ６０１において、「プロセッサ数」を表す値が登録されていないと判定された場合、入出力スレッド指定情報１３３の入出力スレッド数決定情報４０２を参照し、指定されたファイルのサブデータの数を示す「サブデータ数」を表す値が登録されているか否かを判定する（ステップ６０５）
ステップ６０５において、「サブデータ数」を表す値が登録されていると判定された場合、入出力スレッド数決定処理は、ファイルのサブデータ数がプロセッサ数以上か否かを判定する（ステップ６０６）。
【００５４】
ステップ６０６において、ファイルのサブデータ数がプロセッサ数以上であると判定された場合、変数「仮入出力スレッド数」にサブデータ数の値をセットする（ステップ６０７）。
【００５５】
また、ステップ６０６において、ファイルのサブデータ数がプロセッサ数以上でないと判定された場合、変数「仮入出力スレッド数」にプロセッサ数の値をセットする（ステップ６０８）。
【００５６】
一方、ステップ６０５において、「サブデータ数」を表す値が登録されていないと判定された場合、変数「仮入出力スレッド数」にサブデータ数の値をセットする（ステップ６０９）。
【００５７】
次に、入出力スレッド数決定処理は、入出力スレッド指定情報１３３の入出力スレッド数上限情報４０１を参照し、変数「仮入出力スレッド数」の値が入出力スレッド数上限情報４０１の値以上か否かを判定する（ステップ６１０）。
【００５８】
ステップ６１０において、変数「仮入出力スレッド数」の値が入出力スレッド数上限情報４０１の値以上であると判定された場合、入出力スレッド数を入出力スレッド数上限情報４０１の値にすることを決定する（ステップ６１１）。
【００５９】
一方、ステップ６１０において、変数「仮入出力スレッド数」の値が入出力スレッド数上限情報４０１の値以上でないと判定された場合、入出力スレッド数として、変数「仮入出力スレッド数」の値にすることを決定する（ステップ６１２）。
【００６０】
以上で、入出力スレッド数決定処理が終了する。
【００６１】
図７は、本実施例の入出力スレッド生成および入出力処理実行部１４１で実行される、入出力スレッド動作プロセッサ決定処理（ステップ５０３）を示すフローチャートである。
【００６２】
入出力スレッド動作プロセッサ決定処理は、入出力スレッド指定情報１３３の入出力スレッドバインド指定情報４０３を参照し、「プロセッサ番号指定」を表す値が登録されているか否かを判定する（ステップ７０１）。
【００６３】
ステップ７０１において、「プロセッサ番号指定」を表す値が登録されていると判定された場合、入出力スレッド動作プロセッサ決定処理は、図６で示した入出力スレッド数決定処理で決定した「入出力スレッド数」分の入出力スレッドを生成、または、選択し、指定された各プロセッサにバインドする（ステップ７０２）。ここでいうバインドは、入出力スレッドと動作させるプロセッサを対応付け、対応付けられたプロセッサ上で入出力スレッドを実際に動作させることである。
【００６４】
なお、このとき、各プロセッサの指定方法については、特に図示しないが、システムパラメータや環境変数によるプロセッサ番号を羅列により行う。具体的には、プロセッサ番号順に順に割り当てる場合には「０、１、２、３、４、５、…」、三つおきに順に割り当てる場合には「０、４、８、…、１、５、９、…」のように行う。なお、プロセッサ番号をしていできれば指定方法はシステムパラメータや環境変数以外でもよい。
【００６５】
一方、ステップ７０１において、「プロセッサ番号指定」を表す値が登録されていないと判定された場合、入出力スレッド指定情報１３３の入出力スレッドバインド指定情報４０３を参照し、「全体均等」を表す値が登録されているか否かを判定する（ステップ７０３）。
【００６６】
ステップ７０３において、「全体均等」を表す値が登録されていると判定された場合、図８を参照して後述する、入出力スレッド動作プロセッサ決定処理（均等化処理）を実行する（ステップ７０４）。この均等化処理を実行する際、変数「仮入出力スレッド数」に「入出力スレッド数」をセット、変数「一時プロセッサ数」にシステム全体のプロセッサ数をセットして実行する。
【００６７】
一方、ステップ７０３において、「全体均等」を表す値が登録されていないと判定された場合、ステップ７０５で示す、デフォルト動作を実行する。このデフォルト動作は、この例では「全体均等」を表す値が登録されているときと同じ処理を実行する。ステップ７０５では、結果的にステップ７０４と同じ処理を実行するが、別の処理をデフォルト動作とする場合、ステップ７０５はその処理で置き換えてよい。
【００６８】
以上で、入出力スレッド動作プロセッサ決定処理が終了する。
【００６９】
図８は、図７で示した入出力スレッド動作プロセッサ決定処理で実行される、均等化処理（ステップ７０４）を示すフローチャートである。
【００７０】
まず、図７のステップ７０４で指定された、変数「仮入出力スレッド数」と変数「一時プロセッサ数」を得る（ステップ８０１）。
【００７１】
次に、変数「仮入出力スレッド数」の値が変数「一時プロセッサ数」より大きいか否かを判定する（ステップ８０２）。
【００７２】
ステップ８０２において、変数「仮入出力スレッド数」の値が変数「一時プロセッサ数」より大きいと判定された場合、「一時プロセッサ数」分の入出力スレッドを生成、または、選択し、各プロセッサにバインドする。また、「仮入出力スレッド数」から「一時プロセッサ数」を引いた数字を新たな「仮入出力スレッド数」とする（ステップ８０３）。
【００７３】
ステップ８０３を実行後、再びステップ８０２を実行する。
【００７４】
一方、ステップ８０２において、変数「仮入出力スレッド数」の値が変数「一時プロセッサ数」より小さいか、または、同じと判定された場合、「仮入出力スレッド数」分の入出力スレッドを生成、または、選択し、全プロセッサに対して、なるべく均等に分散するようにプロセッサを選択してバインドする（ステップ８０４）。
【００７５】
以上で、入出力スレッド動作プロセッサ決定処理（均等化処理）が終了する。
【００７６】
図９は、本実施例の入出力スレッド生成および入出力処理実行部１４１で実行される、入出力起動処理（ステップ５０４）を示すフローチャートである。
【００７７】
まず、変数「仮サブデータ数」にファイルのサブデータ数をセットする（ステップ９０１）。
【００７８】
次に、入出力処理を実行していない入出力スレッドに入出力対象のサブデータを指定し、起動し（ステップ９０２）、変数「仮サブデータ数」をデクリメントする（ステップ９０３）。
【００７９】
次に、変数「仮サブデータ数」は０より大きいか否かを判定する（ステップ９０４）。
【００８０】
ステップ９０４で、変数「仮サブデータ数」は０より大きいと判定された場合、まだ入出力を実行していないサブデータがあることを意味する。このため、入出力処理を実行していない入出力スレッドがなければ少なくとも一つの入出力スレッドの入出力が完了するのを待ち（ステップ９０５）、再度ステップ９０２を実行する。
【００８１】
ステップ９０４で、変数「仮サブデータ数」は０以下と判定された場合、まだ入出力を実行していないサブデータがないことを意味するため、入出力起動処理が終了する。
【００８２】
図１０は、入出力起動処理で起動された入出力を完了するファイル入出力完了処理を示すフローチャートである。
【００８３】
まず、サブファイルの入出力完了を一つずつ待つ（ステップ１００１）。次に全サブデータの入出力が完了したか否かを判定する（ステップ１００２）。ステップ１００２で、全サブデータの入出力が完了していないと判定した場合、再度ステップ１００１を実行する。
【００８４】
一方、ステップ１００２で全サブデータの入出力が完了したと判定した場合、ファイル入出力完了処理が終了する。
【００８５】
図１１に示す処理は、ファイルシステムプログラム１２１内の論理ファイル作成部（図
示省略）によって実行される。
【００８６】
最初に、論理ファイル作成部は、ファイルシステム構成定義情報（図示省略）に基づいて、使用すべきサブデータを決定する（ステップ１１０１）。次に、論理ファイル作成部は、ホストコンピュータ１０１に接続されるＬＵ上に、論理ファイル構成情報（図示省略）を作成する（ステップ１１０２）。論理ファイル構成情報は、論理ファイルの名称に基づいて一意に決定される。この論理ファイル構成情報は、論理ファイルの部分内容を保持するために、使用すべき各ＬＵ内に作成されるサブファイル（図示省略）を一意に決定する情報を含む。ＬＵ上の論理ファイル構成情報を読み出して、メモリ１２２に配置することにより、論理ファイル構成情報１３２が利用可能になる。
【００８７】
次に、論理ファイル作成部は、使用すべきＬＵに、論理ファイルの部分内容を保持するためのサブデータを作成する（ステップ１１０３）。
【００８８】
図１２は、本実施例のファイルシステムプログラム１２１が実行する論理ファイル入出力処理を示すフローチャートである。図１２に示す処理は、ファイルシステムプログラム１２１内の論理ファイル入出力部（図示省略）によって実行される。
【００８９】
最初に、論理ファイル入出力部は、ファイルシステム構成定義情報の内容によって決定されるサブデータの情報を取得する（ステップ１２０１）。
【００９０】
次に、論理ファイル入出力部は、取得したサブデータの情報に基づいて、サブデータに対する読み出し又は書き込みを実行する（ステップ１２０２）。
【００９１】
以上、本実施例によれば、複数のＬＵ（ディスク装置）を接続したホストコンピュータにおいて、一つのファイルを複数のＬＵに分割格納するファイルシステムで、ディスク装置の数に応じて入出力性能を向上することができる。
【実施例２】
【００９２】
以下、本発明の実施例２を、図面を参照して説明する。図１３は、本実施例の計算機システムの構成を示すブロック図である。
【００９３】
本実施例と実施例１との主な相違点は、本実施例では、ホストコンピュータがＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）構成となっていることである。なお、対象の符号の番号が実施例１と同じものは、実施例１と同様の内容である。ＮＵＭＡは、複数プロセッサが共有するメインメモリおよび入出力装置へのアクセスコストが、メモリ領域とプロセッサの性能に依存して均一でないアーキテクチャである（特許文献４参照）。ＮＵＭＡ構成のホストコンピュータにおいては、実施例１では、ホストコンピュータ内の低スループットの経路を経由することにより、十分な入出力スループット性能を引き出すことができない場合がある。
【００９４】
実施例２では、サブデータを格納するＬＵの接続Ｉ／Ｆの位置を意識して、入出力スレッドをバインドするプロセッサを決定することでＮＵＭＡ構成のホストコンピュータにおいて、入出力スループット性能を向上する。
【００９５】
本実施例の計算機システムは、ホストコンピュータ１３０１、ディスク装置１０２を備える。ホストコンピュータ１３０１は、ストレージネットワーク１０３を介して、ディスク装置１０２と接続される。
【００９６】
ホストコンピュータ１３０１は、内部的に複数のＣＰＵボード１３０４とＣＰＵボードを接続するＣＰＵボード間ネットワーク１３０７からなる。
【００９７】
ＣＰＵボード１３０４は、相互に接続されたプロセッサ１１１、メモリ１１２、インターフェース（Ｉ／Ｆ）１１３、Ｉ／Ｆ１１３、ＣＰＵボード内ネットワーク１３０６、ＣＰＵボード間ネットワークＩ／Ｆ１３０５を備える。  ＣＰＵボード間ネットワークＩ／Ｆ１３０５は、ＣＰＵボード間ネットワーク１３０７を介して、他のＣＰＵボードと通信するインターフェースである。
【００９８】
本実施例のメモリ１１２は、少なくとも、ファイルシステムプログラム１２１、及び、マルチスレッド入出力プログラム１３２２を格納する。マルチスレッド入出力プログラム１３２２は、ホストコンピュータ１０１に接続された複数のＬＵに対して、マルチスレッド入出力を行うプログラムである。マルチスレッド入出力プログラム１３２２は、入出力スレッド生成および入出力処理実行部１３４１、プロセッサ構成情報１３３１、論理ファイル構成情報１３２、入出力スレッド指定情報１３３、接続デバイス情報１３３４を含む。これらについては後で詳細に説明する。
【００９９】
ファイルシステムプログラム１２１は、オペレーティングシステム（ＯＳ）（図示省略）の一部として提供されるファイルシステムプログラムであってもよいし、ユーザアプリケーション（図示省略）によって使用される入出力ライブラリであってもよい。以下の説明は、ファイルシステムプログラム１２１が入出力ライブラリである場合にも適用することができる。マルチスレッド入出力プログラム１３２２は、図ではファイルシステムプログラム１２１と別に示しているが、ファイルシステムプログラム１２１の一部として提供されても良い。Ｉ／Ｆ１１３は、ストレージネットワーク１０３に接続され、ストレージネットワーク１０３を介してＬＵ１０２と通信するインターフェースである。
【０１００】
ＬＵ１０２は、ホストコンピュータ１０１によって書き込まれたデータを格納する。
【０１０１】
ＣＰＵボード間ネットワーク１３０７の性能は、ＣＰＵボード内ネットワーク１３０６性能と異なる。一般的には、  ＣＰＵボード間ネットワーク１３０７の性能は、ＣＰＵボード内ネットワーク１３０６性能のスループット性能は低い。
【０１０２】
図１４は、本実施例のプロセッサ構成情報１３３１の説明図である。プロセッサ構成情報１３３１は、ホストコンピュータのプロセッサ数を示すプロセッサ数情報１４０１、ホストコンピュータのメモリアーキテクチャを示すメモリアーキテクチャ情報１４０２、ＣＰＵボード数情報１４０３、ＣＰＵボード個別情報１４０４を含む。
【０１０３】
ＣＰＵボード個別情報１４０４は、各ＣＰＵボードの個別情報を示す構造体へのポインタを用意している。ＣＰＵボードの個別情報は、ＣＰＵボードの識別情報１４１１とＣＰＵボード内のプロセッサ数情報１４１２、ＣＰＵボード内の入出力パス情報１４１３を備える。
【０１０４】
図１５は、本実施例の接続デバイス情報１３３４の説明図である。接続デバイス情報１３３４は、ＣＰＵボードと、そのＣＰＵボードが備えるＩ／Ｆ１１３、または、ストレージネットワーク１０３の接続位置から決まるネットワーク識別情報１５０１と、ネットワークに接続されているＬＵ１０２の識別情報１５０２を管理する。
【０１０５】
図１６は、図１４で図示省略しているが、本実施例のＬＵ１０２の識別情報とサブデータの格納ＬＵを対応付けるファイルシステム構成情報の説明図である。サブデータを格納するマウントポイントのディレクトリ名１６０１と、対応するＬＵの識別情報１６０２を格納する。
【０１０６】
図１７は、本実施例の入出力スレッド生成および入出力処理実行部１３４１で実行される、入出力スレッド動作プロセッサ決定処理（ステップ５０３）を示すフローチャートである。
【０１０７】
入出力スレッド動作プロセッサ決定処理は、入出力スレッド指定情報１３３の入出力スレッドバインド指定情報４０３を参照し、「プロセッサ番号指定」を表す値が登録されているか否かを判定する（ステップ１７０１）。ステップ１７０１において、「プロセッサ番号指定」を表す値が登録されていると判定された場合、入出力スレッド動作プロセッサ決定処理は、図６で示した入出力スレッド数決定処理で決定した「入出力スレッド数」分の入出力スレッドを生成、または、選択し、指定された各プロセッサにバインドする（ステップ１７０２）。ここでいうバインドは、入出力スレッドと動作させるプロセッサを対応付け、対応付けられたプロセッサ上で入出力スレッドを実際に動作させることである。
【０１０８】
なお、このとき、各プロセッサの指定方法については、特に図示しないが、システムパラメータや環境変数によるプロセッサ番号を羅列により行う。具体的には、プロセッサ番号順に順に割り当てる場合には「０、１、２、３、４、５、…」、三つおきに順に割り当てる場合には「０、４、８、…、１、５、９、…」のように行う。なお、プロセッサ番号をしていできれば指定方法はシステムパラメータや環境変数以外でもよい。
【０１０９】
一方、ステップ１７０１において、「プロセッサ番号指定」を表す値が登録されていないと判定された場合、入出力スレッド指定情報１３３の入出力スレッドバインド指定情報４０３を参照し、「全体均等」を表す値が登録されているか否かを判定する（ステップ１７０３）。
【０１１０】
ステップ１７０３において、「全体均等」を表す値が登録されていると判定された場合、図１８を参照して後述する、入出力スレッド動作プロセッサ決定処理（均等化処理）を実行する。この均等化処理を実行する際、変数「仮入出力スレッド数」に「入出力スレッド数」をセット、変数「仮プロセッサ数」にシステム全体のプロセッサ数をセットして実行する（ステップ１７０４）。
【０１１１】
一方、ステップ１７０３において、「全体均等」を表す値が登録されていると判定された場合、プロセッサ構成情報１３３１のメモリアーキテクチャ情報１４０２を参照し、「ＮＵＭＡ」を表す値が登録されているか否かを判定する（ステップ１７０５）。
【０１１２】
ステップ１７０５において、「ＮＵＭＡ」を表す値が登録されていると判定された場合、図１８を参照して後述する、入出力スレッド動作プロセッサ決定処理（ＮＵＭＡ処理）を実行する（ステップ１７０６）。
【０１１３】
一方、ステップ１７０３において、「全体均等」を表す値が登録されていないと判定された場合、ステップ１７０７で示す、デフォルト動作を実行する。このデフォルト動作は、この例では「全体均等」を表す値が登録されているときと同じ処理を実行する。ステップ１７０７では、結果的にステップ１７０４と同じ処理を実行するが、別の処理をデフォルト動作とする場合、ステップ１７０７はその処理で置き換えてよい。以上で、入出力スレッド動作プロセッサ決定処理が終了する。
【０１１４】
図１８は、図１７で示した入出力スレッド動作プロセッサ決定処理で実行される、ＮＵＭＡ処理（ステップ１７０６）を示すフローチャートである。
【０１１５】
入出力スレッド動作プロセッサ決定処理（ＮＵＭＡ処理）は、入出力スレッド指定情報１３３の入出力スレッドバインド指定情報４０３を参照し、「ＩＯアフィニティ」を表す値が登録されているか否かを判定する（ステップ１８０１）。ステップ１８０１において、「ＩＯアフィニティ」を表す値が登録されていると判定された場合、論理ファイル構成情報１３２と、プロセッサ構成情報１３３１と、接続デバイス情報１３３４から、ホストコンピュータ内ＣＰＵボードごとに、ＣＰＵボードに接続されているＬＵに格納されているサブデータの数を集計する（ステップ１８０２）。
【０１１６】
次に、プロセッサ構成情報１３３１からＣＰＵボードごとのプロセッサ数を特定する（ステップ１８０３）。さらに、ＣＰＵボードごとに、入出力スレッド動作プロセッサ決定処理（均等化処理）を実行する（ステップ１８０４）。この均等化処理を実行する際、変数「仮入出力スレッド数」に「ＣＰＵボードごとのサブデータ数」と「入出力スレッド数」のうちの小さい数をセット、かつ、変数「一時プロセッサ数」にＣＰＵボードのプロセッサ数をセットして実行する。
【０１１７】
一方、ステップ１８０１で、「ＩＯアフィニティ」を表す値が登録されていないと判定された場合、入出力スレッド動作プロセッサ決定処理（均等化処理）を実行する（ステップ１８０５）。この均等化処理を実行する際、変数「仮入出力スレッド数」に「入出力スレッド数」をセット、変数「一時プロセッサ数」にシステム全体のプロセッサ数をセットして実行する。
【０１１８】
以上で、入出力スレッド動作プロセッサ決定処理（ＮＵＭＡ処理）が終了する。
【０１１９】
本実施例によれば、ＮＵＭＡ構成のホストコンピュータにおいて、入出力処理を行うプロセッサと、入出力対象データを格納するディスク装置を選択することにより、一つのファイルを複数のＬＵに分割格納するファイルシステムで、ディスク装置の数に応じて入出力性能を向上することができる。
【実施例３】
【０１２０】
以下、本発明の実施例３を、図面を参照して説明する。図１９は、本実施例の計算機システムの構成を示すブロック図である。本実施例は、実施例２の構成とほぼ同様となる。対象の番号が実施例２と同じものは、実施例２と同様の内容である。実施例２は、ＮＵＭＡ構成のホストコンピュータにおいて、入出力スループット性能を引き出すことが可能になる。しかし、複数のＬＵの総合入出力スループット性能が、ＮＵＭＡの低スループットの経路のスループット性能に比べて高い場合は、やはり、十分な入出力スループット性能を引き出すことができない。
【０１２１】
図２２を参照して問題の概要を説明する。図２２は本実施例の計算機システムの構成と、ＬＵに格納されるサブデータ、および、各ＣＰＵボード内の任意のプロセッサに一つずつ入出力スレッドがバインドされることを模式的に表している。
【０１２２】
一般に単一のユーザプログラム（図示省略）はいずれかのＣＰＵボード内のいずれかのプロセッサで実行されている。ユーザプログラムからのメモリ割り当て要求はＯＳのメモリアフィニティ制御により、ユーザプログラムが実行されているプロセッサを備えるＣＰＵボード内で確保される。この例ではＣＰＵボード２内のメモリにバッファが確保されたことを示している。図２２に示すとおり、各ＣＰＵボードに接続されたＬＵとの間で入出力される複数のサブデータは、ＣＰＵボード２に接続されているＬＵに格納されるサブデータ２を除き、ＣＰＵボード間の低スループットの経路を経由して入出力される。
【０１２３】
このケースでは、複数のＬＵの総合入出力スループット性能が、ＮＵＭＡの低スループットの経路のスループット性能に比べて高い場合は、複数のＬＵの総合入出力スループット性能が引き出せないことになる。すなわち、ＬＵに接続されるＣＰＵボード内のスループット性能がいくら高くても、ＣＰＵボード間の低スループットの経路を経由して、ＣＰＵボード２内のメモリとのアクセスが生じるため、ファイルの入出力要求に対するスループット性能が低下する。本実施例では、実施例２に加えて、サブデータを格納するメモリの位置を意識して入出力することで、ＮＵＭＡ構成のホストコンピュータにおいて、複数のＬＵの総合入出力スループット性能が、ＮＵＭＡの低スループットの経路のスループット性能に比べて高い場合でも入出力スループット性能を引き出す。実施例２に対する主な相違点は、マルチスレッド入出力プログラム１９２２に、ＣＰＵボード毎メモリ割り当て処理実行部１９４２、および、メモリとサブデータ対応表１９３５を含む点である。これらについては後で詳細に説明する。
【０１２４】
図２０は、本実施例のＣＰＵボード毎メモリ割り当て処理実行部１９４２で実行される、ＣＰＵボード毎メモリ割り当て処理実行部を示すフローチャートである。ＣＰＵボード毎メモリ割り当て処理実行部は、ファイル入出力の前段階として、データを入出力するためのメモリ確保要求を受け付ける（ステップ２００１）。
【０１２５】
この要求に対して、プロセッサ構成情報１３３１を参照して、ＣＰＵボードごとに、メモリ割り当てスレッドを生成、または、あらかじめ作成している中から選択する（ステップ２００２）。
【０１２６】
次に、ファイル構成情報、およびプロセッサ構成情報に基づき、ＣＰＵボードごとに割り当てるメモリ量を決定する（ステップ２００３）。ＣＰＵボードごとに割り当てられるメモリ量は、サブデータを格納するＬＵが接続されているＣＰＵボードに、該サブデータを格納するメモリを、該ＣＰＵボード内のメモリにとるようにする。このＣＰＵボードを指定してのメモリ確保は、通常のＮＵＭＡ構成のホストコンピュータで動作するＯＳのメモリアフィニティ機能を有効にした通常のメモリ割り当てで可能である。
【０１２７】
最後に、各ＣＰＵボードで動作するメモリ割り当てスレッドが、ステップ２００３で決定した量のメモリを割り当てる。このとき、確保したメモリとサブデータとを対応付け、メモリとサブデータ対応情報１９３５に登録して処理を終了する。
【０１２８】
図２１は、本実施例のメモリとサブデータ対応情報の説明図である。サブデータの名称などサブデータを識別する情報２１０１と、該サブデータ用に割り当てたメモリのアドレス２１０１を対応付けて格納する。上記のように割り当てたサブデータに対応するメモリに対して、入出力を起動する処理で、ＯＳバッファを経由せず、ユーザバッファに、直接、入出力データを転送する（一般的なダイレクト入出力機能）ことにより、ＮＵＭＡの低スループットの経路をサブデータの入出力で経由しない。
【０１２９】
図２３は本実施例の計算機システムの構成と、ＬＵに格納されるサブデータ、および、各ＣＰＵボード内の任意のプロセッサに、一つずつメモリ割り当てスレッドと入出力スレッドがバインドされることを模式的に表している。図２３に示すとおり、各ＣＰＵボードに接続されたＬＵとの間で入出力される複数のサブデータは、各サブデータが、該サブデータを格納するＬＵが接続されているＣＰＵボード内のバッファとの間での転送が発生するだけであるため、ＣＰＵボード間の低スループットの経路を経由しない。このため、複数のＬＵの総合入出力スループット性能が、ＮＵＭＡの低スループットの経路のスループット性能に比べて高い場合でも、複数のＬＵの総合入出力スループット性能が引き出すことが可能となる。
【０１３０】
本実施例によれば、ＮＵＭＡ構成の単一ホストコンピュータにおいて、入出力処理を行うプロセッサと、入出力対象データを格納するディスク装置と、入出力対象データに対応するメモリ領域の割り当て位置を選択することにより、一つのファイルを複数のＬＵに分割格納するファイルシステムで、ディスク装置の数に応じて入出力性能を向上することができる。
【符号の説明】
【０１３１】
１０１、１３０１  ホストコンピュータ
１０２  ＬＵ（ディスク装置）
１０３  ストレージネットワーク
１１１  プロセッサ
１１２、１３１２  メモリ
１１３  インターフェース（Ｉ／Ｆ）
１２１  ファイルシステムプログラム
１２２、１３２２  マルチスレッド入出力プログラム
１３０４  ＣＰＵボード
１３０５  ＣＰＵボード間ネットワークＩ／Ｆ
１３０６  ＣＰＵボード内ネットワーク
１３０７  ＣＰＵボード間ネットワーク
【図１】
2010186284.tif 000003
【図２】
2010186284.tif 000004
【図３】
2010186284.tif 000005
【図４】
2010186284.tif 000006
【図５】
2010186284.tif 000007
【図６】
2010186284.tif 000008
【図７】
2010186284.tif 000009
【図８】
2010186284.tif 000010
【図９】
2010186284.tif 000011
【図１０】
2010186284.tif 000012
【図１１】
2010186284.tif 000013
【図１２】
2010186284.tif 000014
【図１３】
2010186284.tif 000015
【図１４】
2010186284.tif 000016
【図１５】
2010186284.tif 000017
【図１６】
2010186284.tif 000018
【図１７】
2010186284.tif 000019
【図１８】
2010186284.tif 000020
【図１９】
2010186284.tif 000021
【図２０】
2010186284.tif 000022
【図２１】
2010186284.tif 000023
【図２２】
2010186284.tif 000024
【図２３】
2010186284.tif 000025