(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-31
(45)【発行日】2024-11-11
(54)【発明の名称】ストレージ・システム内の選択されたボリュームのキャッシュ・ヒット率の改善方法、システム、プログラム
(51)【国際特許分類】
G06F 3/06 20060101AFI20241101BHJP
G06F 12/0866 20160101ALI20241101BHJP
G06F 12/126 20160101ALI20241101BHJP
G06F 13/10 20060101ALI20241101BHJP
【FI】
G06F3/06 302A
G06F3/06 301P
G06F3/06 301Z
G06F12/0866 100
G06F12/126
G06F13/10 340B
(21)【出願番号】P 2021567777
(86)(22)【出願日】2020-04-28
(86)【国際出願番号】 IB2020053990
(87)【国際公開番号】W WO2020229921
(87)【国際公開日】2020-11-19
【審査請求日】2022-09-22
(32)【優先日】2019-05-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】グプタ、ローケーシュ、モハン
(72)【発明者】
【氏名】ピーターソン、ベス、アン
(72)【発明者】
【氏名】アシュ、ケヴィン
(72)【発明者】
【氏名】アンダーソン、カイラー
【審査官】北村 学
(56)【参考文献】
【文献】特開平11-338775(JP,A)
【文献】特開2002-149492(JP,A)
【文献】特開2002-324000(JP,A)
【文献】米国特許出願公開第2009/0055595(US,A1)
【文献】米国特許出願公開第2018/0275884(US,A1)
【文献】国際公開第2015/145762(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 3/06 - 3/08
G06F 12/00 - 12/128
G06F 13/10 - 13/14
(57)【特許請求の範囲】
【請求項1】
プロセッサと、前記プロセッサに動作可能に結合されているメモリ・デバイスを有するシステムにおいて、同期I/Oの使用時の選択されたボリュームのキャッシュ・ヒット率を改善するための方法であって、前記方法が、
キャッシュにおいて、非優先ストレージ・エリアからの非優先ストレージ要素の第1の組を確立することと、
前記キャッシュにおいて、優先ストレージ・エリアからの優先ストレージ要素の第2の組を確立することと、
前記非優先ストレージ要素が前記キャッシュ中に存在することになる推定寿命を計算し、前記推定寿命にレジデンシ乗数N(ここでN≧2)を乗じて、前記優先ストレージ要素が前記キャッシュに存在するレジデンシ時間を決定することと、
前記非優先ストレージ要素の第1の組を第1のLRUリストに記録し、前記優先ストレージ要素の第2の組を第2のLRUリストに記録することであって、
前記第2のLRUリスト中の最も古い優先ストレージ要素のレジデンシ時間が、前記非優先ストレージ要素の推定寿命よりも大きい場合、前記第2の
LRUリスト中の最も古い優先ストレージ要素をキャッシュからエビクトし、
前記第2のLRUリスト中の最も古い優先ストレージ要素のレジデンシ時間が、前記非優先ストレージ要素の推定寿命よりも小さい場合には、前記第1のLRUリスト中の最も古い非優先ストレージ要素をキャッシュからエビクトすることと、
同期I/Oプロセスを介して、前記優先ストレージ要素にアクセスすることと、
非同期I/Oプロセスを介して、前記非優先ストレージ要素にアクセスすること
を含む、方法。
【請求項2】
前記レジデンシ乗数
Nは、前記優先ストレージ・エリア
からの優先ストレージ要素が前記キャッシュ中に存在する時間を、前記非優先ストレージ・エリアからの非優先ストレージ要素が前記キャッシュ中に存在する時間で除算した値であり、前記値が2未満は2として計算される、請求項1に記載の方法。
【請求項3】
前記非優先ストレージ・エリアは非優先ボリュームであり、前記優先ストレージ・エリアは優先ボリュームである、請求項1に記載の方法。
【請求項4】
前記優先ストレージ要素
を非優先ストレージ要素よりもキャッシュ中に長く存在させる、請求項1に記載の方法。
【請求項5】
前記推定寿命を計算することは、前記第1の組中の最も過去に使用された非優先ストレージ要素のタイムスタンプを、前記第1の組中の直近に使用された非優先ストレージ要素のタイムスタンプから減算することを含む、請求項1に記載の方法。
【請求項6】
前記非優先ストレージ要素の第1の組は第1のLRUリストにおいてドキュメント化され、前記優先ストレージ要素の第2の組は第2のLRUリストにおいてドキュメント化される、請求項1に記載の方法。
【請求項7】
前記非優先ストレージ・エリアまたは優先ストレージ・エリアあるいはその両方は、オンライン・コマンドおよび構成ファイルの少なくとも一方を使用して確立される、請求項1に記載の方法。
【請求項8】
請求項1~7の何れか1項に記載の方法をコンピュータに実行させる、コンピュータ・プログラム。
【請求項9】
請求項8に記載の前記コンピュータ・プログラムを記録した、コンピュータ可読記憶媒体。
【請求項10】
同期I/Oの使用時の選択されたボリュームのキャッシュ・ヒット率を改善するためのシステムであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサ上で実行される命令を保存している、前記少なくとも1つのプロセッサに動作可能に結合されている少なくとも1つのメモリ・デバイスと
を備え、前記命令は前記少なくとも1つのプロセッサに、
キャッシュにおいて、非優先ストレージ・エリアからの非優先ストレージ要素の第1の組を確立することと、
前記キャッシュにおいて、優先ストレージ・エリアからの優先ストレージ要素の第2の組を確立することと、
前記非優先ストレージ要素が前記キャッシュ中に存在することになる推定寿命を計算し、前記推定寿命にレジデンシ乗数N(ここでN≧2)を乗じて、前記優先ストレージ要素が前記キャッシュに存在するレジデンシ時間を決定することと、
前記非優先ストレージ要素の第1の組を第1のLRUリストに記録し、前記優先ストレージ要素の第2の組を第2のLRUリストに記録することであって、
前記第2のLRUリスト中の最も古い優先ストレージ要素のレジデンシ時間が、前記非優先ストレージ要素の推定寿命よりも大きい場合、前記第2の
LRUリスト中の最も古い優先ストレージ要素をキャッシュからエビクトし、
前記第2のLRUリスト中の最も古い優先ストレージ要素のレジデンシ時間が、前記非優先ストレージ要素の推定寿命よりも小さい場合には、前記第1のLRUリスト中の最も古い非優先ストレージ要素をキャッシュからエビクトすることと、
同期I/Oプロセスを介して、前記優先ストレージ要素にアクセスすることと、
非同期I/Oプロセスを介して、前記非優先ストレージ要素にアクセスすること
を行わせる、システム。
【請求項11】
前記レジデンシ乗数
Nは、前記優先ストレージ・エリア
からの優先ストレージ要素が前記キャッシュ中に存在する時間を、前記非優先ストレージ・エリアからの非優先ストレージ要素が前記キャッシュ中に存在する時間で除算した値であり、前記値が2未満は2として計算される、請求項10に記載のシステム。
【請求項12】
前記非優先ストレージ・エリアは非優先ボリュームであり、前記優先ストレージ・エリアは優先ボリュームである、請求項10に記載のシステム。
【請求項13】
前記優先ストレージ要素
を非優先ストレージ要素よりもキャッシュ中に長く存在させる、請求項10に記載のシステム。
【請求項14】
前記推定寿命を計算することは、前記第1の組中の最も過去に使用された非優先ストレージ要素のタイムスタンプを、前記第1の組中の直近に使用された非優先ストレージ要素のタイムスタンプから減算することを含む、請求項10に記載のシステム。
【請求項15】
前記非優先ストレージ要素の第1の組は第1のLRUリストにおいてドキュメント化され、前記優先ストレージ要素の第2の組は第2のLRUリストにおいてドキュメント化される、請求項10に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ・システム内の選択されたボリュームのキャッシュ・ヒット率を高めるためのシステムおよび方法に関する。
【背景技術】
【0002】
アプリケーションによってI/Oリクエストが実行されるとき、そのリクエストを完了するためにいくつかのプロセスが実行され得る。これらのプロセスは、アプリケーション応答時間のかなりの部分となり得るI/Oレイテンシに影響する。zHyperLinkは、ホスト・システムとストレージ・システムの間に高速で信頼性の高い直接の通信経路を提供することによって、I/Oレイテンシを低減するように設計された技術である。このことは、z/OSホスト・システムおよびストレージ・システムにzHyperLinkアダプタをインストールすること、ならびに、zHyperLinkケーブルを使用して構成要素を1つに接続することによって、達成される。この構成はホスト・システムとストレージ・システムの間のポイント・ツー・ポイントの接続を作り出し、これによりI/O応答時間がz High-Performance FICON(R)(zHPF)と比較して最低で10分の1まで低減される。そのような短い応答時間は同期I/Oリクエストを使用することによって達成され、これにより、I/O割り込み動作およびz/OSディスパッチ動作などのいくつかの機能のために必要な時間の量が低減される。
【0003】
zHPFなどの技術を使用して利用可能な標準的なI/O処理では、I/O動作が、z/OSディスパッチング、割り込み操作、CPUキューイング、およびL1/L2プロセッサ・キャッシュ・リローディングなどの、一連の時間のかかるタスクを実行する必要がある。これらのタスクおよびI/O処理に必要な他のタスクによって、I/O応答時間が、130マイクロ秒超の応答時間に割り込み操作およびCPUディスパッチの時間を加えたものとなり、仮想ストレージ内でのデータの転送と比較して比較的長くなる可能性がある。
【0004】
一般にzHyperLinkまたは同期I/Oを使用すると、同期I/O動作が行われるとき、ホスト・システム上のCPUは、I/Oが完了するかまたはタイムアウト値に達するまで待機または「スピン」する。zHyperLinkはI/Oを完了するために必要な時間を大きく低減し得るが、その理由は、ディスパッチ、割り込み操作、CPUキュー時間、およびCPUキャッシュ・リロードの動作がもはや必要なくなるからである。このことにより、通常のI/O動作に含まれる2つのコンテキスト・スワップ、スレッドをスリープにしその後それを再ディスパッチすること、およびI/O割り込みを実行することと関連付けられたプロセッサ時間が節減される。
【0005】
同期I/O(例えば、zHyperLink)と関連付けられたI/O応答時間の改善を達成するためには、I/Oを処理するために使用されるコード経路を高度に最適化する必要がある。キャッシュ・ミスなどの同期I/O動作を遅延させるいかなる状態によっても、ホスト・システムに通知が返され、zHPFなどのより遅い通信経路を使用して動作がリトライされる可能性がある。同期I/Oが成功するのは、マイクロコードが10~30マイクロ秒などの非常に少ない量の時間で同期I/O動作を完了できるときのみである。その量の時間で同期I/O動作を完了できない場合、それが失敗する可能性があり、ホスト・システムがFICONなどの最適ではない経路を介して動作をリトライする必要のある場合がある。
【0006】
上記を考慮すると、必要とされているのは、zHyperLinkなどの同期I/O技術の使用時の、選択されたボリュームのキャッシュ・ヒット率を改善するためのシステムおよび方法である。そのようなシステムおよび方法は、同期I/O動作の実行を妨げる可能性がある遅延を理想的に低減または防止するものである。
【発明の概要】
【0007】
本発明は、現状の技術に応じて、特に現在利用できるシステムおよび方法ではまだ完全には解決されていない当技術分野の課題および必要に応じて、開発された。これを受けて、システムおよび方法は、同期I/Oプロセスの使用時の選択されたボリュームのキャッシュ・ヒット率を改善するように開発されている。本発明の特徴および利点は、以下の説明および添付された特許請求の範囲からより十分に明らかになるであろうし、または、以下に記載するような本発明の実施によって理解され得る。
【0008】
上記に従って、同期I/Oの使用時の選択されたボリュームのキャッシュ・ヒット率を改善するための方法が開示される。一実施形態では、そのような方法は、キャッシュにおいて、非優先ストレージ・エリアからの非優先ストレージ要素の第1の組を確立することを含む。方法は更に、キャッシュにおいて、優先ストレージ・エリアからの優先ストレージ要素の第2の組を確立する。方法は、非優先ストレージ要素がエビクション(退去:eviction)の前にキャッシュ中に存在することになる推定寿命(life expectancy)を計算する。方法は更に、キャッシュに関するエビクション・ポリシーを実行し、優先ストレージ要素が非優先ストレージ要素の推定寿命の少なくとも数倍の間キャッシュ中に維持される。特定の実施形態では、方法は、第1の組中の最も過去に使用された非優先ストレージ要素のタイムスタンプを、第1の組中の直近に使用された非優先ストレージ要素のタイムスタンプから減算することによって、推定寿命を計算する。開示される方法によって、優先ストレージ・エリアへのアクセス時に、同期I/O(例えば、zHyperLink)プロセスの動作を損ない得る遅延が低減または防止される。
【0009】
本明細書において、対応するシステムおよびコンピュータ・プログラム製品もまた開示され、特許請求される。
【0010】
本発明の利点が容易に理解されるように、添付された図面に図示されている特定の実施形態を参照して、上で簡潔に記載した本発明のより具体的な説明を行うことができる。これらの図面は本発明の典型的な実施形態を描いているに過ぎず、したがってその範囲を限定するものではないと理解した上で、本発明の実施形態について、以下の添付の図面の使用を通して、更に具体的かつ詳細に記載し説明する。
【図面の簡単な説明】
【0011】
【
図1】本発明に係るシステムおよび方法が実装されるネットワーク環境の一例を示す、高レベルのブロック図である。
【
図2】
図1のネットワーク環境で使用されるストレージ・システムの一例を示す、高レベルのブロック図である。
【
図3】ホスト・システムとストレージ・システムの間の異なる通信経路を示す高レベルのブロック図である。
【
図4】同期I/Oの使用時の選択されたボリュームのキャッシュ・ヒット率を改善するためのシステムを示す、高レベルのブロック図である。
【
図5】本発明に係る最適化モジュール内の様々な例示的なサブ・モジュールを示す、高レベルのブロック図である。
【
図6】優先ストレージ要素を選好(preference)しながらキャッシュ中のスペースを解放するためにキャッシュからストレージ要素をエビクトする(evict)ための方法の一実施形態を示すフロー図である。
【
図7】どのボリュームを優先および非優先として扱うべきかを指定するために、コマンドまたはリストあるいはその両方をストレージ・システムに送るホスト・システムを示す、高レベルのブロック図である。
【
図8】優先ストレージ要素を選好しながらキャッシュ中のスペースを解放するためにキャッシュからストレージ要素をエビクトするための代替の方法を示すフロー図である。
【
図9】どの程度の強さのキャッシュ選好を優先ボリュームに適用すべきかを示すためのレジデンシ乗数(residency multiplier)をストレージ・システムに送るホスト・システムを示す、高レベルのブロック図である。
【
図10】優先ボリュームについてのキャッシュ選好を調整するための選好調整モジュールを示す、高レベルのブロック図である。
【
図11】優先ボリュームおよび関連付けられたレジデンシ乗数のリストの第1の例を示す、高レベルのブロック図である。
【
図12】優先ボリュームおよび関連付けられたレジデンシ乗数のリストの第2の例を示す、高レベルのブロック図である。
【
図13】同じレジデンシ乗数を有する優先ボリュームの各グループについてのLRUリスト、および非優先ボリュームについてのLRUリストを示す、高レベルのブロック図である。
【
図14】
図13に示したもののようなLRUリストを使用してキャッシュからストレージ要素をエビクトするための方法を示すフロー図である。
【発明を実施するための形態】
【0012】
本明細書の図において一般的に記載され図示されているが本発明の構成要素は、多種多様な異なる構成で配置および設計できることが、容易に理解されるであろう。したがって、図に表されている本発明の実施形態の以下のより詳細な説明は、特許請求される本発明の範囲を限定することは意図しておらず、本明細書で企図されている本発明に係る実施形態の特定の例を表しているに過ぎない。本明細書に記載する実施形態は、図面を参照することによって最もよく理解されるであろう。これらの図面では、全体を通して同様の部分は同様の数字で指定されている。
【0013】
本発明は、システム、方法、またはコンピュータ・プログラム製品あるいはそれらの組合せとして具現化され得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する、コンピュータ可読記憶媒体を含んでもよい。
【0014】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持および保存できる有形のデバイスであってもよい。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または以上の任意の好適な組合せであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、以下、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMもしくはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチ・カードまたは溝の中の隆起構造などの機械的に符号化されたデバイス、および以上の任意の好適な組合せが含まれる。本明細書において使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通じて伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または配線を介して伝送される電気信号などの、一過性の信号そのものであると解釈されるべきではない。
【0015】
本明細書に記載するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せを経由して外部のコンピュータまたは外部ストレージ・デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを備え得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に保存されるように転送する。
【0016】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存型命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードのいずれかであり得る。
【0017】
コンピュータ可読プログラム命令は、専らユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上でかつ部分的に遠隔のコンピュータ上で、または専ら遠隔のコンピュータもしくはサーバ上で、実行することができる。後者のシナリオでは、遠隔のコンピュータを、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを介して使用者のコンピュータに接続してもよく、または、外部のコンピュータへの接続を(例えば、インターネット・サービス・プロバイダを利用してインターネットを介して)行ってもよい。いくつかの実施形態では、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を行うために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して電子回路を個人化することができる。
【0018】
本明細書には、本発明の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本発明の態様が記載されている。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せを、コンピュータ可読プログラム命令によって実施できることが、理解されるであろう。
【0019】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はまた、命令が保存されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んだ製品を備えるように、コンピュータ可読記憶媒体に保存され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはそれらの組合せに特定の方式で機能するように指示できるものであってもよい。
【0020】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータによって実行されるプロセスを作り出すべく、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0021】
図1を参照すると、ネットワーク環境100の一例が示されている。ネットワーク環境100は、本発明に係るシステムおよび方法が実装され得る環境の一例を示すように提示されている。ネットワーク環境100は限定ではなく例として提示されている。実際、本明細書に開示するシステムおよび方法は、示されているネットワーク環境100の他に、多様な異なるネットワーク環境に適用可能であり得る。
【0022】
示されているように、ネットワーク環境100は、ネットワーク104によって相互接続された1つまたは複数のコンピュータ102、106を含む。ネットワーク104は、例えば、ローカル・エリア・ネットワーク(LAN)104、ワイド・エリア・ネットワーク(WAN)104、インターネット104、イントラネット104、などを含み得る。特定の実施形態では、コンピュータ102、106は、クライアント・コンピュータ102およびサーバ・コンピュータ106(本明細書では「ホスト・システム」106とも呼ぶ)の両方を含み得る。一般に、クライアント・コンピュータ102は通信セッションを開始し、一方で、サーバ・コンピュータ106はクライアント・コンピュータ102からのリクエストを待機する。特定の実施形態では、コンピュータ102またはサーバ106あるいはその両方を、1つまたは複数の内部または外部のダイレクト・アタッチト・ストレージ・システム110a(例えば、ハード・ディスク・ドライブのアレイ、ソリッド・ステート・ドライブ、テープ・ドライブ、等)に接続することができる。これらのコンピュータ102、106およびダイレクト・アタッチト・ストレージ・システム110aは、例えばATA、SATA、SCSI、SAS、Fibre Channelなどのプロトコルを使用して通信することができる。
【0023】
ネットワーク環境100は、特定の実施形態では、サーバ106の背後に、(例えば、ネットワークに取り付けられるストレージの使用時の)ストレージ・エリア・ネットワーク(SAN)108またはLAN108などの、ストレージ・ネットワーク108を含み得る。このネットワーク108は、サーバ106を、例えばハード・ディスク・ドライブまたはソリッド・ステート・ドライブのアレイ110b、テープ・ライブラリ110c、個々のハード・ディスク・ドライブ110dまたはソリッド・ステート・ドライブ110d、テープ・ドライブ110e、CD-ROMライブラリなどの、1つまたは複数のストレージ・システムに接続することができる。ストレージ・システム110にアクセスするために、ホスト・システム106は、ホスト106上の1つまたは複数のポートからストレージ・システム110上の1つまたは複数のポートまでの物理的接続を介して通信し得る。接続は、スイッチ、ファブリック、直接接続などを介したものであり得る。特定の実施形態では、サーバ106およびストレージ・システム110は、Fibre Channel(FC)などのネットワーク標準を使用して通信し得る。
【0024】
図2を参照すると、ハード・ディスク・ドライブ204またはソリッド・ステート・ドライブ204あるいはその両方のアレイを含む、ストレージ・システム110の一実施形態が示されている。示されているように、ストレージ・システム110は、ストレージ・コントローラ200と、1つまたは複数のスイッチ202と、ハード・ディスク・ドライブ204またはソリッド・ステート・ドライブ204(例えばフラッシュ・メモリ・ベースのドライブ204)などの、1つまたは複数のストレージ・ドライブ204とを含む。ストレージ・コントローラ200は、1つまたは複数のホスト106(例えば、z/OS、zVMなどのオペレーティング・システムを実行する、オープン・システム・サーバ106またはメインフレーム・サーバ106あるいはその両方)が、1つまたは複数のストレージ・ドライブ204内のデータにアクセスするのを可能にし得る。
【0025】
選択された実施形態では、ストレージ・コントローラ200は、1つまたは複数のサーバ206を含む。ストレージ・コントローラ200はまた、ストレージ・コントローラ200をホスト・デバイス106およびストレージ・ドライブ204にそれぞれ接続するための、ホスト・アダプタ208およびデバイス・アダプタ210も含み得る。複数のサーバ206a、206bによって、接続されたホスト106にとってデータが常に利用可能であることを保証するための冗長性を提供することができる。この結果、一方のサーバ206aが故障した場合、他方のサーバ206bが故障したサーバ206aのI/O負担を引き受けることができ、ホスト106とストレージ・ドライブ204の間でI/Oが継続可能となることが保証される。このプロセスを「フォールオーバー」と呼ぶ場合がある。
【0026】
選択された実施形態では、各サーバ206は、1つまたは複数のプロセッサ212とメモリ214とを含み得る。メモリ214は、揮発性メモリ(例えば、RAM)、および不揮発性メモリ(例えば、ROM、EPROM、EEPROM、ハード・ディスク、フラッシュ・メモリ、等)を含み得る。揮発性および不揮発性メモリは、特定の実施形態では、プロセッサ212上で実行されストレージ・ドライブ204中のデータにアクセスするために使用される、ソフトウェア・モジュールを保存し得る。これらのソフトウェア・モジュールは、ストレージ・ドライブ204中の論理ボリュームへの全ての読み出しおよび書き込みリクエストを管理し得る。
【0027】
選択された実施形態では、メモリ214は、DRAMキャッシュ218などのキャッシュ218を含む。ホスト106(例えば、オープン・システム・サーバまたはメインフレーム・サーバ106)が読み出し動作を行うときは常に、その読み出しを行うサーバ206は、ストレージ・ドライブ204からデータをフェッチし、そのデータをそれが再び必要な場合にそのキャッシュ218にセーブすることができる。ホスト106によってデータが再び要求される場合、サーバ206は、ストレージ・ドライブ204からデータをフェッチする代わりに、キャッシュ218からデータをフェッチすることができ、時間およびリソースの両方が節減される。同様に、ホスト106が書き込みを行うとき、書き込みリクエストを受信するサーバ106はそのキャッシュ218に書き込みを保存し、後から書き込みをストレージ・ドライブ204にデステージすることができる。キャッシュ218に書き込みが保存されると、その書き込みは、第1のサーバ206が故障した場合に対となるサーバ206によって書き込みを回復できるように、対となるサーバ206の不揮発性ストレージ(NVS)220にも保存され得る。特定の実施形態では、NVS220は、対となるサーバ206内にバッテリ・バックアップ式メモリとして実装される。
【0028】
図2に示すものと類似したアーキテクチャを有するストレージ・システム110の一例は、IBM DS8000(商標)エンタープライズ・ストレージ・システムである。DS8000(商標)は、連続動作をサポートするように設計されているディスク・ストレージを提供する、高性能、大容量のストレージ・コントローラである。ただし、本明細書に開示するシステムおよび方法は、IBM DS8000(商標)エンタープライズ・ストレージ・システム110を用いた運用に限定されず、システム110と関連付けられた製造者、製品名、または構成要素もしくは構成要素名に関わらず、任意の同等または類似のストレージ・システム110を用いて運用することができる。また更に、本発明の1つまたは複数の実施形態から利益を得る可能性のある任意のストレージ・システムは、本発明の範囲内にあるものと見なされる。したがって、IBM DS8000(商標)は例として提示されており、限定を行うようには意図されていない。
【0029】
図3を参照すると、ホスト・システム106上に存在するアプリケーションによってI/Oリクエストが実行されるとき、そのリクエストを完了するためにいくつかのプロセスが実行され得る。これらのプロセスは、I/Oレイテンシおよびアプリケーション応答時間に影響し得る。zHyperLinkは、ホスト・システムとストレージ・システム110の間に高速で信頼性の高い直接の通信経路300を提供することによって、I/Oレイテンシを低減するように設計された技術である。このことは、ホスト・システム106およびストレージ・システム110にzHyperLinkアダプタをインストールすること、ならびに、zHyperLinkケーブルを使用して構成要素を接続することによって、達成され得る。この構成は、ホスト・システム106とストレージ・コントローラ200の間に、ポイント・ツー・ポイントの接続300を作り出す。この技術によって、従来の通信経路302、例えばz High-Performance FICON(R)(zHPF)通信経路302を使用する場合と比較して、I/O応答時間を最低で10分の1まで低減できる。そのような短い応答時間は同期I/Oリクエストを使用することによって達成することができ、これにより、I/O割り込み動作およびI/Oディスパッチ動作などのいくつかの機能のために必要な時間の量が低減される。
【0030】
zHPFなどの技術を使用して利用可能な標準的なI/O処理では、I/O動作が、z/OSディスパッチング、割り込み操作、CPUキューイング、およびL1/L2プロセッサ・キャッシュ・リローディングなどの、一連の時間のかかるタスクを実行する必要がある。これらのタスクおよびI/O処理に必要な他のタスクによって、I/O応答時間が、130マイクロ秒超の応答時間に割り込み操作およびCPUディスパッチの時間を加えたものとなり、仮想ストレージ内でのデータの転送と比較して比較的長くなる可能性がある。
【0031】
zHyperLinkを使用すると、より高性能の通信経路300を介して同期I/Oが行われるとき、ホスト・システム106上のCPUは、I/Oが完了するかまたはタイムアウト値に達するまで待機または「スピン」することができる。zHyperLinkはI/Oを完了するために必要な時間を大きく低減し得るが、その理由は、ディスパッチ、割り込み操作、CPUキュー時間、およびCPUキャッシュ・リロードの動作がもはや必要なくなるからである。このことにより、通常のI/O動作における2つのコンテキスト・スワップ、スレッドをスリープにしその後それを再ディスパッチすること、およびI/O割り込みを実行することを実行するために必要なプロセッサ時間が低減される。
【0032】
同期I/Oと関連付けられたI/O応答時間の改善を達成するためには、I/Oを処理するために使用されるコード経路を高度に最適化する必要がある。キャッシュ・ミスなどの同期I/O動作を遅延させるいかなる状態によっても、ホスト・システム106に通知が返され、zHPFなどのより遅い通信経路302を介して動作がリトライされる可能性がある。より高性能の通信経路300を介した同期I/Oが成功するのは通常、マイクロコードが、10~30マイクロ秒などの非常に少ない量の時間で同期I/O動作を完了できるときのみである。その量の時間で同期I/O動作を完了できない場合、同期I/O動作が失敗する可能性があり、ホスト・システム106がFICONなどの最適ではない経路302を介して動作をリトライする必要のある場合がある。
【0033】
全体に
図3を引き続き参照しながら、
図4を参照すると、ストレージ・システム110のボリューム304に保存されているデータに同期I/Oを実行するためには、要求されるデータはキャッシュ218内に収容されるのが理想的である。キャッシュ・ミスによって同期I/O動作が失敗し、zHPFなどのより遅い通信経路302を介してリトライされる可能性がある。同期I/Oを使用してアクセスされるデータのキャッシュ・ヒット率を改善するために、特定の実施形態では、ストレージ・システム110上のボリューム304を、優先ボリューム304aおよび非優先ボリューム304bへと分割することができる。優先ボリューム304aは、同期I/Oを使用してアクセスされるのが好ましいボリューム304であり得る。これらは、より重要もしくは決定的と見なされるか、または能力が重要もしくは決定的であるデータ(例えば、ディレクトリ、等)を含む、ボリューム304であり得る。非優先ボリューム304bは対照的に、優先ボリューム304aとして指定されない任意のボリューム304であり得る。
【0034】
図4に示されているように、ボリューム304は、トラックなどのストレージ要素402で構成され得る。優先ボリューム304aからのストレージ要素402を、優先ストレージ要素402aとして指定することができ、一方で、非優先ボリューム304bからのストレージ要素402を、非優先ストレージ要素402bとして指定することができる。所与の任意の時間において、ストレージ・システム110のキャッシュ218は、非優先ボリューム304bからの非優先ストレージ要素402bの第1の組404bと、優先ボリューム304aからの優先ストレージ要素402aの第2の組404aとを保存し得る。優先ボリューム304aは同期I/Oの使用が選好されるボリューム304であるので、優先ストレージ要素402aはキャッシュ218中で非優先ストレージ要素402bよりも選好される可能性がある。このことにより優先ストレージ要素402aのキャッシュ・ヒット率が理想的に高まることになり、この結果、同期I/Oが最適化され、首尾よく完了する同期I/O動作のパーセンテージが高まる。
【0035】
キャッシュ218中で非優先ストレージ要素402bよりも優先ストレージ要素402aを選好して処理するために、最適化モジュール400が提供され得る。とりわけ、最適化モジュール400は、どのボリューム304が優先および非優先であるかを指定するための機能性を提供すること、ならびに、優先ストレージ要素402aがキャッシュ218中に非優先ストレージ要素402bよりも長く存在するキャッシュ・エビクション・ポリシーを実装することができる。最適化モジュール400およびその機能性を、
図5と関連させてより詳細に検討する。
【0036】
図5を参照すると、最適化モジュール400および関連付けられたサブ・モジュールを示す高レベルのブロック図が示されている。最適化モジュール400および関連付けられたサブ・モジュールは、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せにおいて実装され得る。最適化モジュール400および関連付けられたサブ・モジュールは、限定ではなく例として提示されている。異なる実施形態ではより多いまたはより少ないサブ・モジュールを提供してもよい。例えば、いくつかのサブ・モジュールの機能を組み合わせて単一のもしくはより少ない数のサブ・モジュールにしてもよく、または、単一のサブ・モジュールの機能をいくつかのサブ・モジュールにわたって分散させてもよい。最適化モジュール400および関連付けられたサブ・モジュールはストレージ・システム110内に示されているが、あらゆる機能性が必ずしもストレージ・システム110内で実装される訳ではなく、ストレージ・システム110内での実装に限定される訳でもない。したがって、最適化モジュール400および関連付けられたサブ・モジュールの場所は、限定ではなく例として提供されている。
【0037】
示されているように、最適化モジュール400は、確立モジュール500、調節モジュール502、推定寿命判定モジュール504、レジデンシ判定モジュール506、およびキャッシュ・エビクション・モジュール508のうちの1つまたは複数を含む。確立モジュール500は、既に検討したような優先ボリューム304aおよび非優先ボリューム304bを指定するように構成され得る。特定の実施形態では、ホスト・システム106は、これらの指定をストレージ・システム110に通信する。特定の実施形態では、優先/非優先ボリューム304は、オンライン・コマンドまたは構成リストを使用して確立される。他の実施形態では、ホスト・システム106に、どのボリューム304を優先/非優先とすべきかを判定するための機能を組み込むことができる。例えば、ホスト・システム106はI/Oパターンを観察することができ、特定のボリューム304により速い同期I/Oプロセスを使用してアクセスするべきであるか、またはそうすることが好ましいと判定することができる。ホスト・システム106は、これらのボリューム304を、優先ボリューム304aの組に追加することができる。
【0038】
調節モジュール502は、どのボリューム304が優先/非優先であるかを調節することができる。例えば、時間の経過と共に、ボリューム304についてのアクセス・パターンまたはデータ重要度が変化する場合がある。調節モジュール502は、特定の実施形態では、これらのアクセス・パターンまたはデータ重要度が変化するときに、どのボリューム304が優先/非優先と見なされるかを調節し得る。別法として、調節モジュール502は、優先または非優先と見なされるボリューム304をユーザが手動で調節するのを可能にし得る。特定の実施形態では、
図7と関連してより詳細に説明するように、ホスト・システム106は、どのボリューム304が優先または非優先と見なされるかを変更または更新するために、コマンドまたはリストあるいはその両方をストレージ・システム110に周期的に送る。
【0039】
推定寿命判定モジュール504は、キャッシュ218中のストレージ要素(例えば、トラック)の推定寿命(すなわち、レジデンシ時間)を判定するように構成され得る。例えば、特定の実施形態では、推定寿命判定モジュール504は、エビクトされる前に非優先ストレージ要素402bがキャッシュ218中に存在することになる時間の量を判定するように構成される。この推定寿命は、時間上のある点の数字、または時間間隔にわたる平均であり得る。特定の実施形態では、推定寿命は、キャッシュ218中の最も過去に使用された非優先ストレージ要素402bのタイムスタンプを、キャッシュ218中の直近に使用された非優先ストレージ要素402bのタイムスタンプから減算することによって計算され、これらのタイムスタンプは、非優先ストレージ要素402bが直近にアクセスされた時点を示す。
【0040】
レジデンシ判定モジュール506は対照的に、特定のストレージ要素がどれくらいの間キャッシュ218中に存在したかを判定することができる。レジデンシ時間は、例えば、ストレージ要素402のタイムスタンプ(ストレージ要素402が直近にアクセスされた時間を示す)を現在の時間から減算することによって計算され得る。
【0041】
推定寿命判定モジュール504によって計算された推定寿命およびレジデンシ判定モジュール506によって計算されたレジデンシ時間を使用して、キャッシュ・エビクション・モジュール508は、優先ストレージ要素402aが非優先ストレージ要素402bの推定寿命よりも長い間キャッシュ218中に維持されるような、キャッシュ・エビクション・ポリシーを実行することができる。例えば、キャッシュ・エビクション・ポリシーは、優先ストレージ要素402aが、非優先ストレージ要素402bの推定寿命の2倍の間、キャッシュ218中に維持されることを要求し得る。他の倍数(すなわち、1よりも大きい数、小数、または分数)が可能であり、それらは本発明の範囲内にある。キャッシュ・エビクション・モジュール508によって実行され得る方法600の一例が、
図6と関連させて記載されている。
【0042】
図6は、キャッシュ218中のスペースを解放するべくキャッシュ218からエントリをエビクトするための方法600の一実施形態を示す。方法600は、
図4と関連して既に記載した、非優先ストレージ要素402bの第1の組404b、および優先ストレージ要素402aの第2の組404aを参照する。特定の実施形態では、非優先ストレージ要素402bの第1の組404bは第1のLRU(最も過去に使用された)リスト(すなわち、「非優先」LRUリスト)においてドキュメント化され、優先ストレージ要素402aの第2の組404aは、第2のLRUリスト(すなわち、「優先」LRUリスト)においてドキュメント化される。
【0043】
示されているように、方法600は最初に、キャッシュ218から1つまたは複数のストレージ要素402をエビクトするべきときであるかどうかを判定する602。このステップ602は、特定の実施形態では、キャッシュ218の空き領域が少ないかどうかを判定することを含む。キャッシュ218からエントリをエビクトするべきときである場合、方法600は、「優先」LRUリストが空であるかどうかを判定する604。空である場合、方法600は、キャッシュ218から、「非優先」LRUリスト中に列挙された最も古い非優先ストレージ要素402b(すなわち、最も古いタイムスタンプを有する非優先ストレージ要素402b)をエビクトする606。「優先」LRUリストが空でない場合、方法600は、「非優先」LRUリストが空であるかどうかを判定する608。空であれば、方法600は、キャッシュ218から、「優先」LRUリスト中に列挙された最も古い優先ストレージ要素402aをエビクトする610。
【0044】
「非優先」LRUリストも「優先」LRUリストも空でない場合、方法600は、「非優先」LRUリスト中の最も古い非優先ストレージ要素402bが、「優先」LRUリスト中の最も古い優先ストレージ要素402aよりも古いタイムスタンプを有するかどうかを判定する612。有する場合は、方法600は、キャッシュ218から、「非優先」LRUリスト中の最も古い非優先ストレージ要素402bをエビクトする614。有さない場合は、方法600はステップ616に進む。ステップ616において、方法600は、キャッシュ218中の最も古い優先ストレージ要素402aのレジデンシ時間(すなわち、「優先」LRUリスト中の最も古い優先ストレージ要素402aがキャッシュ218中に存在している時間の量)が、倍数Nにキャッシュ218中の非優先ストレージ要素402bの推定寿命を乗算したものよりも小さいかどうかを判定する616。小さい場合は、方法600は、キャッシュ218から、「非優先」LRUリスト中の最も古い非優先ストレージ要素402bをエビクトする618。対照的に、「優先」LRUリスト中の最も古い優先ストレージ要素402aについてのレジデンシ時間が、N*(キャッシュ218中の非優先ストレージ要素402bの推定寿命)よりも大きい場合、方法600は、キャッシュ218から「優先」LRUリスト中の最も古い優先ストレージ要素402aをエビクトする620。変数Nはレジデンシ乗数であり、その詳細は以下でより詳細に説明する。
【0045】
図7を参照すると、既に述べたように、ホスト・システム102は、どのボリューム304が優先または非優先と見なされるか、およびその結果どのストレージ要素402にキャッシュ選好が与えられるかを変更または更新するために、コマンドまたはリストあるいはその両方をストレージ・システム110に周期的に送ることができる。特定の実施形態では、ホスト・システム102は、ストレージ・システム110に、優先すべきボリューム304のリスト700と共に、コマンドを周期的に送る。ボリューム304のこのリスト700は、ホスト・システム102がストレージ・システム110にコマンドを発行するたびに変化し得る。リスト700中であるボリューム304が既に優先として指定されているが、新しいリスト700ではそのように指定されていない場合、ストレージ・システム110は、ボリューム304の状態を非優先に変更し、ボリューム304にキャッシュ選好を与えるのを停止することができる。
【0046】
特定の実施形態では、ホスト・システム102は、特定のボリューム304に対して、ホスト・システム102がボリュームの状態を断定的に非優先に変えるまではボリューム304がその優先状態を保持することになることを示すインジケータ(例えば、「優先キャッシュを強制(FORCE FAVORED CACHE)」インジケータ)を設定することができる。ホスト・システム102は、ボリューム304の状態を優先から非優先に変更するための「優先キャッシュを削除(REMOVE FAVORED CACHE)」コマンドを使用し得る。特定の実施形態では、「優先キャッシュを強制」インジケータには、ボリューム304が非優先状態に戻る前にどれくらいの間優先状態を有するべきかを示す継続時間を添付することができる。継続期間が終わりボリューム304がもはやリスト700中に含まれなくなると、ボリューム304がキャッシュ選好を受けなくなるように、ボリューム304の状態を自動的に非優先に変化させることができる。
【0047】
図8を参照すると、ボリューム304が優先状態から非優先状態へとおよびその逆へと動的に変化し得るため、あるボリュームの状態が変わっていた可能性のあることが考慮されるように、
図6の方法600に対して様々な修正を行うことができる。この状態変化は、「非優先」LRUリストから「優先」LRUリストへのまたはその逆へのストレージ要素402の移動の根拠となり得る。
【0048】
図8は、キャッシュ218中のスペースを解放するべくキャッシュ218からエントリ(すなわち、ストレージ要素402)をエビクトするための方法800の一実施形態を示す。この方法800は
図6に示す方法600と類似しているが、方法800は優先状態から非優先状態へとおよびその逆へと変化している可能性のあるボリューム304を考慮するように修正されている点が異なる。
図6の方法600と同じである方法800のステップは同じ番号付けで示されており、一方で新しいステップ(すなわち、ステップ802、804、および806)は新しい番号付けを割り当てられている。
図6の方法600と比較した方法800の流れもまた、新しいステップ802、804、および806を説明するためにいくらか変更されている。
【0049】
図8に示されているように、「非優先」LRUリストが空であるかどうかを判定した608後で、方法800は、「優先」LRUリストの最も古いエントリがもはや優先されないかどうかを判定する802ことができる。言い換えれば、方法800は、「優先」LRUリスト中の最も古いエントリ(すなわち、ストレージ要素402)の状態が優先から非優先へと変更されたかどうかを判定する802ことができる。変更された場合は、方法800は、キャッシュ218から「優先」LRUリスト中の最も古いエントリをエビクトする610。
【0050】
同様に、決定ステップ616が実行された後で、方法800は、「非優先」LRUリスト中の最も古いエントリが現時点で優先であるかどうかを判定する806。言い換えれば、方法800は、「非優先」LRUリスト中の最も古いエントリ(すなわち、ストレージ要素402)の状態が非優先から優先へと変更されたかどうかを判定する806。変更された場合は、方法800は、「非優先」LRUリストから「優先」LRUリストの直近に使用された末尾へとエントリを移動させ804、方法800はステップ612に戻る。変更されなかった場合は、方法800は、キャッシュ218から「非優先」LRUリスト中の最も古いエントリをエビクトする618。
【0051】
図9を参照すると、既に述べたように、ホスト・システム102は、ストレージ・システム110に、優先されるべきボリューム304を含むリスト700を含むコマンドを周期的に送ることができる。特定の実施形態では、ホスト・システム102は、リスト700と共に、どの程度の強さのキャッシュ選好を優先ボリューム304aに適用すべきかを示す、レジデンシ乗数902を含み得る。レジデンシ乗数902が大きいほどキャッシュ選好が強くなり、この結果優先ボリューム304aは、非優先ボリューム304bと比較してキャッシュ218中に保持される時間がより長くなる。レジデンシ乗数902が小さいほどキャッシュ選好が弱くなり、この結果優先ボリューム304aは、非優先ボリューム304bと比較してキャッシュ218中に保持される時間がより短くなる。特定の実施形態では、リスト700中の全ての優先ボリューム304aについて、単一のレジデンシ乗数902が提供される。他の実施形態では、
図10および
図11と関連してより詳細に説明するように、異なる優先ボリューム304aには異なるレジデンシ乗数902が提供される。
【0052】
ホスト・システム102または別のシステムには、どのボリューム304を優先ボリューム304aとして扱うべきかを判定する、および優先ボリューム304aの各々についてレジデンシ乗数902を判定するための、選好調整モジュール900が提供され得る。一般に、選好調整モジュール900は、ストレージ・システム110上のボリューム304へのI/Oを追跡し、この追跡情報に基づいて、どのボリューム304を優先として扱うべきかを判定することができる。追跡情報を使用して、選好調整モジュール900はまた、個々のまたは全体としての優先ボリューム304aにとって、キャッシュ選好の強さがどの程度であるべきかを判定することもできる。
【0053】
図10を参照すると、選好調整モジュール900および関連付けられたサブ・モジュールを示す高レベルのブロック図が示されている。選好調整モジュール900および関連付けられたサブ・モジュールは、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せにおいて実装され得る。選好調整モジュール900および関連付けられたサブ・モジュールは、限定ではなく例として提示されている。異なる実施形態ではより多いまたはより少ないサブ・モジュールを提供してもよい。例えば、いくつかのサブ・モジュールの機能を組み合わせて単一のもしくはより少ない数のサブ・モジュールにしてもよく、または、単一のサブ・モジュールの機能をいくつかのサブ・モジュールにわたって分散させてもよい。選好調整モジュール900および関連付けられたサブ・モジュールはホスト・システム102内に示されているが、あらゆる機能性が必ずしもホスト・システム102内で実装される訳ではなく、またホスト・システム102内での実装に限定される訳でもない。したがって、選好調整モジュール900および関連付けられたサブ・モジュールの場所は、限定ではなく例として提供されている。
【0054】
示されているように、選好調整モジュール900は、I/O追跡モジュール1000、ボリューム・ランク付けモジュール1010、リスト作成モジュール1012、レジデンシ時間判定モジュール1014、乗数計算モジュール1016、および送信モジュール1018のうちの、1つまたは複数を含む。
【0055】
I/O追跡モジュール1000は、ホスト・システム102からストレージ・システム110に発行されるI/Oを追跡するように構成され得る。このI/Oは、どのボリューム304が優先されより速い同期I/Oプロセスを介してアクセスされるべきかを示し得る。例えば、ボリューム304に対してより量の大きいI/Oは、ボリューム304に対してジョブを実行中であり、そのジョブを同期I/Oを使用してより速くおよびより効率的に実行できることを示している場合がある。そのようなシナリオでは、ボリューム304に、キャッシュ218中のそのデータのより多くをより長い量の時間の間保持するためのキャッシュ選好を付与することができ、このことにより、ボリューム304へのアクセス時のより高いキャッシュ・ヒット率が保証される。
【0056】
I/Oをボリューム304まで追跡するとき、I/O追跡モジュール1000は、タイプの異なるI/Oを区別することができる。例えば、I/O追跡モジュール1000は、トランザクション内の読み出し1002、トランザクション内の書き込み1004、トランザクション外の読み出し1006、およびトランザクション外の書き込み1008を追跡し得る。特定の実施形態では、I/O追跡モジュール1000は、ボリューム304に対するこれらのタイプの異なるI/Oの各々の量を追跡するために、カウンタを利用することができる。
【0057】
I/O追跡モジュール1000によって集められた情報を使用して、ボリューム・ランク付けモジュール1010は、ストレージ・システム110上のボリューム304をランク付けすることができる。例えば、ボリューム・ランク付けモジュール1010は、式A*L+B*M+C*P+D*Qを使用して各ボリューム304をランク付けすることができ、この式で、Aはトランザクション内の読み出し用のボリューム304へのアクセスの数、Bはトランザクション内の書き込み用のボリューム304へのアクセスの数、Cはトランザクション外の読み出し用のボリューム304へのアクセスの数、Dはトランザクション外の書き込み用のボリューム304へのアクセスの数である。L、M、P、およびQは重み係数(例えば、L=4、M=3、P=2、Q=1)であり、ここでL>M>P>Qである。言い換えれば、キャッシュ選好を確立する目的のために、トランザクション内のボリューム304へのアクセスは、トランザクション外のボリューム304へのアクセスよりも重く重み付けされ得る。また、キャッシュ選好を確立する目的のために、ボリューム304に対する読み出しは、ボリューム304への書き込みよりも重く重み付けされ得る。
【0058】
各ボリューム304についての上記した計算の出力を使用して、ボリューム・ランク付けモジュール1010は、ストレージ・システム110上のボリューム304を、それらの出力値の大きさによってランク付けすることができる。I/Oの量がより多いボリューム304は一般により大きい出力値を有し、したがって同じ時間期間内でI/Oの量がより少ないボリューム304よりも、上位にランク付けされる可能性がある。リスト作成モジュール1012は次いで、優先されキャッシュ選好が与えられるべきボリューム304のリスト700を作成することができる。これは、特定の数の最も上位にランク付けされたボリューム304、特定の閾値を超える出力値を有するボリューム304、などであり得る。
【0059】
レジデンシ時間判定モジュール1014は、キャッシュ218内の非優先ボリューム304bのストレージ要素402のレジデンシ時間(すなわち、推定寿命)を判定することができる。乗数計算モジュール1016は次いで、優先ボリューム304aについてのレジデンシ乗数902を判定することができる。例えば、優先ボリューム304aのストレージ要素402が、キャッシュ218中に非優先ボリューム304bのストレージ要素402の2倍の時間の量の間存在することになる場合、レジデンシ乗数902は2に設定され得る。特定の実施形態では、レジデンシ乗数902は、優先ボリューム304aから上記した出力値を取り出し、これを非優先ボリューム304bからの出力値で除算してある率を得ることによって、判定される。所望であれば、この率に関わらず、特定の値(例えば、2)を下回らないようなレジデンシ乗数902の最低値を設定してもよい。このことにより、優先ボリューム304aのストレージ要素402がキャッシュ218中に、非優先ボリューム304bのストレージ要素402の少なくとも2倍の時間の量の間保持されることが保証されることになる。
【0060】
リスト700が作成されレジデンシ乗数902が判定されると、送信モジュール1018は、リスト700およびレジデンシ乗数902を、ホスト・システム102からストレージ・システム110へと送信することができる。既に説明したように、特定の実施形態では、リスト700中の全ての優先ボリューム304aについて、単一のレジデンシ乗数902が計算され得る。他の実施形態では、
図11に示すように、リスト700中の各優先ボリューム304aについて、異なるレジデンシ乗数902(N)が計算され得る。
図11に図示されているように、リスト700は、優先されることになるボリューム304を、ランク付けの順序で(すなわち、上記した計算を使用したそれらの出力値の順序で)ドキュメント化する。各優先ボリューム304aは、それらと関連付けられた異なるレジデンシ乗数902を有する。ボリューム304のランクが上位であるほど、レジデンシ乗数902は大きくなる。既に述べたように、優先ボリューム304aのストレージ要素402がキャッシュ218中に保持されるべき時間の量を判定するために、レジデンシ乗数902に、非優先ボリューム304bのストレージ要素402の推定寿命を乗算することができる。
【0061】
図12を参照すると、特定の実施形態では、リスト700中の優先ボリューム304aは同じレジデンシ乗数902を共有し、この結果選好された同じキャッシュ・レジデンシ時間を有し得る。例えば、優先ボリューム304aの第1の組(すなわち、ボリュームA、B、およびC)には第1のレジデンシ乗数N
1を割り当てることができ、優先ボリューム304aの第2の組(すなわち、ボリュームDおよびE)には第2のレジデンシ乗数N
2を割り当てることができ、優先ボリューム304aの第3の組(すなわち、ボリュームFおよびG)には第3のレジデンシ乗数N
3を割り当てることができ、ここでN
1>N
2>N
3である。各レジデンシ乗数902は、優先ボリューム304aのそれに対応するグループについて、キャッシュ選好(すなわち、選好されるキャッシュ・レジデンシ時間)の強さがどの程度であるべきかを示す。特定の実施形態では、IBM DS8000(商標)エンタープライズ・ストレージ・システム110などのストレージ・システム110において、各ボリューム304についてのレジデンシ乗数902は、レジデンシ乗数902がリブート、電源喪失、障害などの間に失われないように、グローバル状態エリア(例えば、より永続的なストレージ・ドライブ204にミラーリングされる、キャッシュ218中のエリア)に保存される。
【0062】
図13を参照すると、特定の実施形態では、各レジデンシ乗数902および優先ボリューム304aの関連付けられたグループについて、LRUリスト1300が作成される。全ての非優先ボリューム304b(すなわち、レジデンシ乗数902を有さないかまたは1のレジデンシ乗数902を有するボリューム304)について、LRUリスト1300dも作成することができる。キャッシュ218に無修正のストレージ要素402(例えば、無修正のトラック)が追加される場合、ストレージ要素402と関連付けられたボリューム304は、それが優先ボリューム304aであるかどうか、および、そうであれば、そのボリューム304についてのレジデンシ乗数902は何か、を判定するようにチェックされ得る。ボリューム304についてのレジデンシ乗数902(またはその不在)に基づいて、無修正のストレージ要素402と関連付けられたエントリを、適切なLRUリスト1300の直近に使用された(MRU)末尾に追加することができる。ボリューム304と関連付けられたレジデンシ乗数902についてLRUリスト1300が存在しない場合、レジデンシ乗数902についてのLRUリスト1300を作成することができ、この新しく作成されたLRUリスト1300に、無修正のストレージ要素402と関連付けられたエントリを追加することができる。
【0063】
図14は、
図13に図示したもののようなLRUリスト1300を使用してキャッシュ218からストレージ要素をエビクトするための方法1400を示す。示されているように、方法1400は最初に、キャッシュ218から1つまたは複数のストレージ要素402をエビクトするべきときであるかどうかを判定する1402。このステップ1402は、特定の実施形態では、キャッシュ218の空き領域が少ないかどうかを判定することを含む。キャッシュ218からエントリをエビクトするべきときである(例えば、キャッシュ218の空き領域が少ない)場合、方法1400は、優先ボリューム304a(以降は「優先」LRUリスト1300と呼ぶ)と関連付けられたLRUリスト1300が全て空であるかどうかを判定する1404。全て空であれば、方法1400は、キャッシュ218から、非優先ボリューム304bについてのLRUリスト1300(以降は「非優先」LRUリスト1300と呼ぶ)中の最も古いエントリ(すなわち、LRUリストのLRU末尾にあるエントリ)と関連付けられたストレージ要素402をエビクトする1406。
【0064】
他方で、「優先」LRUリスト1300が完全に空ではない場合、方法1400は、空ではない「優先」LRUリスト1300について、「要求されるレジデンシ時間を超える時間(time above required residency time)」を演算する1410。特定の実施形態では、「要求されるレジデンシ時間を超える時間」は、「優先」LRUリスト1300中の最も古いエントリのレジデンシ時間を判定し、この値から「推定寿命」にレジデンシ乗数902を乗算したものを減算することによって計算され得る。既に説明したように、「推定寿命」は、エビクトされる前に非優先ストレージ要素402bがキャッシュ218中に存在することになる時間の量と等価であり得る。一般に、ステップ1410は、「優先」LRUリスト1300中の最も古いエントリが、キャッシュ218中でのその選好されるレジデンシ時間を上回った(または下回った)量を判定する。
【0065】
方法1400は次いで、最も古いエントリについての「要求されるレジデンシ時間を超える時間」が最も大きい「優先」LRUリスト1300を選び出す1412。方法1400は次いで、この「要求されるレジデンシ時間を超える時間」が負である(「優先」LRUリスト1300中の最も古いエントリと関連付けられたストレージ要素が、その選好されるレジデンシ時間よりも少ないある時間の量の間、キャッシュ218中に存在していることを意味する)かどうかを判定する1414。「要求されるレジデンシ時間を超える時間」が負である場合、方法1400は、「非優先」LRUリスト1300が空であるかどうかを判定する1416。これが空でない場合、方法1400は、キャッシュ218から、「非優先」LRUリスト1300中の最も古いエントリと関連付けられたストレージ要素402をエビクトする1406。
【0066】
ステップ1414において、「要求されるレジデンシ時間を超える時間」が負でない(「優先」LRUリスト1300中の最も古いエントリが、その選好されるレジデンシ時間以上のある時間の量の間、キャッシュ218中に存在していることを意味する)場合、方法1400は、キャッシュ218から、最大の「要求されるレジデンシ時間を超える時間」を有する「優先」LRUリスト1300中の最も古いエントリと関連付けられたストレージ要素をエビクトする1408。同様に、ステップ1416において「非優先」LRUリスト1300が空であると分かった場合、方法1400はやはり、キャッシュ218から、最大の「要求されるレジデンシ時間を超える時間」を有する「優先」LRUリスト1300中の最も古いエントリをエビクトする1408。
【0067】
図中のフローチャートおよびブロック図には、本発明の様々な実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の、可能な実装形態のアーキテクチャ、機能、および動作が説明されている。この関連において、フローチャートまたはブロック図内の各ブロックは、指定されたロジック機能を実施するための1つまたは複数の実行可能命令を備える、モジュール、セグメント、またはコードの一部分を表すことができる。いくつかの代替的実装形態において、ブロック内に記された機能は、図に記されたものとは異なる順序で行われることにも留意すべきである。例えば連続して示される2つのブロックは、実際は実質的に並行して実行され、またはこれらのブロックは時には関わる機能に応じて、逆の順序で実行され得る。他の実装形態では、所望の機能を達成するために、開示される全てのステップを必要としない場合がある。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する専用ハードウェア・ベースのシステム、または専用ハードウェアとコンピュータ命令の組合せによって実装されることもまた、留意されるであろう。