(57)【要約】      （修正有）【課題】マルチパス・コンピュータ・システム内にある多数のパス間においてアクティビティのバランスをとるために改良した方法および装置を提供する。【解決手段】ホスト・コンピュータと、システム資源と、ホスト・コンピュータをシステム資源に結合する複数のパスとを含むマルチパス・コンピュータ・システムにおいて、少なくとも２つのパス間で入出力（Ｉ／Ｏ）動作を分散する方法および装置。ホスト・コンピュータとシステム資源との間の送信のために割り当てられる次のＩ／Ｏ動作に対して、少なくとも２つのパスを通じた送信のために以前に割り当てられ整列されているＩ／Ｏ動作の状態に基づいて、次のＩ／Ｏ動作の送信のために、前記少なくとも２つのパスから１つを選択する。【選択図】図１
2006351030.tif 000002
【特許請求の範囲】
【請求項１】
ホスト・コンピュータと、システム資源と、前記ホスト・コンピュータを前記システム資源に結合する複数のパスとを含むマルチパス・コンピュータ・システムにおいて、少なくとも２つのパス間で入出力（Ｉ／Ｏ）動作を分散する方法であって、
（Ａ）前記ホスト・コンピュータと前記システム資源との間の伝送のために割り当てられる次のＩ／Ｏ動作に対して、前記少なくとも２つのパスを通じた伝送のため以前に割り当てられ整列されているＩ／Ｏ動作の状態に基づいて、前記少なくとも２つのパスから前記次のＩ／Ｏ動作の送信のための１つを選択するステップから成り、各Ｉ／Ｏ動作は、前記システム資源によって処理されるときに関連するデータ・アクセス時間を有し、
前記ステップ（Ａ）は、前記少なくとも２つのパスに対して以前に割り当てられ整列されているＩ／Ｏ動作の予測されるデータ・アクセス時間に基づいて、前記少なくとも２つのパスの内前記１つを選択するステップを含み、
前記システム資源は、キャッシュを含む少なくとも１つの記憶システムを含み、キャッシュ・ヒットおよびキャッシュ・ミスが前記記憶システムにおいて異なる平均データ・アクセス時間を有し、前記ステップ（Ａ）は、前記少なくとも２つのパスに対して以前に割り当てられ整列されているＩ／Ｏ動作に対するキャッシュ・ヒットおよびキャッシュ・ミスの数を推定し、キャッシュ・ヒットおよびキャッシュ・ミスの前記推定数に基づいて、前記少なくとも２つのパスの内前記１つを選択することを含む、方法。
【請求項２】
請求項１記載の方法において、前記システム資源は少なくとも１つの記憶システムを含み、前記記憶システムからの読み出しおよび前記記憶システムへの書き込みは異なる平均データ・アクセス時間を有し、前記ステップ（Ａ）は、前記少なくとも２つのパスに対して以前に割り当てられ整列されているＩ／Ｏ動作における読み出しおよび書き込みの数に基づいて、前記少なくとも２つのパスの内前記１つを選択するステップを含む、方法。
【請求項３】
請求項１に記載の方法において、更に、
前記ホスト・コンピュータと前記システム資源との間の伝送のために割り当てられる全てのＩ／Ｏ動作毎に、前記少なくとも２つのパスを通じた伝送のため以前に割り当てられ整列されているＩ／Ｏ動作の状態に基づいて、前記少なくとも２つのパスから前記Ｉ／Ｏ動作の伝送のための１つを選択するステップを含む方法。
【請求項４】
マルチパス・コンピュータ・システムにおいて使用可能なホスト・コンピュータであって、前記マルチパス・コンピュータ・システムは、システム資源と、前記ホスト・コンピュータを前記システム資源に結合する複数のパスを含み、前記ホスト・コンピュータは、
前記ホスト・コンピュータによって開始された入出力（Ｉ／Ｏ）動作を、前記システム資源に伝送するために前記複数のパスの内少なくとも２つの間で分散するドライバを備え、該ドライバは、前記ホスト・コンピュータから前記システム資源への伝送のために割り当てられる次のＩ／Ｏ動作に対して、前記複数のパスの内前記少なくとも２つを通じて前記システム資源に伝送するため以前に割り当てられ整列されているＩ／Ｏ動作の状態に基づいて、前記少なくとも２つのパスの内１つを選択し、
各Ｉ／Ｏ動作は、前記システム資源によって処理されるときに関連するデータ・アクセス時間を有し、前記ドライバは、前記複数のパスの内前記少なくとも２つに対して以前に割り当てられ整列されているＩ／Ｏ動作の予測されるデータ・アクセス時間に基づいて、前記複数のパスの前記少なくとも２つの内前記１つを選択し、
前記システム資源は、キャッシュを含む記憶システムであり、キャッシュ・ヒットおよびキャッシュ・ミスが前記記憶システムにおいて異なる平均データ・アクセス時間を有し、前記ドライバは、前記複数のパスの内前記少なくとも２つに対して以前に割り当てられ整列されているＩ／Ｏ動作におけるキャッシュ・ヒットおよびキャッシュ・ミスの数を推定し、キャッシュ・ヒットおよびキャッシュ・ミスの前記推定数に基づいて、前記複数のパスの前記少なくとも２つの内前記１つを選択する、ホスト・コンピュータ。
【請求項５】
請求項４記載のホスト・コンピュータにおいて、前記システム資源は記憶システムであり、前記記憶システムからの読み出しおよび前記記憶システムへの書き込みは異なる平均データ・アクセス時間を有し、前記ドライバは、前記複数のパスの内前記少なくとも２つに対して以前に割り当てられ整列されているＩ／Ｏ動作における読み出しおよび書き込みの数に基づいて、前記複数のパスの前記少なくとも２つの内前記１つを選択する、ホスト・コンピュータ。
【請求項６】
請求項４に記載のホスト・コンピュータにおいて、
前記ホスト・コンピュータと前記システム資源との間の伝送のために割り当てられる全てのＩ／Ｏ動作毎に、前記ドライバが前記少なくとも２つのパスを通じた伝送のため以前に割り当てられ整列されているＩ／Ｏ動作の状態に基づいて、前記少なくとも２つのパスから前記Ｉ／Ｏ動作の伝送のための１つを選択する、ホスト・コンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチパス・コンピュータ・システムに関し、更に特定すれば、かかるコンピュータ・システムにおける多数のパス間でワークロードのバランスを取る方法および装置に関する。
【背景技術】
【０００２】
多くのコンピュータ・システムは、１つ以上のホスト・コンピュータと、ホスト・コンピュータが通信する１つ以上のシステム資源とを含む。このようなシステムの一例を図１に示し、ホスト・コンピュータ１と、システム資源（即ち、記憶システム３）とを含む。ホスト・コンピュータ１はシステム資源と通信し、ホスト・コンピュータ１が用いるデータの格納および読み出しを行なう。
【０００３】
記憶システム３は複数の記憶装置を含み、その上にデータを格納する。図１に示すシステムの一例では、記憶システムは、複数のディスク・ドライブ５ａ〜５ｂと、ディスク・ドライブ５ａおよび５ｂに対するアクセスをそれぞれ制御する複数のディスク・コントローラ７ａ〜７ｂとを含む。更に、記憶システム３は、複数のストレージ・バス・ディレクタ９を含み、通信バス１７を通じてホスト・コンピュータ１との通信を制御する。記憶システム３は、更に、当該記憶システムの処理能力を向上させるキャッシュ１１を含む。即ち、ホスト・コンピュータ１が記憶システム３からの読み取りを実行するとき、記憶システム３は、ディスク・ドライブ５ａ〜５ｂの１つからではなく、キャッシュ１１からの読み出しを行い（データがキャッシュに格納されている場合）、読み取りを一層効率的に実行する。同様に、ホスト・コンピュータ１が記憶システム３に対して書き込みを実行する場合、対応するストレージ・バス・ディレクタ９はキャッシュ１１に対して書き込みを実行する。その後、ホスト・コンピュータ１には透過的に、書き込みはディスク・ドライブ５ａ〜５ｂの内適切な１つに対して、非同期にディステージ（ｄｅｓｔａｇｅ）することができる。最後に、記憶システム３は、内部バス１３を含み、これを通じて、ストレージ・バス・ディレクタ９、ディスク・コントローラ７ａ〜７ｂおよびキャッシュ１１が通信を行なう。
【０００４】
ホスト・コンピュータ１は、プロセッサ１６と、１つ以上のホスト・バス・アダプタ１５とを含む。ホスト・バス・アダプタ１５の各々は、通信バス１７の対応する１つを通じて、プロセッサ１６および記憶システム３間の通信を制御する。尚、単一のプロセッサ１６ではなく、ホスト・コンピュータ１は多数のプロセッサを含むことができることは認められよう。各バス１７は、多数の異なる形式の通信リンクのいずれでも可能であり、ホスト・バス・アダプタ１５およびストレージ・バス・ディレクタ９は、それらの間に結合されている通信バス１７に対して適切なプロトコルを用いて通信するように構成されている。例えば、通信バス１７の各々は、ＳＣＳＩバスとして実現することができ、ディレクタ９およびアダプタ１５は各々ＳＣＳＩドライバを含む。
【０００５】
典型的に、多数の通信パスが設けられているが、それは２つの理由の内１つによる。第１に、ホスト・コンピュータ１およびシステム資源（例えば、記憶システム３）間の通信パスの１つに障害を発生した場合、多数の通信パスによって何らかのフォールト・トレランスが得られる。したがって、コンピュータ・システムの中には、いずれの特定時点においても動作状態にあるのは単一の通信パスのみであるが、一次パスに障害が発生した場合動作状態となる少なくとも１つの追加パスが設けられているコンピュータ・システムがある。
【０００６】
別のコンピュータ・システムでは、システムの処理能力を向上させるために、多数の通信パスが設けられている。このようなシステムは、多数の通信パスは同時に動作し、ホスト・コンピュータ１とシステム資源（例えば、記憶システム３）との間で多数の通信動作を同時に行なうことができ、システムの処理能力が向上する。
【０００７】
多数の通信パスを同時に用いるシステムでは、従来、多数のパス上でのアクティビティのバランスを取るために、単純なラウンド・ロビン技法が用いられてきた。即ち、通信パスの各々を用いて動作が実行され終わるまで、ホスト・コンピュータ１と資源（例えば、記憶システム３）との間の第１動作は、第１通信パス（例えば、図１におけるパスＡ）上で実行され、次の動作は次の通信パス（例えば、パスＢ）を用いて実行される等というように行われる。各通信パスが用いられた時点で、ラウンド・ロビン技法は最初に戻り、次の動作を第１通信パス（例えば、パスＡ）上で送信することから再び開始する。このように、図１に示すシステムでは、ホスト・コンピュータ１および記憶システム３間での一連の連続する通信動作が、次のパス順序、即ち、Ａ，Ｂ，Ｃ，Ｄ，Ａ、Ｂ，Ｃ，Ｄ，．．．，Ａ，Ｂ，Ｃ，Ｄの順にそれぞれ実行されることになる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本出願人は、従来のラウンド・ロビン技法はシステムの処理能力を最大限高めるものではないことを発見した。したがって、本発明の目的は、マルチパス・コンピュータ・システム内にある多数のパス間においてアクティビティのバランスを取るために改良された方法および装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明の例示としての一実施形態は、ホスト・コンピュータと、システム資源と、ホスト・コンピュータをシステム資源に結合する複数のパスとを含むマルチパス・コンピュータ・システムにおいて、少なくとも２つのパス間で入出力（Ｉ／Ｏ）動作を分散する方法を対象とする。この方法は、ホスト・コンピュータとシステム資源との間の送信のために割り当てられる次のＩ／Ｏ動作に対して、少なくとも２つのパスを通じた送信のため以前に割り当てられ整列されているＩ／Ｏ動作の状態に基づいて、次のＩ／Ｏ動作の送信のために、少なくとも２つのパスから１つを選択するステップから成る。
【００１０】
本発明の例示としての別の実施形態は、マルチパス・コンピュータ・システムにおいて使用可能なホスト・コンピュータを対象とし、このマルチパス・コンピュータ・システムは、システム資源と、ホスト・コンピュータをシステム資源に結合する複数のパスを含む。ホスト・コンピュータは、ホスト・コンピュータによって開始された入出力（Ｉ／Ｏ）動作を、システム資源に送信するために複数のパスの内少なくとも２つの間で分散するドライバを備え、このドライバは、ホスト・コンピュータからシステム資源への送信のために割り当てられる次のＩ／Ｏ動作に対して、複数のパスの内少なくとも２つを通じてシステム資源に送信するため以前に割り当てられ整列されているＩ／Ｏ動作の状態に基づいて、少なくとも２つのパスの内１つを選択する。
【発明を実施するための最良の形態】
【００１１】
本出願人は、従来のマルチパス・システムにおいて用いられているラウンド・ロビン技法は、多数のシステム・パスを効果的に利用しておらず、したがってシステムの処理能力を最大限生かしていないことを発見した。即ち、ラウンド・ロビン・システムにおける基本的な想定は、ホスト・コンピュータ１とシステム資源（例えば、記憶システム３）との間のパスを通じて実行されるいずれのＩ／Ｏ動作も同じ実行時間を有するので、Ｉ／Ｏ動作が多数のシステム・パス間で均等に分散されている場合、システム・パスの各々は等しく用いられ、これによってシステムの処理能力を最大に高めるということである。しかしながら、本出願人は、この基本的な想定は正しくなく、異なるＩ／Ｏ動作を完了するには異なる時間量を要し、ラウンド・ロビン・バランシング技法を使用すると、多数のシステム・バス上で実行されるアクティビティのバランスを均一に取ることができず、一部のパスはそれらの最大容量で利用されない結果となることを発見した。
【００１２】
前述のことを念頭に入れ、本発明の一態様は、多数のシステム・パス上で実行されるアクティビティのバランスをインテリジェントに取ることによってシステムの処理能力を向上させる方法および装置を対象とする。以下で詳しく論ずるが、本出願人は、マルチパス・コンピュータ・システム内にある多数のパスでは、そのいずれの１つにおいて実行される一連のＩ／Ｏ動作についても、いかに迅速に実行するかということに影響を及ぼす要因は多数あることを発見した。その結果、ラウンド・ロビン技法にしたがってマルチパス・コンピュータ・システムにおける多数のパス間で均等にＩ／Ｏ動作を分散させると、一部のパスに割り当てられたＩ／Ｏ動作は、他のパスよりも迅速に完了するという状況が発生する可能性がある。その結果、Ｉ／Ｏ動作の比較的長いキューが多数のシステム・パスの一部に生じるが、他のパスは空であるという可能性がある。この例を図２に示す。この場合、３つのＩ／Ｏ動作２１〜２３がパスＡに整列され、２つのＩ／Ｏ動作２５〜２６がパスＢに整列され、４つのＩ／Ｏ動作２７〜３０がパスＤに整列されているが、パスＣは空である。更に、このマルチ・パス間のＩ／Ｏ動作の分散は、Ｉ／Ｏ動作が多数のパスに最後に割り当てられた順序には無関係であってもよいことが認められよう。例えば、パスＣは、最後に分配されたＩ／Ｏ動作が割り当てられたパスであるにも拘らず、空になっていることもある。
【００１３】
前述のことを念頭に入れ、本発明の一実施形態では、多数のシステム・パスの内、最も短いパスであると判定された１つに各Ｉ／Ｏ動作を分配するように優先順位を与える。即ち、Ｉ／Ｏ動作が最も迅速に完了すると予期されるパスが選択される。Ｉ／Ｏ動作に対するパスの選択は、選択を行なう時点において既に割り当てられ多数のシステム・パスに整列されているＩ／Ｏ動作のステータスに基づく。本出願人は、個々のＩ／Ｏ動作に対して最も短いパスを選択するために採用可能な多数の異なる基準を考え出した。本発明の種々の実施形態において、これらの基準の各々を別個に用いることができる。あるいは、以下に論ずる本発明の別の実施形態では、これらの要因の各々を組み合わせて、選択基準の各々に重み係数を割り当て、個々のＩ／Ｏ動作に対するパスの選択を最適化する。
【００１４】
本発明の一実施形態では、個々のＩ／Ｏに対して最短パスを選択するために用いられる基準は、多数のパスの各々に整列されているＩ／Ｏ動作の数という評価を含む。本発明のこの実施形態について、図２に示す例を参照しながら説明することができる。この場合、３つのＩ／Ｏ動作がパスＡに整列され、２つのＩ／Ｏ動作がパスＢに整列され、パスＣは空であり、４つのＩ／Ｏ動作がパスＤに整列されている。多数のパスのいずれに対しても保留となっているＩ／Ｏ動作が最小数であるという基準を用いると、パスＣが選択されるのは明らかである。何故なら、これは空であり、これにＩ／Ｏ動作を送れば直ちに処理を進めるからである。コンピュータ・システムがパスＡ、ＢおよびＤを含む３つのパスのみを採用する場合、この基準を用いると、パスＢが選択される。何故なら、これは最小数のＩ／Ｏ動作を採用するからである。
【００１５】
尚、整列しているＩ／Ｏ動作の数に基づくパスの選択を含む本発明の実施形態は、選択が行われる時点において多数のシステム・パスに整列されているＩ／Ｏ動作のステータスに基づく、インテリジェントな選択基準を用いたパス選択を全く行なわない従来技術のラウンド・ロビン技法に対して利点があることが認められよう。その結果、ラウンド・ロビン技法を用いると、Ｉ／Ｏ動作は、保留Ｉ／Ｏ動作の大きなキューを含むパスに送られる可能性があり、その結果、本発明のこの実施形態による選択基準が採用された場合よりも、Ｉ／Ｏ動作の完了に長い時間を要することになる。
【００１６】
尚、整列しているＩ／Ｏ動作の数に基づくパスの選択に関連する本発明の実施形態は、ホスト・コンピュータ１に単純に実現することができ、更に本発明はいずれの特定の実現態様にも限定されないことは認められよう。例えば、殆どのコンピュータ・システムにおいて、プロセッサ１６は、ホスト・バス・アダプタ１５間でＩ／Ｏ動作を分散する役割を担うフィルタ・ドライバを含む。フィルタ・ドライバは、単にホスト・バス・アダプタ１５の各々に問い合わせて各々に整列されているＩ／Ｏ動作の数を判定し、整列されているＩ／Ｏ動作の数が最も少ないパスに、次のＩ／Ｏ動作を分配することができる。
【００１７】
整列されているＩ／Ｏ動作の数に基づくパスの選択に関係する本発明の実施形態の基礎となる１つの前提は、各Ｉ／Ｏ動作は完了に同じ時間量を要するという仮定である。本出願人は、この仮定は精度が高くないことを発見した。ホスト・コンピュータ１（図１）と記憶システム３のようなシステム資源との間でＩ／Ｏ動作を完了する時間長に影響を及ぼす基本的な要因は３つある。これら３つの要因は、（１）ホスト・コンピュータ１とシステム資源との間に特定のパスを通じて接続を確立するために要する調停時間、（２）一旦資源がパスの１つを通じてＩ／Ｏ要求を受信したときに、資源が応答するためのデータ・アクセス時間、および（３）特定のパスを実現するために用いられる通信バス１７上でホスト・コンピュータ１とシステム資源との間でデータを送信するための転送時間を含む。
【００１８】
本発明の代替実施形態では、単純に各パス上に整列されているＩ／Ｏ動作の数に着目する代わりに、各パス毎に整列されているＩ／Ｏ動作の集合によって転送されるデータ・ブロック数を考慮する。何故なら、これは各パスに整列されているＩ／Ｏ動作の集合に対するデータ転送時間に影響を及ぼすからである。この点を示すにあたり、図３に２つのパスＡおよびＢを示す。パスＡには１つのＩ／Ｏ動作３２が整列されており、パスＢは２つの整列されたＩ／Ｏ動作３３および３４を含む。整列されているＩ／Ｏ動作の数に関係する前述の選択基準のみを用いてパスＡおよびＢ間で選択を行なうと、パスＡが選択される。何故なら、こちらの方が含むＩ／Ｏ動作の数が少ないからである。しかしながら、図３に示すように、パスＡ上に整列しているＩ／Ｏ動作３２は、８つのデータ・ブロック（即ち、ブロック３２ａ〜３２ｈ）を含み、一方パスＢに整列しているＩ／Ｏ動作は合計３つのデータ・ブロック（即ち、Ｉ／Ｏ動作３３におけるデータ・ブロック３３ａおよび３３ｂ、ならびにＩ／Ｏ動作３４内の１つのデータ・ブロック）のみを含む。したがって、パスＡおよびＢが同じデータ転送速度を含む場合、パスＢに整列されている２つのＩ／Ｏ動作は、実際には、パスＡに整列されている１つのＩ／Ｏ動作よりも転送時間は短くて済む。したがって、本発明の例示の一実施形態によれば、整列されているデータ・ブロック数が少ないために、パスＢを通じての方がパスＡを通じるよりも次のＩ／Ｏ動作が迅速に完了するという予測により、次のＩ／Ｏ動作をパスＢに整列させる。
【００１９】
本発明の別の代替実施形態では、各パス毎に用いられる通信バス１７（図１）の特定の形式に関する追加情報を選択基準に追加する。尚、図１に示すようなコンピュータ・システムでは、各パスを同じ形式の通信バス１７で実現する必要がないように、異なる形式の通信バス１７を用いて種々のパスＡ〜Ｄを形成可能であることは認められよう。加えて、種々の通信バスのデータ転送レートおよび調停時間は幅広く変動する可能性があることも認められよう。例えば、ホスト・コンピュータ１とシステム資源との間のパスＡ〜Ｄのためにバス１７を実現するために使用可能な典型的な通信リンクは、Ｆｉｂｒｅ Ｃｈａｎｎｅｌ、ＦａｓｔＷｉｄｅおよびＵｌｔｒａ ＳＣＳＩを含む。ＦｉｂｒｅＣｈａｎｎｅｌは、約１００メガバイト／秒のデータ転送レート、および約４０マイクロ秒の調停時間を含む。Ｆａｓｔ Ｗｉｄｅは、約２０メガバイト／秒のデータ転送レート、および約２００マイクロ秒の調停時間を含み、Ｕｌｔｒａ ＳＣＳＩは、約４０メガバイト／秒のデータ転送レート、および約１６０マイクロ秒の調停時間を含む。したがって、パスＡ〜Ｄの１つのための通信バス１７を実現するために用いたＦｉｂｒｅ Ｃｈａｎｎｅｌ接続を通じたデータ転送レートは、Ｆａｓｔ Ｗｉｄｅを用いて実現したパスの別の１つに対するそれよりも５倍も速いことが認められよう。図３に示す例を参照すると、Ｆｉｂｒｅ Ｃｈａｎｎｅｌを用いてパスＡを実現し、Ｆａｓｔ Ｗｉｄｅを用いてパスＢを実現する場合、パスＡに整列されている８つのデータ・ブロックに対するデータ転送時間は、パスＢに整列されている３つのデータ・ブロックのそれよりも短い。このように、整列されているデータ・ブロック数のみに基づいたこれらパス間の選択では、次のＩ／Ｏ動作に可能な最短パスを選択するという目的を達成できない。したがって、本発明の代替実施形態では、通信パスを実現するために用いる特定の技術を選択基準に加える。本発明のこの実施形態では、各パスに整列されているＩ／Ｏ動作の数を、それによって表されるデータ・ブロック数、ならびにパスの各々に対する調停時間およびデータ転送レートと共に考慮に入れる。これら３つの情報ピースを用いると、整列されているＩ／Ｏ動作の各々対する調停、およびそれによって表されるデータ・ブロックの転送に最短の合計時間をもたらすパスを選択することができる。
【００２０】
先に論じたように、調停およびデータ転送時間に加えて、特定のパスに整列されているＩ／Ｏ動作をいかに迅速に完了するかに影響を及ぼす別の要因は、各Ｉ／Ｏ動作がシステム資源（例えば、図１における記憶システム３）内の目標データにアクセスする時間である。したがって、本発明の別の代替実施形態では、多数のシステム・パスに整列されているＩ／Ｏ動作に対するアクセス時間を、次のＩ／Ｏ動作に最短パスを選択する基準に含ませる。この点について、従来のラウンド・ロビン技法の基礎となる仮定は、各Ｉ／Ｏ動作は、システム資源に対して同じアクセス時間がかかるということにある。本出願人は、この仮定が常に正しい訳ではなく、多数のパス間でワークロードのバランスを取る場合に考慮に入れないと、マルチパス・コンピュータ・システムの処理能力に重大な影響を及ぼし得ることを発見した。
【００２１】
本発明のロード・バランシング技法を用いることができる例示の一システムは、図１のコンピュータ・システムである。この場合、ホスト・コンピュータ１に接続されている資源は、複数のディスク・ドライブ５ａ〜５ｂを含む記憶システム３である。先に論じたように、記憶システム３は、記憶システムの処理能力を向上するために用いられているキャッシュ１１も含む。即ち、ホスト・コンピュータ１が記憶システム３に対して読み出しまたは書き込みを実行する場合、記憶システムは、キャッシュ１１に対して読み出しまたは書き込みを行なう（キャッシュ内で所望のデータに対するヒットがあった場合）。したがって、読み出しがキャッシュにおいてヒットした場合、読み出しがキャッシュにおいてミスし、ディスク・ドライブ５ａ〜５ｂの内目標とする１つにアクセスしなければならない場合よりも迅速に実行することができる。同様に、書き込みがキャッシュにおいてミスした場合、キャッシュ内のあるデータを典型的にディスク・ドライブにディステージし、新たなデータをキャッシュに書き込むための余裕を作らなければならず、このため動作が遅くなる。
【００２２】
前述のことから、図１に示すようなキャッシュ記憶システムでは、キャッシュ１１においてヒットしたＩ／Ｏ動作（読み出しまたは書き込みのいずれか）は、ミスしたものよりも極めて速いデータ・アクセス時間を有することが認められよう。即ち、ホスト・コンピュータ１の観点から、記憶システム３に対するデータ・アクセス時間は、キャッシュにおいてヒットしたＩ／Ｏ動作の方が、ミスした場合よりも遥かに短い。アクセス時間の差は重大となる可能性がある。例えば、図１に示すようなキャッシュ記憶システムの一例は、ＭＡ，ＨｏｐｋｉｎｔｏｎのＥＭＣ Ｃｏｒｐｏｒａｔｉｏｎ（ＥＭＣ社）から入手可能なＳＹＭＭＥＴＲＩＸ型というディスク・アレイである。ＳＹＭＭＥＴＲＩＸ型ディスク・アレイは、通常、３ミリ秒（ｍｓ）ないし１２ｍｓの間のアクセス時間がかかり、この範囲の下端はキャッシュ・ヒットに対応し、上端はキャッシュ・ミスに対応する。したがって、ホスト・コンピュータ１から記憶システム３に送信されるＩ／Ｏ動作間には、３００％のアクセス時間差が生ずる可能性がある。
【００２３】
前述のことを念頭に入れると、特定の資源に対するアクセス時間は全てのＩ／Ｏ動作に対して同一であるとする仮定は常に正しい訳ではないことが認められよう。したがって、本発明の別の代替実施形態では、次のＩ／Ｏ動作にどのパスを利用すべきかの判定に用いられる選択基準は、各パスに整列されているＩ／Ｏ動作に対する予測データ・アクセス時間の分析を含む。尚、図１に示すようなキャッシュ記憶システムの説明は、単に例示の目的で行なうに過ぎず、アクセス時間が動作毎に変動するコンピュータ・システムの資源には多くの種類があるので、資源のアクセス時間の考慮に関する本発明の態様は、この種のコンピュータ・システムにもその他のいずれの種類のコンピュータ・システムにも限定されるのではないことは認められよう。
【００２４】
尚、多数のシステム・パスに整列されているいずれのＩ／Ｏ動作に対しても、データ・アクセス時間は、次のＩ／Ｏ動作を実行するために最も迅速なパスの選択に重大な影響を及ぼす可能性があることは認められよう。例えば、図４を参照すると、２つのパスＡおよびＢが示されており、パスＡはキャッシュ１１（図１）においてミスした１つのＩ／Ｏ動作４０を含み、パスＢは、各々キャッシュ１１においてヒットした、整列されている１対のＩ／Ｏ動作４１および４２を含む。パスＢに整列されているＩ／Ｏ動作の方が多いという事実にも拘らず、パスＡ上でのミス動作は、パスＢに整列されているＩ／Ｏ動作のいずれよりも、記憶システム３（図１）内部で動作するために、４倍長くかかるという事実から、ホスト・コンピュータ１と記憶システム３との間での送信のために整列される次のＩ／Ｏ動作を最も迅速に実行するためには、パスＢがより良い選択となり得る。したがって、本発明の図示した一実施形態によれば、多数のパスに整列されているＩ／Ｏ動作に対するアクセス時間を、次のＩ／Ｏ動作に対して最短のパスを選択する際に考慮に入れる。
【００２５】
先に論じたように、システム資源にアクセスするときにどのパスを用いるかという選択は、ホスト・コンピュータ１（例えば、プロセッサ１６上で実行するソフトウエアにおいて実現されるフィルタ・ドライバ）によって実行される。アプリケーションによっては、ホスト・コンピュータ１は、整列されている各Ｉ／Ｏ動作に対して正確にアクセス時間を決定する十分な情報を有していない場合もある。例えば、図１に示す例示のシステムでは、システム資源がキャッシュ記憶システムであり、ホスト・プロセッサ１は、いずれのデータＩ／Ｏ動作についても、キャッシュにおいてヒットするかまたはミスするか、確実に言うことはできない。しかしながら、ホスト・コンピュータ１は、履歴情報に基づいて、適度に精度が高い何らかの予測を行なうことができる。この点について、ホスト・コンピュータ１は、記憶システム３とのＩ／Ｏ動作の開始（ｉｎｉｔｉａｔｉｏｎ）を制御する。したがって、ホスト・コンピュータ１は、各Ｉ／Ｏ動作毎に処理時間を監視することができ、その完了時間に基づいて、動作がキャッシュにおいてヒットしたかまたはミスしたか判定することができる。このように、経時的に個々のアプリケーションについて、キャッシュにおいてヒットするＩ／Ｏ動作の数またはミスするＩ／Ｏ動作の数を予期し、その割合を決定することができる。加えて、本出願人は、殆ど全てのアプリケーションに対して、ホスト・コンピュータ１から記憶システム３への書き込みは、読み出しよりもキャッシュ１１内においてヒットする可能性が高いことを発見した。即ち、Ｉ／Ｏ動作がほぼ等しく読み出しおよび書き込みの間で分散されているアプリケーションでは、書き込みは時間の約９９％、キャッシュにおいてヒットすると仮定することができる。逆に、Ｉ／Ｏ動作が書き込み動作に対してより大きく重み付けされているアプリケーションでは、ヒット・レートは約７０％よりも低い）。読み出しに対するヒット数はさほど均一ではなく、アプリケーション毎に一層著しく変動する。また、本出願人は、ＳＹＭＭＥＴＲＩＸ型ディスク・アレイにおけるキャッシュ・ヒットでは、読み取りは書き込みよりも約３０％速いことを発見した。何故なら、キャッシュに対する書き込みは、キャッシュ置換方式を実現するために用いられる機構にロックをかけるからである。
【００２６】
前述のことを念頭に入れて、キャッシュ記憶システム３を含むコンピュータ・システムにおける使用に適合化した本発明の一実施形態では、次のＩ／Ｏ動作に対する最短パスの選択は、読み出しおよび書き込み間で各パスに対するＩ／Ｏ動作の割合の内訳の考慮、および読み出しおよび書き込み双方に対する特定のアプリケーションに推定したヒット率の考慮を含む。これらの選択基準は、単独で用いることができ、あるいは先に論じた別の選択基準の各々と共に考慮に入れることができる。前述のように、読み出しおよび書き込みの間およびキャッシュ・ヒットおよびミスの間のアクセス時間の差に関してここに含まれる具体的な論述は、単に例示の目的として提示するに過ぎない。何故なら、選択基準においてデータ・アクセス時間を考慮することに関する本発明の態様は、ホスト・コンピュータとキャッシュ記憶システムとの間の多数のパス上でアクティビティのバランスを取ることに限定される訳ではなく、別の種類のマルチパス・コンピュータ・システムにも使用可能であるからである。
【００２７】
本発明の更に別の実施形態では、あるアプリケーションに対する履歴データ・アクセス時間率とＩ／Ｏ動作の最新バッチとの間の不一致に基づいて、選択基準を調節することができる。例えば、アプリケーションが以前より約８０％の読み出しヒット率を含み、Ｉ／Ｏ動作の最新のバッチではキャッシュのヒットがわずか６０％である場合、ヒット・レートは８０％の履歴マークを越え、最近観察した低い６０％レートを補償するという期待から、選択アルゴリズムは、Ｉ／Ｏ動作の次のバッチに更に大きな重み付けをすることができる。勿論、アプリケーションが、かなりの期間にわたって履歴データ・アクセス時間率から逸脱する場合、ホスト・コンピュータ１はその履歴データベースを更新し、アプリケーションが動作している態様を一層正確に反映することができる。
【００２８】
前述のことから認められようが、本発明の種々の実施形態では、いくつかの選択基準を共に採用し、次のＩ／Ｏ動作に用いるパスを決定することができる。これは、多数の方法のいずれでも行なうことができ、本発明は、いずれの特定的な実現態様にも限定されない。例えば、ソフトウエア・エンティティを用いて選択機能を実行することができ、多数の判断ステップ（例えば、「ｉｆ，ｔｈｅｎ，ｅｌｓｅ」ステートメントを用いる）を実装して種々の選択基準のバランスを取ることができる。しかしながら、本発明の例示の一実施形態によれば、選択基準の各々に異なる重み係数を与える重み付けの数式を採用し、ソフトウエアで実現する場合に、パス選択プロセスを一層効率的に行なえるようにすることができる。
【００２９】
重み付けの数式を採用して選択基準を実装する技法の一例は、使用可能なパスの各々に重み係数Ｗを適用することである。次のＩ／Ｏ動作に対して選択するパスを決定する際、パスの重み係数の各々を考慮し、特定のＩ／Ｏ動作に対して最も低い重み係数を有するパスを選択する。各パス毎の重み係数は、先に論じた選択基準の１つ以上を用いて、多数の方法のいずれでも決定することができる。例えば、各パスの重み係数Ｗを決定する式の一例は次の通りである。
【００３０】
W = (icoeff x no_of_ios) + (wcoeff x no_of_write_blocks) +
(rcoeff x no_of_read_blocks)
ここで、ｉｃｏｅｆｆは、Ｉ／Ｏ動作に伴うオーバーヘッドに関する係数定数、ｗｃｏｅｆｆは、データ・ブロック毎の書き込み動作に関する係数定数、および、ｒｃｏｅｆｆは、データ・ブロック毎の読み出し動作に関する係数定数である。
【００３１】
尚、上述のような重み付けの数式を用いることによって、次のＩ／Ｏ動作に対する選択プロセスは計算上簡単になることは認められよう。何故なら、選択プロセスは、使用可能なパス各々の重み係数を比較すれば、最も低い重み係数Ｗを有するパスを選択できるからである。更に、先に論じた選択基準を、種々の重み係数ｉｃｏｅｆｆ、ｗｃｏｅｆｆおよびｒｃｏｅｆｆに対して与えた定数に組み入れ（ｆａｃｔｏｒ）可能であることも認められよう。例えば、通信パスの各々を実現するために用いられる特定の技術の処理能力に関する選択基準をこれらの係数に組み込むことができ、異なる技術を用いて実現したパス間で係数が異なるようにすることができる。加えて、キャッシュ・システムにおける予測ミスおよびヒット比率に関する要因も、読み取りおよび書き込み係数（それぞれ、ｒｃｏｅｆｆおよびｗｃｏｅｆｆ）に組み入れることができる。係数に対する特定の定数は、前述の選択基準のどれをその中に組み込むかだけでなく、特定のマルチパス・コンピュータ・システムの特定の処理能力特性にも依存する。例えば、読み出し対書き込み動作の相対的処理能力、およびキャッシュ・ミスに対して生ずる相対的な不利は、システム毎に大きく異なることは認められよう。したがって、係数に対する特定の値は広範囲に変動する可能性があり、本発明はいずれの特定の係数値にも限定されない。
【００３２】
本発明の別の実施形態では、特定のＩ／Ｏ動作に対する選択基準は、当該Ｉ／Ｏ動作によって目標とされるシステム資源内の装置（例えば、図１の記憶システム３における特定のディスク・ドライブ５ａ〜５ｂ）によって影響を受ける。本出願人は、同じ装置を目標とするＩ／Ｏ動作を多数のパスを通じて拡散させると、実際には、動作を並列に処理するときに通常期待される処理能力向上を達成するどころではなく、システムの処理能力を低下させることを発見して驚愕した。図１に示す例示のシステムを再度参照すると、ディスク・ドライブ５ａ〜５ｂの内特定の１つがパスＡ〜Ｄの１つを通じたＩ／Ｏ動作に関与する場合、このディスク・ドライブは当該特定のパスに対してロックされ、パスＡ〜Ｄの別の１つを通じて同じディスク・ドライブを目標とする他のＩ／Ｏ動作によって割り込まれずに、Ｉ／Ｏ動作を完了できるようにすることが認められよう。このような割込が生ずると、最初のＩ／Ｏ動作に関するデータの変転が生ずる虞れがある。ロック機能の結果、多数のパスの１つ（例えば、パスＢ）を通じたＩ／Ｏ動作は、異なるパス（例えば、パスＡ）を通じて同じディスク・ドライブを目標とする以前にＩ／Ｏ動作の完了まで、ディスク・ドライブの１つにアクセスすることはできない。したがって、パスＡ〜Ｄの１つから他に特定のディスク・ドライブに対するロックを移動させるには、時間的な不利が生ずる。この時間的な不利は、少なくとも部分的に、ロックの制御を取得しようとする多数のＩ／Ｏパスに対する調停時間に関係する。この調停時間は、ロックの制御を取得しようとするパスの数と共に増大する。本出願人は、ある数の並列動作では、異なるパス間でロックを移動するための時間は、異なるパスを通じた同じディスク・ドライブに対して同時に整列している多数のＩ／Ｏ動作によってもたらされるあらゆる利点を相殺し得ることを発見した。したがって、場合によっては、特定の装置を目標にするＩ／Ｏ動作を限られた数のパスに制限すると、たとえこれらのパスが他のＩ／Ｏ動作に用いられていても、効果的な場合もある。ＳＹＭＭＥＴＲＩＸ型ディスク・アレイでは、同じ装置を目標とするＩ／Ｏ動作を送るために用いられるパスの数を２または３つのパスに限定することによって、最適な処理能力が得られることがわかっている。尚、この選択基準は、Ｉ／Ｏ動作毎に異なる特定の特性（即ち、目標装置）に基づいており、１つのＩ／Ｏ動作に対して選択した最も迅速なパスが、異なるＩ／Ｏ動作に対して選択したパスとは異なる場合もあることは認められよう。
【００３３】
ＳＹＭＭＥＴＲＩＸ型ディスク・アレイは、ディスク・ドライブ５ａ〜５ｂの１つの内複数の部分をトラック・レベルで異なるパスにロックし、同じ装置内の異なるトラックを異なるパスにロックできるようにする機能を含む。これによって、装置は、同時に異なるパスから多数のＩ／Ｏ動作を受け入れることができ、先に論じたロック遅延の懸念もない。ＳＹＭＭＥＴＲＩＸのこの機能を用いると、８つよりも多いパスが１つの装置にＩ／Ｏ動作を送るために用いられるまで、同じ装置に向けられた多数のＩ／Ｏ動作に伴う収穫逓減（ｄｉｍｉｎｉｓｈｉｎｇ ｒｅｔｕｒｎ）は発生しない。
【００３４】
特定のパスに割り当てるときにＩ／Ｏ動作に対する目標装置を考慮することの別の利点は、特定の装置（例えば、ディスク・ドライブ５ａ〜５ｂの特定の１つ）を目標とするＩ／Ｏ動作の処理能力が目標装置自体の処理能力によって生来的に制限されるという事実に関する。したがって、一旦特定の装置を目標とする１組のＩ／Ｏ動作を多数のパス間で分散し、これら多数のパス全体に及ぶ帯域幅が目標装置自体のそれと等しくしても、パスＡ〜Ｄによる帯域幅の増大がシステムの処理能力向上をもたらすことは全くない。実際に、このようにすると、特定の目標装置に対するアクセスを待たなければならないＩ／Ｏ動作が増大し、多数のシステム・パスの一部を不必要に塞いでしまう虞れがある。例えば、ディスク・ドライブ５ａ〜５ｂの特定の１つに対して一連のＩ／Ｏ動作を実行し、パスＡ〜Ｄの内２つの使用がディスク・ドライブの帯域幅を得るのに十分である場合、Ｉ／Ｏ動作を４つのパスＡ〜Ｄ全てに分散しても、Ｉ／Ｏ動作の一部は、他が完了するまで、待たなければならない。これでは非効率である。何故なら、同じ装置を目標とするＩ／Ｏ動作の全てをパスの２つ（例えば、パスＡおよびＢ）に交互に整列させれば、他の２つのパスは異なる目標ディスク・ドライブに宛てられたＩ／Ｏ動作のために使用することができるからである。
【００３５】
前述のことを念頭に入れ、本発明の一実施形態は、特定のＩ／Ｏ動作を実行するために最も迅速なパスを選択する際、当該Ｉ／Ｏ動作に対する目標装置を考慮に入れている。尚、本発明のこの機能は、システム資源が先に明記したような記憶システムであるコンピュータ・システムとの使用に限定されないことは認められよう。むしろ、図１に示すコンピュータ・システムは、本発明のこの態様を採用可能なシステムの単なる一例に過ぎず、特定のＩ／Ｏ動作に対する目標装置を考慮に入れることは、他の種類のコンピュータ・システムにおいても有利であり得ることは理解されよう。先に論じた多数の別の選択基準の場合と同様、次のＩ／Ｏ動作に対する目標装置を考慮することに関連する本発明の実施形態は、単独でも、または先に論じた他の選択基準との組み合わせでも使用可能である。
【００３６】
特定のＩ／Ｏ動作に対する目標装置を考慮に入れる本発明の実施形態は、多数の方法のいずれでも実現することができ、本発明はいずれの特定の実現技術にも限定されない。本発明の例示の一実施形態によれば、特定の目標装置に関する選択基準は、パスの各々に適用される前述の重み係数Ｗと共に実施する。即ち、各目標装置には、いずれの一時点においても目標装置に保留中のＩ／Ｏ動作を供給するために使用すべきパスの数について限度を規定するスレシホルド数を設けることができる。この点について、保留中のＩ／Ｏ動作を宛てる目標装置の各々を識別する情報、およびこれらのＩ／Ｏ動作を送信するために選択されたパスを識別する情報を格納することができる。あるパスが次のＩ／Ｏ動作に選択された場合、前述の重み係数Ｗを用いて、重み係数が最も低いパスを選択することができる。その後、次のＩ／Ｏ動作の、選択したパスを通じての送信が、目標装置のスレシホルドを超過するか否かについて判定を行なうことができる。超過しない場合、このパスを選択する。重み係数Ｗが最も低いパスでは、目標装置にＩ／Ｏ動作を供給するために用いられるパスの数がスレシホルド数を超過する場合、次に最も低い重み係数を有するパスを選択する。このように、次のＩ／Ｏ動作に選択するパスは、目標装置に対するスレシホルド数に違反しないパスの中で、最も低い重み係数Ｗを有するパスとなる。
【００３７】
本発明の別の実施形態では、関連するアプリケーションの処理能力に対して重大なある種のＩ／Ｏ動作を優先する。即ち、従来のラウンド・ロビン技法は、資源をできるだけビジーに保持することによって、システム資源（例えば、図１における記憶システム３）の処理能力を最大限高めようとする。本出願人は、ホスト・コンピュータ１上で実行するアプリケーションによっては、あるＩ／Ｏ動作を優先することにより、当該アプリケーションの処理能力を最大限高められることを発見した。したがって、ある動作を優先することは、システム資源の稼働率（ｂｕｓｉｎｅｓｓ）を最大限高めることと同等またはそれ以上に重要であり得る。
【００３８】
動作を優先させることができる態様の一例は、電話の注文を受信する小売店が走らせる注文入力アプリケーションに関する。小売店にとって、目標はそのオペレータができるだけ素早く注文を取ることができ、これによって特定の期間内に小売店が処理できる注文数を最大限増やすことである。このような注文入力アプリケーションは、典型的に、図１に示すようなコンピュータ・システム上で走り、注文情報を、３つの構成要素、即ち、テーブル、インデックスおよびログを含むデータベースに格納する。注文入力アプリケーション用データベースの処理能力は、ログ更新の処理能力のみに基づく。即ち、データベースは、最初に、ログへのトランザクションをコミット（ｃｏｍｍｉｔ）し、次いでテーブルおよびインデックスを更新する。データベースの処理能力の観点からは、テーブルおよびインデックスが更新されていなくても、一旦ログが更新されたなら、トランザクションは完了する。したがって、本発明の一実施形態によれば、注文入力アプリケーションでは、全てのログ更新を優先する。これの一例を図５に示す。この場合、３つのＩ／Ｏ動作５０〜５２がパスＡ上に整列されており、テーブル空間の更新に関係する。ログ更新を表す１つのＩ／Ｏ動作５３がパスＢに整列され、ログ更新を表す１つのＩ／Ｏ動作５４がパスＣに整列され、パスＤは空である。次のＩ／Ｏ動作がログ更新である場合、この更新をパスＤに割り当て、これをできるだけ素早く完了することが好ましい。しかしながら、次のＩ／Ｏ動作がテーブル空間の更新である場合、そのＩ／Ｏ動作をパスＡに割り当て、パスＤを今後のログ更新のために開けておくこともできる。したがって、テーブル空間の更新を表すＩ／Ｏ動作では、あるパスにＩ／Ｏ動作を割り当てた結果最も素早く完了しない場合もあるが、これによってアプリケーション全体としての処理能力は最大となる。
【００３９】
尚、あるＩ／Ｏ動作を優先することに関係する本発明の実施形態は、先に論じた注文入力アプリケーションに限定される訳でなく、あるＩ／Ｏ動作が当該アプリケーション全体の処理能力にとって他よりも重大であるあらゆるアプリケーションとでも使用可能であることは認められよう。加えて、異なる種類のＩ／Ｏ動作に異なるレベルの優先順位を与えることができ、各々、多数のパスＡ〜Ｄの適切な１つを選択するプロセスにおいて考慮した異なる重み係数を受けることも認められよう。この選択基準は、個別に、または先に論じた１つ以上の選択基準と組み合わせて用いることも可能である。
【００４０】
前述の実施形態の場合と同様、優先順位方式を用いてある種のＩ／Ｏ動作を優先させるには、多数の方法のいずれでも実現可能であり、本発明はいずれの特定の実現態様にも限定されない。尚、多くのコンピュータ・システムでは、ある種のＩ／Ｏ動作は特定の目標装置（例えば、論理ボリューム）に宛てられることは認められよう。これは、本発明の例示の一実施形態による前述の優先順位方式を実現する際に考慮される。即ち、優先順位方式は、関連するアプリケーションの処理能力にとって重要であるＩ／Ｏ動作の目標であることがわかっている、ある目標装置を優先することによって、実現することができる。しかしながら、本発明はこの観点に限定される訳ではなく、本発明の優先化の態様は、Ｉ／Ｏ動作が宛てられる目標装置ではなく、優先順位を直接あるＩ／Ｏ動作に割り当てる他の方法でも実現可能であることは認められよう。
【００４１】
本発明の一実施形態では、優先順位方式は、前述の選択基準と共に実現することができ、その際、重み係数Ｗを計算するために用いる式を次のように修正する。
W = (icoeff x no_of_ios) + (wcoeff x no_of_wirte_blocks) +
(rcoeff x no_of_read_blocks) + (PW - (pcoeff x priority x
no_of_ios_of_this_device))
重み係数Ｗのための修正した式の基礎となる前提は、優先順位が高い目標装置に宛てられるＩ／Ｏ動作は、これらが送信されるパス上に人工的に高い負荷を置くように思わせることによって、その後に他の優先順位が低い目標装置に宛てられるＩ／Ｏ動作によって、これらのパスが選択されないようにするということにある。その結果、選択されたパス上の実際の負荷は減少し、これによって優先順位が高い目標装置に宛てられる追加のＩ／Ｏ動作の処理促進を容易にする。この点において、特定のパスに対する重み係数Ｗは、パスを選択するときに重み係数を試験する次のＩ／Ｏ動作全てによって、同じ値であると認められるのではない。むしろ、目標装置Ｎに宛てられる次のＩ／Ｏ動作に対する特定のパスの負荷を評価する場合、Ｎ以外の目標装置に宛てられるＩ／Ｏ動作によって当該パスに置かれる人工的な優先順位負荷を考慮するが、同じ目標装置Ｎに宛てられるＩ／Ｏ動作によってパス上に置かれる優先順位重みは考慮されない。
【００４２】
前述のことは、先に明記した式に示されており、「ＰＷ」は、全ての目標装置に宛てられるＩ／Ｏ動作によってパスに置かれる全優先順位重みに対応し、「ｐｃｏｅｆｆ」は、特定の目標装置に関連する優先順位値に与えられるべき重みに算入される優先順位係数であり、「ｐｒｉｏｒｉｔｙ」は、重み係数を評価する次のＩ／Ｏ動作の主題である目標装置に割り当てられる優先順位値であり、「no#of#ios#of#this#device」は、重み係数Ｗを評価している次のＩ／Ｏ動作と同じ目標装置Ｎに宛てられる、考慮対象のパス上で保留中のＩ／Ｏ動作の数である。したがって、項ＰＷは、全ての優先されるＩ／Ｏ動作によってパス上に置かれた全人工的負荷の総和を表し、先に明記した式においてそれから減算される挿入（ｐａｒｅｎｔｈｅｔｉｃａｌ）は、重み係数Ｗを評価する次のＩ／Ｏ動作の主題である目標装置Ｎによってのみパスに置かれた人工的負荷の部分に関係する。
【００４３】
前述のことから認められようが、特定のパス上にいくつかの高優先順位Ｉ／Ｏ動作が保留となっている場合、当該パスに対する値ＰＷは高くなる。優先順位が低い目標装置に宛てられる次のＩ／Ｏ動作に対して、先に明記した式において値ＰＷに続く挿入は低い（例えば０）ので、高いＰＷ値から減算されるのは、たとえあるとしても僅かである。したがって、ＰＷ値が大きいと、優先順位が低い目標装置に宛てられる次のＩ／Ｏ動作によって認められる重み係数Ｗは大きくなる。その結果、次のＩ／Ｏ動作が他のパス上でより低い重み係数Ｗを見つけ、したがって優先順位が低い装置に宛てられた次のＩ／Ｏ動作を送信するために異なるパスを選択する可能性が高くなる。逆に、次のＩ／Ｏ動作が、特定のパスに対して保留中になっているＩ／Ｏ動作と同じ優先順位が高い目標装置に宛てられている場合、先に明記した式においてＰＷから減算される挿入値は大きくなり、全ＰＷ値と等しくなる場合もある。その結果、重み係数Ｗに加算される人工的な負荷（優先度が高いＩ／Ｏ動作によって認められる）は、小さいかまたは存在しない。優先順位が低い装置に宛てられたＩ／Ｏ動作は優先順位が高いＩ／Ｏ動作によってその上に置かれる人工的な負荷によって、このパスから離されるので、パス上の実際の負荷も小さくなる結果、優先順位が高い目標装置に宛てられる次のＩ／Ｏ動作が、重み係数Ｗを小さいと認める可能性が高い。その結果、次のＩ／Ｏ動作は、この低いトラフィック・パスに送られ、迅速に処理される。
【００４４】
前述のように、本発明の優先順位付けの態様は、多数の方法で実現可能であり、本発明は前述の態様で人工的負荷を与えることに限定される訳ではないことは認められよう。
本発明の一実施形態では、多数のパス間でアクティビティのバランスを取るために用いられる選択基準は、ホスト・コンピュータ１の管理者によって選択することができる。この選択は、先に論じた異なる選択基準のいずれからでも選択可能であり、ラウンド・ロビン、最少動作のパス選択、最少データ・ブロックのパス選択、または最適化ルーチンを含み、本発明の前述の機能の各々に重み付けし、最適な選択アルゴリズムを達成するという利点がある。先に論じたように、本発明の種々の態様は、その使用や、このような最適化した様式に限定される訳ではなく、更に、これらの選択基準を共に重み付けした場合、本発明はいずれの特定の重み係数にも限定されないことも認められよう。
【００４５】
尚、以前に割り当てられ送信のために整列されているＩ／Ｏ動作の状態に基づいてパスを選択することに関する本発明の前述の実施形態の各々は、単純にホスト・コンピュータ１において実現することができ、更に、本発明はいかなる特定の実現の態様にも限定されないことは認められよう。例えば、殆どのコンピュータ・システムにおいて、プロセッサ１６は、ホスト・バス・アダプタ１５間でＩ／Ｏ動作を分散する役割を担うフィルタ・ドライバを含む。フィルタ・ドライバは、単にホスト・バス・アダプタ１５の各々に問い合わせて、各々に整列されているＩ／Ｏ動作のステータスを判定することができ、前述の選択基準のいずれかを満たすパスに次のＩ／Ｏ動作を分配することができる。フィルタ・ドライバは、ソフトウエア・プログラムとして実現し、コンピュータ読み取り可能媒体上に格納し、プロセッサ１６上で実行することができる。この点について、本発明の一実施態様は、コンピュータ・プログラムをエンコードされ、プロセッサ上で実行されると、本発明の先に論じた機能を実行するコンピュータ読み取り可能媒体（例えば、コンピュータ・メモリ、フロッピ・ディスク、コンパクト・ディスク、テープ等）から成ることが認められよう。コンピュータ読み取り可能媒体は、輸送可能であり、その上に格納されているプログラムをコンピュータ・システム上にロードし、先に論じた本発明の態様を実現することができる。加えて、実行すると先に論じた機能を実行するコンピュータ・プログラムに対する言及は、ホスト・コンピュータ上のアプリケーション空間において走るアプリケーション・プログラムに限定される訳ではないことも認められよう。むしろ、コンピュータ・プログラムという用語は、ここでは、先に論じた本発明の態様を実現するためにプロセッサをプログラムする際に使用可能なあらゆる種類のコンピュータ・コード（例えば、ソフトウエアまたはマイクロコード）に言及する、汎用的な意味で用いられている。あるいは、フィルタ・ドライバに、それ自体の専用プロセッサを設け、ソフトウエア・プログラムを実行して前述のパス選択機能を実行することも可能であり、あるいは専用ハードウエアを設けてこの機能を実行することも可能である。
【００４６】
前述の本発明の実施形態の各々では、本発明の態様は、ホスト・コンピュータと１つの記憶システムとの間にある多数のパス間でワークロードのバランスを取るために用いられている。尚、コンピュータ・システムの中には、２つ以上の記憶システムに結合されたホスト・コンピュータで実現され、ホスト・コンピュータと記憶システムの各々との間に１つまたは多数のパスが延びているという構成も可能であることは認められよう。尚、本発明の前述の態様は、異なる記憶システムに至るパス間においてワークロードのバランスを取るためにも用いられることも認められよう。このようなコンピュータ・システムは、ＭＥＴＨＯＤ ＡＮＤ ＡＰＰＡＲＡＴＵＳ ＦＯＲ ＭＡＮＡＧＩＮＧ ＤＡＴＡ ＳＴＯＲＥＤ ＩＮ Ａ ＳＴＯＲＡＧＥ ＳＹＳＴＥＭ ＴＯ ＡＣＨＩＥＶＥ ＩＭＰＲＯＶＥＤ ＳＹＳＴＥＭ ＰＥＲＦＯＭＡＮＣＥ（システムの処理能力向上を図るために記憶システムに格納されているデータを管理する方法および装置）と題し、１９９８年１２月３０日に出願され、少なくとも一人の出願人を本願と共有する関連出願に記載されている。その内容は、この言及により本願にも含まれるものとする。このように、ホスト・コンピュータおよびシステム資源を含むマルチパス・コンピュータ・システムにおける少なくとも２つのパス間でＩ／Ｏ動作を分散する方法に関する本発明の前述の態様は、システム資源が複数の記憶システムを含み、各々が少なくとも１つの通信パスを通じてホスト・コンピュータに結合されている場合に実現することができる。
【００４７】
先に論じたように、本発明のいくつかの実施形態は、次のＩ／Ｏ動作の送信のためにパスを選択するときに、既に割り当てられているＩ／Ｏ動作に関する情報を用いる。前述の実施形態の各々では、以前に割り当てたＩ／Ｏ動作に関して用いられる情報は、ホスト・コンピュータによってのみ提供された。この点について、ホスト・コンピュータは、記憶システムに送信するあらゆるＩ／Ｏ動作に関係する情報を収集し（例えば、フィルタ・ドライバに）格納することができる。各Ｉ／Ｏ動作毎にホスト・コンピュータに知られている情報の種類の例は、以下を含む。（１）Ｉ／Ｏ動作の種類（例えば、読み出しまたは書き込み）、（２）Ｉ／Ｏ動作を発したアプリケーション、（３）Ｉ／Ｏ動作のサイズ、（４）Ｉ／Ｏ動作が関係するアプリケーション空間における論理オブジェクト（例えば、ファイル名）、（５）Ｉ／Ｏ動作が目標とする特定の論理ボリューム、（６）Ｉ／Ｏ動作を送信するために用いられる特定の通信パス、（７）あらゆる特定のパスに整列されているＩ／Ｏ動作の数、（８）特定のパスにＩ／Ｏ動作を送る異なるプロセスまたはアプリケーションの数、（９）特定のパスに送信されるＩ／Ｏ動作の種類およびサイズ、および（１０）特定の種類のＩ／Ｏ動作、特定のパス、および特定の目標論理ボリュームに対する平均応答時間。
【００４８】
ホスト・コンピュータ１の観点から収集することができる統計および情報は非常に有効であり、前述のように用いることができて有利であるが、記憶システム３が図１に示すようなインテリジェント記憶システムである場合、ホスト・コンピュータ１の視野では、コンピュータ・システムの処理能力に関する全体像が解明されないことが認められよう。インテリジェント記憶システムは、ホスト・コンピュータ１を介してアクセス可能なデータが最終的に格納される位置を制御する。したがって、あらゆるデータ・ブロックが実際に格納される正確な物理的位置（即ち、ディスク・ドライブ５ａ〜５ｂの内のどれ、そして当該ディスク・ドライブ上の位置）は、ホスト・コンピュータには透過的である。この点に関して、図１に示すようなコンピュータ・システムは、典型的に、図６に示すように、複数のレイヤを含む。
【００４９】
レイヤは、ホスト・コンピュータ１上に常駐し、アプリケーションによって用いられるデータ・オブジェクト（例えば、ファイル）を参照するアプリケーション・レイヤ６１を含む。加えて、ホスト・コンピュータ１は、アプリケーション・レイヤ６１によって指定された各データ・オブジェクトを、ホスト・コンピュータ１が、データ・オブジェクトが格納されている実際の物理記憶装置に対応すると認める特定の論理ボリュームにマップするファイル・システムおよび／または論理ボリューム・マネージャ・レイヤ６３も含む。したがって、コンピュータ・システムが、インテリジェンスの全くない記憶システムを含む場合、ファイル・システム／ＬＶＭレイヤ６３によって指定される論理ボリュームは、特定の物理装置、およびデータ・オブジェクトを格納する特定の記憶位置を指定する。最後に、コンピュータ・システムは、更に記憶システム・マッピング・レイヤ６５を含む。これは、記憶システム上に常駐し、レイヤ６３から与えられる論理ボリュームから、ディスク・ドライブ５ａ〜５ｂの少なくとも１つ、および論理ボリュームが格納されている当該ディスク・ドライブ上の物理位置を含む、実際の物理位置にマップする。論理ボリュームと物理ディスク・ドライブとの間のマッピングは１：１でなくてもよい。何故なら、１つの論理ボリュームを多数の物理ディスク・ドライブ５ａ〜５ｂ全体に分割することができ、あるいは多数の論理ボリュームを同じ物理ディスク・ドライブ上に格納することができるからである。
【００５０】
尚、図３に示すようなインテリジェント記憶システムは、ホスト・コンピュータ１から記憶システム３に送信されるＩ／Ｏ動作に関する統計のログを作成する能力も有することは認められよう。記憶システム３内にログすることができる形式の情報の例は、（１）各Ｉ／Ｏ動作を送ったパス、（２）Ｉ／Ｏ動作によって目標とされた実際の物理記憶装置（例えば、ディスク・ドライブ５ａ〜５ｂ）、（３）Ｉ／Ｏ動作の種類（例えば、読み出しまたは書き込み）、および（４）Ｉ／Ｏ動作がキャッシュ１１内でヒットしたかまたはミスしたかを含む。尚、この情報の一部はホスト・コンピュータ１には入手できないことは認められよう。例えば、ホスト・コンピュータ１は、目標とされた論理ボリュームが格納されている実際の物理記憶装置に関する情報を有していない。同様に、ホスト・コンピュータ１が、記憶システムの応答時間に基づいて、特定のＩ／Ｏ動作がキャッシュ１１内においてヒットしたかまたはミスしたかに関して、学習し予測することはできるが、ヒットまたはミスのどちらが発生したか確実に知っているのは、記憶システム３だけである。
【００５１】
記憶システム３によって収集可能な統計は、エリアによっては、ホスト・コンピュータ１によって収集可能な統計よりも詳細であるが、これらも他のエリアでは不足している。この点に関して、記憶システム３は、典型的に、アプリケーション・レイヤ６１（図６）においてＩ／Ｏ動作のソースに関する情報を有していないことが認められよう。したがって、記憶システム３は、それ自体とホスト・コンピュータ１との間におけるＩ／Ｏ動作の生の処理能力を分析するのに有用な多数の統計を蓄積することができるが、記憶システム３は、通常、ホスト・コンピュータ１上で実行するアプリケーションの処理能力に対する、あるＩ／Ｏ動作の影響を直接判定することはできない。
【００５２】
前述のことから認められるように、ホスト・コンピュータ１または記憶システム３のみに関する処理能力統計を維持しても、ホスト・コンピュータ１上で走るアプリケーションを実行する際に、コンピュータ・システム全体の処理能力を分析するのに有効な完全な処理能力の像は得られない。したがって、本発明の例示の一実施形態によれば、ホスト・コンピュータ１に入手可能な情報を、記憶システム３に入手可能な情報と組み合わせ、コンピュータ・システムの処理能力に関して完成度を高めた像を提供する１組の情報を作成するロギング・ファシリティ（ｌｏｇｇｉｎｇ ｆａｃｉｌｉｔｙ）を設けている。これは、多数の方法のいずれでも行なうことができる。例えば、本発明の一実施形態では、Ｉ／Ｏ動作を記憶システム３に送ることに加えて、ホスト・コンピュータ１は、記憶システム３内のロギング・ファシリティに格納するために、Ｉ／Ｏ動作に関する情報も送信する。この情報およびＩ／Ｏ動作間の相関は、各Ｉ／Ｏ動作およびその対応する情報を一意に識別するＩ／Ｏタグを与えることによる等、多数の方法のいずれでも得ることができる。次に、ホスト・コンピュータ１によって提供される情報は、記憶システム３がそれ自体でＩ／Ｏ動作に関して発生可能な追加情報とインターリーブすることによって、Ｉ／Ｏ動作に関する終端間（ｅｎｄ−ｔｏ−ｅｎｄ）の統計情報全てを提供することができる。次いで、統計ログを発生し、記憶システム３に格納することができ、多数の方法のいずれでも用いることができる。あるいは、本発明のこの態様は、記憶システム３からホスト・コンピュータ１に、各Ｉ／Ｏ動作に関する情報を送信することによって、逆に実現することも可能であることが認められよう。しかしながら、この実現の方が好ましくない。何故なら、記憶システム３における方が大きな記憶空間が使用可能であり、相当なサイズに成長する可能性がある統計ログを格納する候補としては、こちらの方がよいからである。
【００５３】
統計ログの作成に関する本発明の態様は、多数の方法のいずれでも使用可能である。本発明の一実施形態では、このようなログを単純に機械的な分析に用い、コンピュータ・システム全体の処理能力に関して、従来のロギング技法を用いて得ることができるよりも良い像をシステム管理者またはシステム開発者に与えることができる。従来のロギング技法では、前述のような全体像を与えることはできない。例えば、本発明の一態様に関連付けて先に論じたように、アプリケーションによっては、あるＩ／Ｏ動作を優先することの方が、記憶システム３またはその他のシステム資源の稼働率を最大限高めることよりも重要である可能性がある。したがって、資源の処理能力のみに的を絞った従来のロギング技法では、限られた使用が可能であるに過ぎず、ホスト・コンピュータ１上で走るアプリケーションの処理能力に関する有意な情報を提供することができないために、誤った方向に導く可能性さえある。
【００５４】
ロギング・サブシステムの別の用法として、前述の本発明の負荷のバランスを取る態様を実施する際の補助があげられる。ホスト・コンピュータ１上で走るアプリケーションの振る舞いのより良い全体像を与えることによって、本発明のロギング・サブシステムは、Ｉ／Ｏ動作を多数のパス間で分散しアプリケーションの処理能力を最大限高める場合に、一層インテリジェントな判断を行なうことを可能にする。例えば、ロギング・サブシステムは、アプリケーション全体の処理能力にとって重要であり、前述のように優先すべき特定のＩ／Ｏ動作を識別する際に役立つことができる。勿論、ロギング・サブシステムのその他の用法も、前述の本発明の負荷のバランスを取る態様によって可能であることは明白である。したがって、機械的な処理能力の分析に対して統計的情報を提供することに加えて、本発明のロギング・サブシステムの態様は、ホスト・コンピュータおよび記憶サブシステム３によって資源として用いることができ、その上で走っている意思決定プロセス（例えば、本発明の負荷のバランスを取る態様）が、より良いシステム処理能力を達成するために判断を下す際に、ロギング・サブシステム内に含まれる情報を用いることができるようにする。このようなロギング・サブシステムの使用は、システム管理者の仲介なく、自動的に実行することができる。
【００５５】
先に論じた図示の例では、多数のパス間でワークロードのバランスを取ることに関する本発明の実施形態について、図１に示したホスト・コンピュータとインテリジェント・ディスク・ドライブ・アレイ記憶システム３との間に延びる多数のパスに関連付けて説明した。しかしながら、本発明はこの点に限定される訳ではなく、本発明の負荷のバランスを取る態様は、他の種類の記憶システム（例えば、非インテリジェント記憶システム、テープ・ドライブ記憶システム等）、更に他の種類のコンピュータ・システム資源に対してワークロードのバランスを取ることに関連して用いることも可能であることは認められよう。この点について、本発明の負荷のバランスを取る態様は、コンピュータ・システムのいずれの２構成要素間にある多数のパス上でもワークロードのバランスを取るために用いることができる。
【００５６】
以上、本発明の実施形態をいくつか詳細に説明したが、種々の変更や改良も当業者には容易に想起されよう。このような変更や改良は、本発明の精神および範囲内に該当するものと見なす。したがって、前述の説明は一例に過ぎず、限定として意図するのではない。本発明は、以下の特許請求の範囲およびその均等物によってのみ定義されることとする。
【図面の簡単な説明】
【００５７】
【図１】本発明の態様を実現可能な、マルチパス計算機システムの一例のブロック図である。
【図２】各々異なる数の整列入出力（Ｉ／Ｏ）動作を有する、複数のパスの構成図である。
【図３】異なる数のデータ・ブロックを有する整列Ｉ／Ｏ動作を含む１対のパスの構成図である。
【図４】キャッシュ・システムにおいてミスまたはヒットとなるＩ／Ｏ動作を含む１対のパスの構成図である。
【図５】ある種のＩ／Ｏ動作を優先するマルチ・パス・システムの構成図である。
【図６】図１に開示したような、公知の計算機システム内に存在する多数のマッピング・レイヤの構成図である。
【図１】
2006351030.tif 000003
【図２】
2006351030.tif 000004
【図３】
2006351030.tif 000005
【図４】
2006351030.tif 000006
【図５】
2006351030.tif 000007
【図６】
2006351030.tif 000008