(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-08
(45)【発行日】2024-04-16
(54)【発明の名称】ストレージ装置及びストレージ制御方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20240409BHJP
G06F 13/10 20060101ALI20240409BHJP
G06F 13/14 20060101ALI20240409BHJP
【FI】
G06F3/06 301M
G06F3/06 304P
G06F13/10 340A
G06F13/14 330A
(21)【出願番号】P 2020158503
(22)【出願日】2020-09-23
【審査請求日】2023-06-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【氏名又は名称】横田 功
(72)【発明者】
【氏名】久保田 聡
(72)【発明者】
【氏名】小林 慎一
(72)【発明者】
【氏名】窪田 遼
【審査官】北村 学
(56)【参考文献】
【文献】特開平11-167470(JP,A)
【文献】特開2006-285809(JP,A)
【文献】特開2013-073582(JP,A)
【文献】特開2013-077283(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06
G06F 13/10
G06F 13/14
(57)【特許請求の範囲】
【請求項1】
ストレージ装置のリソースを、性能保証対象の第1処理要求の処理に用いる第1リソースと前記第1処理要求とは異なる第2処理要求の処理に用いる第2リソースとに分割し、
前記第1処理要求の処理を所定順序で実行する複数のモジュールのそれぞれの処理の完了予定時刻を決定し、
前記複数のモジュールのそれぞれに対して、前記決定した完了予定時刻よりも前に前記第1リソースを用いた処理が完了した場合、前記決定した完了予定時刻の到来後に完了を通知させ、前記通知後に前記所定順序の次のモジュールの処理を開始させる、
制御部、を備える
ストレージ装置。
【請求項2】
前記制御部は、
前記第1処理要求の処理におけるデータの転送経路を特定し、
前記転送経路に応じて、前記複数のモジュールのそれぞれの処理にかかる予定処理時間を決定し、
複数の前記予定処理時間と、前記第1処理要求の受信時刻とに基づき、前記複数のモジュールのそれぞれの処理の完了予定時刻を決定する、
請求項1に記載のストレージ装置。
【請求項3】
前記制御部は、
前記複数のモジュールのそれぞれの処理の完了時刻を取得し、
前記複数のモジュールのそれぞれについて、前記完了時刻と、前記完了予定時刻とに基づき、前記予定処理時間を更新する、
請求項2に記載のストレージ装置。
【請求項4】
前記制御部は、
複数の前記第1処理要求を受信した場合、前記複数の第1処理要求のそれぞれの処理にかかる予定処理時間を算出し、
現在時刻から前記複数の第1処理要求のそれぞれの完了予定時刻までの残時間が、前記予定処理時間以下になった第1処理要求の処理を開始させる、
請求項1~請求項3のいずれか1項に記載のストレージ装置。
【請求項5】
ストレージ装置のリソースを、性能保証対象の第1処理要求の処理に用いる第1リソースと前記第1処理要求とは異なる第2処理要求の処理に用いる第2リソースとに分割し、
前記第1処理要求の処理を所定順序で実行する複数のモジュールのそれぞれの処理の完了予定時刻を決定し、
前記複数のモジュールのそれぞれに対して、前記決定した完了予定時刻よりも前に前記第1リソースを用いた処理が完了した場合、前記決定した完了予定時刻の到来後に完了を通知させ、前記通知後に前記所定順序の次のモジュールの処理を開始させる、
処理をコンピュータが実行する、ストレージ制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ装置及びストレージ制御方法に関する。
【背景技術】
【0002】
複数の記憶装置を備えるストレージ装置において、上位装置、例えばサーバ等のコンピュータからの複数の処理要求に優先順位を付加し、それぞれの処理要求を処理する際の処理性能に上限を設定するQoS(Quality of Service)機能が知られている。
【0003】
例えば、ストレージ装置は、QoS機能により、優先順位の高い処理要求(「IO(Input/Output)要求」又は「IO」と称されてもよい)に対して、優先順位の低い他のIOよりも優先して帯域を確保する。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2006-285809号公報
【文献】特開2004-086512号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述したストレージ装置は、IOを受領するインタフェース(IF)部分のリソース管理を行なうものの、メモリ等を含めたストレージ装置全体の性能管理機能を有さない場合がある。このため、ストレージ装置において、性能保証されない、又は、性能保証が制限される場合がある。
【0006】
また、ストレージ装置の内部リソースの使用に制限が設定されない場合がある。この場合、ストレージ装置は、優先順位の高い、換言すれば性能保証したいIOを受領しても、バッファを有していないため、優先順位の高いIOを処理する際の処理性能の下限を保証することができない、又は、下限の保証が制限される場合がある。
【0007】
なお、上述した説明では、ストレージ装置が、IO発行元の上位装置又はそのユーザに一定水準の性能が得られることを「保証」する場合を想定したが、当該性能が損なわれないように制御することで一定水準の性能を「保障」するものと捉えてもよい。以下の説明では、「保証」及び「保障」の一方又は双方の意味を含めて「保証」と表記する。
【0008】
1つの側面では、本発明は、ストレージ装置の処理性能を処理要求に応じて適切に制御することを目的とする。
【課題を解決するための手段】
【0009】
1つの側面では、ストレージ装置は、制御部を備えてよい。前記制御部は、ストレージ装置のリソースを、性能保証対象の第1処理要求の処理に用いる第1リソースと前記第1処理要求とは異なる第2処理要求の処理に用いる第2リソースとに分割してよい。また、前記制御部は、前記第1処理要求の処理を所定順序で実行する複数のモジュールのそれぞれの処理の完了予定時刻を決定してよい。さらに、前記制御部は、前記複数のモジュールのそれぞれに対して、前記決定した完了予定時刻よりも前に前記第1リソースを用いた処理が完了した場合、前記決定した完了予定時刻の到来後に完了を通知させ、前記通知後に前記所定順序の次のモジュールの処理を開始させてよい。
【発明の効果】
【0010】
1つの側面では、ストレージ装置の処理性能を処理要求に応じて適切に制御することができる。
【図面の簡単な説明】
【0011】
【
図1】一実施形態の一例としてのストレージシステムのハードウェア(HW)構成例を示す図である。
【
図2】CM(Controller Module)のHW構成例を示す図である。
【
図3】ストレージ装置におけるIOの流れを説明するための図である。
【
図4】
図1に示すCMの機能構成例を示す図である。
【
図6】実行制御部による更新後の優先IOテーブルの一例を示す図である。
【
図8】IO受信処理の動作例を説明するためのフローチャートである。
【
図9】IO処理の動作例を説明するためのフローチャートである。
【発明を実施するための形態】
【0012】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【0013】
〔1〕一実施形態
〔1-1〕ストレージシステムの構成例
図1は一実施形態の一例としてのストレージシステム1のハードウェア(HW)構成例を示す図である。
図1に示すように、ストレージシステム1は、例示的に、ホスト装置2及びストレージ装置3を備えてよい。なお、ストレージシステム1は、複数のホスト装置2、及び、複数のストレージ装置3を備えてもよい。
【0014】
ホスト装置2は、ストレージ装置3にアクセスする情報処理装置又は上位装置の一例である。ホスト装置2としては、例えば、PC(Personal Computer)、サーバ、或いはメインフレーム等の種々のコンピュータが挙げられる。
【0015】
ホスト装置2では、例えば、ストレージ装置3に対して、アクセス要求、例えば処理要求(IO)を発行する。IOには、書込IO、読出IO等が含まれてよい。ホスト装置2は、ストレージ装置3からIOの応答として送信された結果、例えば書込完了を示す応答、読出データ等を受信する。
【0016】
ストレージ装置3は、ホスト装置2に対して記憶領域を提供し、ホスト装置2からのIOに応じた処理を行なう。一実施形態において、ストレージ装置3は、ホスト装置2からのIOに対して性能保証を行なってよい。
【0017】
図1に示すように、ストレージ装置3は、例示的に、複数(
図1では2つ)のCM(Controller Module)4-1及び4-2、並びに、複数(
図1では2つ)の記憶装置5-1及び5-2を備えてよい。なお、以下の説明において複数の装置を区別しない場合には、符号のハイフン“-”以降の数字を省略して表記する場合がある。例えばCM4-1及び4-2を区別しない場合には単にCM4と表記し、記憶装置5-1及び5-2を区別しない場合には単に記憶装置5と表記する。
【0018】
記憶装置5は、種々のデータやプログラム等を格納可能な記憶領域を備え、CM4からの要求に応じて記憶領域に対するデータ等の書き込み又は読み出し等の種々のアクセスを行なう。記憶装置5としては、例えば、HDD(Hard Disk Drive)等の磁気ディスク装置、SSD(Solid State Drive)等の半導体ドライブ装置、フラッシュメモリやROM(Read Only Memory)等の不揮発性メモリ等の種々のデバイスが挙げられる。
【0019】
なお、
図1の例では、2つのCM4に2つの記憶装置5が接続されるものとしたが、これに限定されるものではない。2つのCM4には、3つ以上の記憶装置5が接続されてもよく、また、CM4に接続された記憶装置5に、1以上の記憶装置5がカスケード状に接続(縦列接続)されてもよい。
【0020】
CM4は、ホスト装置2及び記憶装置5のそれぞれと接続され、ホスト装置2から発行される記憶装置5へのアクセス要求に対する制御を行なう制御装置の一例である。CM4として、コンピュータ、例えばサーバ等の情報処理装置が用いられてもよい。
図1の例では、CM4-2がホスト装置2と接続されているが、これに限定されるものではなく、CM4-1、又は、CM4-1及び4-2がホスト装置2と接続されてもよい。
【0021】
CM4は、記憶装置5-1及び5-2のそれぞれにアクセス可能であるが、記憶装置5ごとに主としてアクセスを行なうCM4(担当CM4)が設定されることがある。例えば、CM4-1が記憶装置5-1を担当し、CM4-2が記憶装置5-2を担当する場合、ホスト装置2から記憶装置5-1へのIOを受領したCM4-2は、担当CM4-1にIOを転送し、担当CM4-1からの応答をホスト装置2に送信してよい。
【0022】
また、CM4は、相互に情報の通信を行なうことで、ストレージ装置3の制御や複数の記憶装置5へのアクセス等に関する情報の共有(同期)又は通知等を行なうことができる。
【0023】
以下の説明において、ホスト装置2からIOを受領するCM4(
図1の例ではCM4-2)及び当該CM4内の各構成を示す場合、これらの先頭に「レシーブ」を付加して表記する場合がある。また、IOの対象のデータ(記憶領域)が存在するCM4(
図1の例ではCM4-1)及び当該CM4内の各構成を示す場合、これらの先頭に「ローカル」を付加して表記する場合がある。なお、CM4及び当該CM4内の各構成のそれぞれを「モジュール」と表記する場合がある。
【0024】
〔1-2〕CMのHW構成例
次に、
図1及び
図2を参照して、
図1に示すCM4のHW構成例を説明する。
【0025】
図1に示すように、ストレージ制御(IO制御)を実行するための構成に着目すると、CM4は、例示的に、CPU41、DIMM42、フラッシュモジュール(
図1では「フラッシュ」と表記する)43、並びに、IF44及び45を備えてよい。また、CM4は、SW46-1~46-3(46)、IOC47、EXP48、並びに、DMA49を備えてよい。CPUはCentral Processing Unitの略称であり、DIMMはDual Inline Memory Moduleの略称であり、IFはInterfaceの略称であり、SWはSwitchの略称である。IOCはIO Controllerの略称であり、EXPはExpanderの略称であり、DMAはDirect Memory Accessの略称である。
【0026】
図2はCM4のHW構成例を示す図である。
図2に示すように、CM4は、制御装置、換言すればコンピュータとしての構成に着目すると、例示的に、プロセッサ4a、メモリ4b、記憶部4c、IF部4d、及び、IO部4eを備えてよい。
【0027】
プロセッサ4aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ4aは、CM4内の各ブロックとバスで相互に通信可能に接続されてよい。演算処理装置としては、例えば、CPU、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路(IC)が用いられてもよい。
図1に示すCPU41は、プロセッサ4aの一例である。
【0028】
メモリ4bは、種々のデータやプログラムを格納するHWの一例である。メモリ4bとしては、例えばRAM(Random Access Memory)等の揮発性メモリが挙げられる。
図1に示すDIMM42は、メモリ4bの一例である。
【0029】
DIMM42は、記憶装置5から読み出したデータ又は記憶装置5に書き込むデータを記憶するキャッシュメモリ421の記憶領域と、1以上のバッファ422の記憶領域とを備えてよい。バッファ422は、他のCM4からDMA49により転送されたデータが書き込まれる「クロスバッファ」を含んでよい。
【0030】
記憶部4cは、種々のデータやプログラム等を格納するHWの一例である。記憶部4cとしては、例えばHDD等の磁気ディスク装置、SSD等の半導体ドライブ装置、不揮発性メモリ等のデバイスが挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM、PM(Persistent Memory)等が挙げられる。
図1に示すフラッシュ43は、キャッシュメモリ421よりも大容量且つ低速なフラッシュメモリモジュールであり、記憶部4cの一例である。
【0031】
記憶部4cは、CM4の各種機能の全部若しくは一部を実現するプログラム4f(ストレージ制御プログラム)を格納してもよい。プロセッサ4aは、例えば、記憶部4cに格納されたプログラム4fをメモリ4bに展開して実行することにより、CM4の機能を実現することができる。
【0032】
IF部4dは、ホスト装置2、他のCM4、記憶装置5、及び、ユーザの操作端末等との間の接続及び通信の制御等を行なう通信IFの一例である。IF部4dは、通信IFの種別に応じて、例えばLAN(Local Area Network)、SAS、FC(Fibre Channel)、インフィニバンド(登録商標)、PCIe等に準拠したアダプタを備えてよい。SASはSerial Attached SCSI(Small Computer System Interface)の略称であり、PCIeはPeripheral Component Interconnect-Expressの略称である。なお、プログラム4fは、図示しないネットワークからIF部4dを介してCM4にダウンロードされてもよい。
【0033】
図1に示すIF44及び45、SW46-1~46-3、IOC47、EXP48、並びに、DMA49は、IF部4dの一例である。
【0034】
IF44は、ホスト装置2との間の接続及び通信の制御等を行なう通信IFである。IF44としては、例えばCA(Channel Adaptor)が挙げられる。IF45は、例えば、2以上のCM4がCE(Controller Enclosure)に属する場合、CE間の通信を中継する中継装置との間の接続及び通信の制御等を行なう通信IFである。
【0035】
SW46-1~SW46-3は、それぞれ、IF44、CPU41及びIOC47の間、フラッシュ43及びCPU41間、IF45、CPU41及びDMA49の間、の通信を制御するデバイスである。また、SW46-3は、他のCM4のSW46-3と相互に通信可能に接続されてよい。
【0036】
IOC47は、記憶装置5に対するIOを制御するコントローラであり、入出力制御部の一例である。EXP48は、記憶装置5との間の接続及び通信の制御等を行なう通信IFである。
【0037】
DMA49は、DMAによりCM4のDIMM42間でデータの転送を行なうためのモジュールである。例えば、DMA49は、DMAにより、一方のCM4のキャッシュメモリ421のデータを、他方のCM4のバッファ422に書き込んでよい。
【0038】
図2の説明に戻り、IF部4dは、記録媒体4gに記録されたデータやプログラムを読み出す読取部を備えてもよい。読取部は、コンピュータ読取可能な記録媒体4gを接続又は挿入可能な接続端子又は装置を含んでよい。読取部としては、例えばUSB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。記録媒体4gにはプログラム4fが格納されてもよい。
【0039】
IO部4eは、マウス、キーボード、操作ボタン等の入力部、並びにディスプレイ等の出力部の少なくとも一部を含むことができる。例えば入力部は、ユーザによる設定の登録や変更、システムのモード選択(切替)等の各種操作やデータの入力等の作業に用いられてもよく、出力部は、ユーザによる設定の確認や各種通知等の出力に用いられてもよい。
【0040】
上述したCM4のHW構成は例示である。従って、CM4内でのHWの増減(例えば任意のブロックの追加や省略)、分割、任意の組み合わせでの統合、バスの追加又は省略等は適宜行なわれてもよい。
【0041】
〔1-3〕CMの機能構成例
図3は、ストレージ装置3におけるIOの流れを説明するための図である。
図3には、データを記憶装置5から読み出す処理のうちの最も処理に時間がかかるパターンの一例を示す。
【0042】
図3に示すように、ローカルCM4において、CPU41及びIOC47により、記憶装置5-1からIOで指定された対象データを読み出し、対象データをキャッシュメモリ421に書き込む(矢印(i)参照)。例えば、IOC47は、読み出した対象データに対してBCC(Block Check Character)チェック等の誤り検出を行なう。なお、対象データがキャッシュメモリ421上に存在する場合、上記(i)の処理はスキップされる。
【0043】
ローカルCM4において、DMA49がキャッシュメモリ421上の対象データに対してBCCチェック等の誤り検出を行ない、当該対象データを、キャッシュメモリ421からレシーブCM4のバッファ422に転送(PUT)する(矢印(ii)参照)。なお、(ii)における誤り検出は、CPU41又はIOC47が実行してもよく、IOC47が上記(i)で実行済みの場合は省略されてもよい。
【0044】
レシーブCM4において、CPU41及びIF44は、バッファ422に転送された対象データをホスト装置2へ転送する(矢印(iii)参照)。例えば、レシーブCM4のIF44は、対象データに対してBCCチェック等の誤り検出を行ない、誤り検出後に、対象データからBCCを取り除いたデータをホスト装置2へ転送する。
【0045】
このように、ストレージ装置3において、IOの処理にはCPU41、IF44、IOC47、DMA49等のリソースが利用される。このため、上述したように、ストレージ装置3において、全体の性能管理機能を有さない場合、各リソースにおける処理時間が制御されず、性能保証されない、又は、性能保証が制限される場合がある。
【0046】
そこで、一実施形態に係るCM4は、優先順位の高いIO用、及び、優先順位の低いIO用に、ストレージ装置3内のリソースを分割し、IO処理において、ストレージ装置3内の各処理に時間を設定する。
【0047】
これにより、CM4は、ストレージ装置3の全体の性能管理を行なうことができ、ストレージ装置3の処理性能をIOに応じて適切に制御することが可能となり、例えば、最低性能値を保証することが可能となる。
【0048】
以下、優先順位の高いIO、換言すれば性能保証したいIOを「優先IO」又は「保証IO」と表記し、優先順位の低い、換言すれば遅延が許容されるIOを「一般IO」又は「通常IO」と表記する場合がある。優先IOは、性能保証対象の第1処理要求の一例であり、一般IOは、第1処理要求とは異なる第2処理要求の一例である。
【0049】
例えば、CM4(CPU41)は、モジュールごとに、優先IOの処理(優先IO処理)を制御してよい。
【0050】
複数のモジュールとしては、例えば、データをキャッシュメモリ421に移動させる処理を行なうIOC47、データを他のCM4に移動させる処理を行なうDMA49、データを加工する処理を行なうCPU41又はIF44、等が挙げられる。CPU41は、各モジュール(「実行モジュール」又は「担当モジュール」と称されてもよい)に対して処理の実行を指示することで、各実行モジュールが指示に応じて処理を実行してよい。
【0051】
次に、
図4を参照して、一実施形態に係るCM4の機能構成例について説明する。
図4は
図1に示すCM4の機能構成例を示す図である。なお、
図4に示す構成は、レシーブCM4に備えられてもよいし、レシーブCM4及びローカルCM4の双方に備えられてもよく、或いは、レシーブCM4及びローカルCM4に分散して備えられてもよい。
【0052】
図4に示すように、CM4は、機能構成として、例示的に、メモリ部11、受付部12、実行制御部13、及び、処理時間更新部14を備えてよい。メモリ部11は、例えば、DIMM42が有する記憶領域により実現されてよい。受付部12、実行制御部13、及び、処理時間更新部14は、制御部又はIOマネージャの一例であり、CPU41及びIOC47の一方は双方が、DIMM42に展開された制御プログラムを実行することにより実現されてよい。
【0053】
メモリ部11は、ストレージ装置3の処理性能の制御に用いられる種々の情報を記憶する記憶領域である。メモリ部11は、例えば、優先IOテーブル11a及びIO管理テーブル11bを記憶してよい。以下の説明では、便宜上、優先IOテーブル11a及びIO管理テーブル11bのそれぞれをテーブル形式のデータとして説明するが、これに限定されるものではなく、DB(Database)又は配列等の種々のデータ形式であってよい。
【0054】
受付部12は、ホスト装置2からIOを受け付け、IOに基づき優先IOテーブル11aにエントリを作成する。優先IOテーブル11aは、優先IOを管理するためのテーブルであり、例えば、優先IO処理のスケジュールに関する情報を含んでよい。
【0055】
図5は、優先IOテーブル11aの一例を示す図である。
図5に示すように、優先IOテーブル11aは、例示的に、「IO」、「受信時刻」、「応答時刻」、「アドレス」、「サイズ」、「IO種別」、及び、複数地点における「完了時刻」の項目を含んでよい。
【0056】
「IO」は、IO、例えば優先IOを識別するための識別情報の一例である。「受信時刻」は、IF44又はCPU41において優先IOを受信した時刻である。「応答時刻」は、優先IOの性能保証の条件に応じた応答時間(制限時間)を加味した応答の目標(予定)時刻である。「アドレス」及び「サイズ」は、優先IOの対象データの格納アドレス及びサイズである。「IO種別」は、優先IOの種別、例えば書込要求(W:Write)及び読出要求(R:Read)の別を示す。
【0057】
複数地点における「完了時刻」は、完了予定時刻の一例であり、優先IOを処理する際にデータが移動する経路(データ移動経路)における各地点、例えばモジュールごとに、各地点での処理が完了する予定(目標)時刻を示す。
【0058】
例えば、優先IOテーブル11aの「応答時刻」及び各「完了時刻」には、受信時刻“xxx”からの相対的な時刻“xxx+yyy”が設定されてよい。“yyy”は、ストレージ装置3全体、又は、各モジュールにおける優先IO処理の処理時間の推定値である。処理時間の推定値は、予定処理時間の一例である。推定値は、予め算出された所定値であってもよいし、後述するように過去の処理実績に基づき算出される可変な値であってもよい。
【0059】
受付部12は、例えば、IF44がホスト装置2から受信したIO(例えば読出要求)に基づき、受信したIOが優先IO(保証IO)の対象か否かを判定する。
【0060】
IOが優先IOであるか否かは、予め設定された種々の条件に基づき決定されてよい。例えば、優先IOは、所定のホスト装置2からのIO、所定の記憶領域(例えばボリューム)に対するIO、所定の指示(例えばフラグ又はコマンド等)が含まれるIO、等に制限されてもよい。以下、所定のボリュームに対するIOが優先IOとなる場合を例に挙げて説明する。
【0061】
受付部12は、読出要求の対象ボリュームが優先IO(保証IO)の対象となるボリュームである場合、当該IO(優先IO)の情報を優先IOテーブル11aの新たなエントリに追加する。例えば、受付部12は、優先IOに識別番号(
図5の例では「保証IO-001」)を割り当て、優先IOテーブル11aの「IO」に設定する。
【0062】
なお、優先IOテーブル11a内の優先IOの数、例えば、有効なエントリ数(一例として識別番号)には上限が設定されてもよい。受付部12は、優先IOの数が上限を超える場合、上限を超えることになる優先IOの受信を拒否してよい。例えば、受付部12は、ホスト装置2に対して、受信拒否を示すエラー応答を送信してよい。或いは、受付部12は、優先IOを一般IOに変更してもよい。
【0063】
また、受付部12は、IOの受信ログ及び受信したIOに基づき、「受信時刻」、「アドレス」、「サイズ」、「IO種別」を優先IOテーブル11aのエントリに設定してよい。さらに、受付部12は、予め設定される応答目標時間、一例として“+1000”[ms]を「受信時刻」に加算した値を、「応答時刻」として優先IOテーブル11aのエントリに設定してよい。
【0064】
また、受付部12は、受信したIOに基づき、データ移動経路を確定する。データ移動経路は、例えば、「アドレス」及び「IO種別」、対象データがキャッシュメモリ421に存在するか(オンキャッシュか)否か、等に基づき、既知の種々の手法により確定されてよい。以下、データ移動経路が下記に示す経路(例えば
図3に示す経路)である場合を例に挙げて説明する。
ローカル記憶装置5⇒ローカルキャッシュメモリ421⇒レシーブバッファ422⇒レシーブIF44(⇒ホスト装置2)
【0065】
上記経路において、下記に示す実行モジュールが優先IO処理を実行するものとする。
・ローカル記憶装置5⇒ローカルキャッシュメモリ421の区間
担当:ローカルIOC47
・ローカルキャッシュメモリ421⇒レシーブバッファ422の区間
担当:ローカルCM4
・レシーブバッファ422⇒レシーブIF44の区間
担当:レシーブCM4
【0066】
受付部12は、上記経路における実行モジュールのそれぞれにおける、優先IO処理の完了(目標)時刻を決定し、それぞれの時刻を「完了時刻@{IOC/(Local CM)/(Receive CM)}」として優先IOテーブル11aのエントリに設定してよい。なお、各実行モジュールにおける処理時間(期間)は、予め決定されてよい。
【0067】
例えば、受付部12は、現在時刻に対して、経路上の処理順序が早い実行モジュールから順に当該実行モジュールでの処理時間を加算していくことで、各実行モジュールにおけるそれぞれの完了時刻を算出してよい。
【0068】
一例として、IOC47での処理時間が“500”[ms]、ローカルCM4での処理時間が“200”[ms]、レシーブCM4での処理時間が“100”[ms]の場合、
図5に示す各実行モジュールの完了時刻は、下記のように算出されてよい。
「完了時刻@IOC」=「受信時刻」+“500”
「完了時刻@(Local CM)」=「受信時刻」+“500”+“200”
「完了時刻@(Receive CM)」=「受信時刻」+“500”+“200”+“100”
【0069】
なお、
図5に示す優先IOテーブル11aは、上述した3種類の「完了時刻」の項目を含むものとしたが、これに限定されるものではない。例えば、優先IOテーブル11aは、ストレージ装置3において発生し得る最長の経路上の実行モジュールごとに「完了時刻」の項目を含んでもよく、この場合、優先IOの処理で実行されない実行モジュールには“+0”が設定されてよい。或いは、経路ごとに優先IOテーブル11aが備えられてもよく、この場合、各優先IOテーブル11aは、対応する経路上の実行モジュールの「完了時刻」の項目を含んでよい。
【0070】
実行制御部13は、実行モジュールごとにIO処理を実行するリソースの設定(制限)を行なう。例えば、実行制御部13は、以下のように、優先IOを処理する実行モジュールのリソースを確保してよい。なお、リソースとは、実行モジュールの処理資源、例えばIOの処理に用いる帯域、時間等であってよく、リソースの確保とは、優先IOの処理に用いる帯域、時間、一般IOとの間の処理回数の割合、等を確保することを含んでよい。
【0071】
・各実行モジュールに処理の同時実行の上限設定が存在する場合。
このような実行モジュールとしては、例えば、記憶装置5に対してコマンド処理を実行するIOC47等が挙げられる。実行制御部13は、各実行モジュールに対して、一般IOを処理(一般IO処理)するリソースの上限値を、全体のX(Xは0~100の数値)%に設定してよい。以下、Xが“75”であるものとする。この場合、優先IO処理のリソースには、(100-X)%、例えば25%が確保される。
【0072】
・同時実行をサポートしない(1処理ずつ逐次処理する)実行モジュールの場合。
このような実行モジュールとしては、例えば、DMA転送等の1処理ずつの逐次処理を行なうDMA49等が挙げられる。実行制御部13は、当該実行モジュールに対して、優先IO処理を行なう場合、(100-X)%の割合で優先IO処理が実行されるようにリソースを確保してよい。例えば、実行制御部13は、1処理ずつの逐次処理を行なうDMA49に対して、優先IO処理が25%の場合、一般IO処理を3回実行すると、優先IO処理を1回実行するようにリソースの割合を設定する。
【0073】
このように、実行制御部13は、ストレージ装置3のリソースを、優先IOの処理に用いる第1リソースと一般IOの処理に用いる第2リソースとに分割してよい。換言すれば、実行制御部13は、優先IOに対する性能保証の条件に応じて、リソースの分割条件、例えば時間による分割条件を設定してよい。各実行モジュールは、実行制御部13により指定された分割条件に従い、優先IO処理及び一般IO処理を実行してよい。
【0074】
以下の説明では、実行モジュールが優先IO処理を実行する場合を例に挙げて説明するが、実行制御部13による制御によって、リソースの分割条件に従ったタイミングで優先IO処理が実行されるものとする。
【0075】
実行制御部13は、レシーブCM4において、受付部12が記録した優先IOテーブル11aのエントリの情報のうち、例えば、「IO」の「アドレス」、「サイズ」、「IO種別」、及び、複数の「完了時刻」の情報を、各実行モジュールに送信する。また、実行制御部13は、経路上の起点となる実行モジュールに対して処理の実行を指示してもよい。
【0076】
実行制御部13からエントリの情報を受信した実行モジュールは、リソースの分割条件、及び、経路上の実行順序に従い、優先IO処理を実行する。各実行モジュールが実行する優先IO処理の内容は、
図4に示す処理と同様である。
【0077】
ここで、各実行モジュールは、自身の「完了時刻」の到来前に優先IO処理が完了した場合、「完了時刻」の到来まで完了応答の送信を待ち合わせ、自身の「完了時刻」の到来後に実行制御部13に完了応答を行なう。
【0078】
なお、実行モジュールは、自身の「完了時刻」の到来までに優先IO処理が完了しなかった場合、優先IO処理の完了後に実行制御部13に完了応答を行なう。このとき、実行モジュールは、内部エラーとして、例えば優先IO処理の実際の完了時刻をエラーログ等に記録してよい。
【0079】
実行制御部13は、完了応答を受信すると、経路上の次の実行モジュールに処理の実行を指示する。このように、実行制御部13への完了応答の送信は、次の実行モジュールへの引継通知と捉えることができる。なお、完了応答の送信先は、レシーブCM4で実行される実行制御部13であってもよいし、完了応答を送信する実行モジュールが属するCM4の実行制御部13であってもよい。
【0080】
一例として、
図3に示す経路における各実行モジュールの優先IO処理の動作例を、完了応答の通知の観点で説明する。
【0081】
(i)ローカルIOC47は、記憶装置5から対象データを読み出し、BCCチェックを行ない、完了時刻“xxx+500”(
図5参照)が到来すると、IOマネージャ、例えば実行制御部13に完了応答を通知する。
【0082】
(ii)ローカルDMA49は、ローカルCM4のキャッシュメモリ421上に上記(i)の処理で書き込まれたデータに対してBCCチェックを行ない、当該データをレシーブCM4のバッファ422に転送(PUT)する。ローカルCM4(例えばCPU41又はDMA49)は、完了時刻“xxx+700”(
図5参照)が到来すると、IOマネージャ、例えば実行制御部13に完了応答を通知する。
【0083】
(iii)レシーブCM4のIF44は、レシーブバッファ422に転送されたデータのBCCチェックを行ない、当該データからBCCを除去したデータをホスト装置2へ転送する。レシーブCM4(例えばCPU41又はIF44)は、完了時刻“xxx+800”(
図5参照)が到来すると、IOマネージャ、例えば実行制御部13に完了応答を通知する。
【0084】
実行制御部13は、実行モジュールから受信した完了応答に基づき、優先IOテーブル11aを更新する。優先IOテーブル11aは、受付部12により目標値が設定されているが、実行制御部13による更新により、目標値に加えて、実績値が設定されてよい。なお、実行制御部13は、目標値が設定されている優先IOテーブル11aの更新に代えて、実績値を設定する新たなテーブルを作成してもよい。
【0085】
図6は、実行制御部13による更新後の優先IOテーブル11aの一例を示す図である。
図6に示すように、更新後の優先IOテーブル11aには、「応答時刻」及び各実行モジュールでの「完了時刻」において、受付部12が設定した目標値(「目標」と表記)に加えて、実績値(「実績」と表記)が追加される。
【0086】
実行制御部13は、実行モジュールから完了応答を受信した時刻を、各実行モジュールから完了応答を受信する都度、又は、ホスト装置2への応答が完了した後に、優先IOテーブル11aに設定してよい。或いは、各実行モジュールが、実行制御部13を介して完了時刻(実績)を優先IOテーブル11aに書き込んでもよい。実行モジュールから完了応答を受信した時刻には、経路の最後の実行モジュールによるホスト装置2への応答時刻が含まれてよい。
【0087】
実行制御部13による優先IOテーブル11aへの実績値(例えば応答時刻)の記録により、優先IOがホスト装置2に確実に応答されたことを記録に残すことができる。
【0088】
このように、実行制御部13によれば、複数のモジュールのそれぞれに対して、決定した完了時刻よりも前に優先IO用のリソースを用いた処理が完了した場合、決定した完了時刻の到来後に完了を通知させ、通知後に経路上の次のモジュールの処理を開始させる。
【0089】
これにより、優先IO用に確保したリソースを用いて、実行モジュールごとの処理完了時刻を適切に制御できるため、優先IOの性能保証の精度を向上させることができる。
【0090】
また、実行制御部13によれば、複数の経路のそれぞれに応じた実行モジュールの予定処理時間を算出し、現在時刻から完了予定時刻までの残時間が、予定処理時間以下になった優先IOの処理を開始させる。これにより、時間のかかる優先IOの処理と短時間で完了する優先IOの処理とが混在する場合であっても、各経路の処理を並行して実行することができる。
【0091】
なお、ここまで、受付部12が1つの優先IOを受信し、実行制御部13が1つの優先IOについて、各モジュールの優先IO処理を制御(例えば優先IO処理の実行タイミングを制御)するものとしたが、これに限定されるものではない。以下、CM4(IOマネージャ)が複数の優先IOに係る優先IO処理を制御する場合の動作例を説明する。
【0092】
実行制御部13は、優先IOテーブル11aに複数の優先IOが設定されている場合、IO管理テーブル11bを用いて、複数の優先IOのそれぞれの優先IO処理の実行を制御してよい。優先IOテーブル11aに複数の優先IOが設定されている場合とは、例えば、優先IOテーブル11aに、優先IOの受信時刻と応答時刻(目標)との間の期間の少なくとも一部が重複(オーバラップ)する優先IOが存在する場合であってよい。
【0093】
図7は、IO管理テーブル11bの一例を示す図である。IO管理テーブル11bは、複数の優先IOを管理するためのテーブルである。
図7に示すように、IO管理テーブル11bは、例示的に、「No.」、「受信時刻」、「応答時刻(目標)」、「応答時刻までの残時間」、「経路パターン(予定処理時間)」、及び、「状態」の項目を含んでよい。
【0094】
「No.」は、優先IOを識別するための識別情報の一例である。「No.」には、優先IOテーブル11aの「IO」と同じ識別情報が設定されてもよい。「受信時刻」及び「応答時刻(目標)」は、それぞれ、優先IOテーブル11aの「受信時刻」及び「応答時刻」(目標値)と同じ時刻である。
【0095】
「応答時刻までの残時間」は、「応答時刻(目標)」から現在時刻を減じた時間である。例えば、現在時刻が“22:11.33.600”である場合、「No.」“1”の優先IOの残時間は、「応答時刻(目標)」“22:11:32.900+1.000”-“22:11.33.600”=“22:11:33.900”-“22:11.33.600”=“300”[ms]となる。
【0096】
「経路パターン(予定処理時間)」のうち、「経路パターン」は、優先IOについて確定されたデータ移動経路を示し、「(予定処理時間)」は、当該経路上における各実行モジュールの処理時間の合計を示す。
【0097】
以下、「No.」“1”、“2”、“3”の優先IOのそれぞれの経路パターンが“Read_A”、“Read_C”、“Read_B”である場合を例に挙げて説明する。“Read_A”、“Read_B”“Read_C”のそれぞれの「経路パターン」の経路、及び、当該経路における各担当モジュールの処理時間の一例を以下に示す。
【0098】
(経路パターン“Read_A”)
経路:ローカル記憶装置5⇒ローカルキャッシュメモリ421⇒レシーブバッファ422⇒レシーブIF44(⇒ホスト装置2)
予定処理時間:
・ローカル記憶装置5⇒ローカルキャッシュメモリ421の区間
担当の処理時間:“500”[ms](ローカルIOC47)
・ローカルキャッシュメモリ421⇒レシーブバッファ422の区間
担当の処理時間:“200”[ms](ローカルCM4)
・レシーブバッファ422⇒レシーブIF44の区間
担当の処理時間:“100”[ms](レシーブCM4)
【0099】
経路パターン“Read_A”の場合、「(予定処理時間)」は、“500”+“200”+“100”=“800”[ms]となる。
【0100】
(経路パターン“Read_B”)
経路:レシーブ記憶装置5⇒レシーブキャッシュメモリ421⇒レシーブIF44(⇒ホスト装置2)
予定処理時間:
・レシーブ記憶装置5⇒レシーブキャッシュメモリ421の区間
担当の処理時間:“500”[ms](レシーブIOC47)
・レシーブキャッシュメモリ421⇒レシーブIF44の区間
担当の処理時間:“100”[ms](レシーブCM4)
【0101】
経路パターン“Read_B”の場合、対象データはレシーブCM4が担当する記憶装置5に存在するため、経路パターン“Read_A”のDMAによる転送が不要となる。この場合、「(予定処理時間)」は、“500”+“100”=“600”[ms]となる。
【0102】
(経路パターン“Read_C”)
経路:レシーブキャッシュメモリ421⇒レシーブIF44(⇒ホスト装置2)
予定処理時間:
・レシーブキャッシュメモリ421⇒レシーブIF44の区間
担当の処理時間:“100”[ms](レシーブCM4)
【0103】
経路パターン“Read_C”の場合、対象データはレシーブCM4のキャッシュメモリ421に存在する(オンキャッシュである)ため、経路パターン“Read_B”のレシーブ記憶装置5からキャッシュメモリ421への読み出しが不要となる。この場合、「(予定処理時間)」は、“100”[ms]となる。
【0104】
なお、他の経路パターンとして、以下の例が挙げられる。
【0105】
(経路パターン“Read_D”)
経路:レシーブフラッシュ43⇒レシーブキャッシュメモリ421⇒レシーブIF44(⇒ホスト装置2)
予定処理時間:
・レシーブフラッシュ43⇒レシーブキャッシュメモリ421の区間
担当の処理時間:“300”[ms](レシーブIOC47)
・レシーブキャッシュメモリ421⇒レシーブIF44の区間
担当の処理時間:“100”[ms](レシーブCM4)
【0106】
経路パターン“Read_D”の場合、対象データはレシーブCM4のフラッシュ43に存在する。この場合、「(予定処理時間)」は、“300”+“100”=“400”[ms]となる。
【0107】
IO管理テーブル11bの説明に戻り、「状態」は、優先IO処理の開始タイミングを示す指標であり、一例として、「(予定処理時間-残時間)/予定処理時間」[%]により算出されてよい。
【0108】
実行制御部13は、優先IOテーブル11aに複数の優先IOが設定されている場合、IO管理テーブル11bを生成してよい。例えば、実行制御部13は、IO管理テーブル11bに複数の優先IOの数のエントリを作成し、優先IOテーブル11aに基づき「No.」、「受信時刻」、「応答時刻(目標)」を設定してよい。また、実行制御部13は、「応答時刻までの残時間」、「経路パターン(予定処理時間)」、及び、「状態」を算出し、「応答時刻までの残時間」、及び、「状態」の項目の値を定期的に更新してよい。
【0109】
なお、実行制御部13は、IO管理テーブル11bの作成に代えて、優先IOテーブル11aに、「応答時刻までの残時間」、「経路パターン(予定処理時間)」、及び、「状態」の項目を追加してもよい。この場合、実行制御部13は、IO管理テーブル11bの作成を省略し、これらの項目を追加した優先IOテーブル11aを用いて複数の優先IOのそれぞれの優先IO処理の実行を制御してよい。
【0110】
実行制御部13は、IO管理テーブル11bの「状態」の値に応じた優先IOの処理優先度に基づき、優先IOを選択し、選択した優先IOに係る優先IO処理を開始する。例えば、実行制御部13は、選択した優先IOの経路の最初の実行モジュールに優先IO処理の開始を指示してよい。
【0111】
例えば、実行制御部13は、IO管理テーブル11bの「状態」が“0”%以上の優先IOを選択し、当該優先IOの優先IO処理を開始してよい。このとき、実行制御部13は、選択した優先IOの「状態」に優先IO処理の開始を示す“Start”を設定してよい。すなわち、実行制御部13は、「状態」が“0”%以上の優先IOは、“0”%未満(マイナス)の優先IOよりも処理優先度が高いと判断してよい。
【0112】
また、「状態」が“0”%以上の未選択の優先IOが複数存在する場合、実行制御部13は、IO管理テーブル11bの「状態」の値が大きい優先IOほど処理優先度が高く、「状態」の値が小さい優先IOほど処理優先度が低いと判断してよい。一例として、実行制御部13は、「状態」が“0”%以上の優先IOのうちの、値が最も大きい優先IOを選択してよい。
【0113】
一方、実行制御部13は、「状態」が“0”%未満(マイナス)である優先IOについては、処理優先度を無効と判断してよく、或いは、「状態」が“0”%以上である他の優先IOよりも処理優先度が低いと判断してよい。この場合、実行制御部13は、当該優先IOの「状態」に処理開始の待機を示す“Wait”を設定してよい。なお、実行制御部13は、「状態」に“Wait”が設定された優先IOについて、時間経過により「状態」が“0”%以上となった場合に、処理優先度に基づき当該優先IOを選択してよい。
【0114】
図7の例では、実行制御部13は、「状態」が“70”%である「No.」“1”の優先IO処理を最優先として開始し、次いで、「状態」が“0”%である「No.」“3”の優先IO処理を開始する。また、実行制御部13は、「状態」がマイナス値の“-400”%である「No.」“2”の優先IOについては、時間経過により「状態」が“0”%になるまでは処理の開始を保留する。なお、実行制御部13は、「No.」“2”の優先IOの処理を開始する前に、他に予定処理時間の大きな処理(優先IO)が追加された場合、当該追加された処理を優先する。
【0115】
以上のように、受付部12及び実行制御部13によれば、実行モジュールの各々の
ストレージ装置の処理性能を処理要求に応じて適切に制御することができる。
【0116】
処理時間更新部14は、各実行モジュールの処理時間の更新を行なう。例えば、処理時間更新部14は、実行制御部13が優先IOテーブル11aに記録した各実行モジュールの処理時間の実績値(例えば各実行モジュールの完了時刻)を、「完了時刻(目標)」を最適化するために利用してよい。
【0117】
例えば、処理時間更新部14は、優先IOテーブル11a内の実行モジュールの「完了時刻」の実績が、所定回数連続して、目標よりも小さい閾値時間以内に完了しているかを判定し、完了している場合、処理時間の目標値を減少させるように更新してよい。減少した目標値は、受付部12により、次回以降に当該実行モジュールの「完了時刻」に設定される。
【0118】
一例として、処理時間更新部14は、
図6に示す「完了時刻@IOC」の実績が所定回数連続して“+450”以内で完了していることを検出した場合、「完了時刻@IOC」の目標を、“+500”から減少させる。例えば、処理時間更新部14は、「完了時刻@IOC」の目標を、閾値時間“+450”と現在の目標“+500”との間の“+490”に設定する。
【0119】
他の例として、処理時間更新部14は、
図6に示す「完了時刻@IOC」の全ての実績のうち、“+450”以内で完了している割合が閾値、例えば“99”%以上であることを検出した場合、「完了時刻@IOC」の目標を、“+500”から減少、例えば“+475”に設定してもよい。
【0120】
このように、処理時間更新部14は、優先IOテーブル11aにおいて、参考情報として記録された実行モジュールの完了時刻の実績に基づき、実行モジュールでの待ち合わせを行なう時間を減少させ、実時間に近付けることができる。すなわち、最終的にレシーブCM4がホスト装置2に応答するまでのマージンを獲得することができる。
【0121】
これにより、実行モジュール(例えばIOC47)に適切な処理時間(目標)を設定できるため、他の実行モジュールにおいて処理時間(目標)の超過が発生した場合にも、応答時刻の目標値を達成できる可能性を高めることができる。従って、目標とする応答時刻以前の応答率を向上させることができる。
【0122】
〔1-4〕ストレージシステムの動作例
次に、一実施形態に係るストレージシステム1の動作例を説明する。
【0123】
〔1-4-1〕IO受信処理
図8は、IO受信処理の動作例を説明するためのフローチャートである。
図8に示すように、受付部12は、IF44がIO要求を受信すると(ステップS1)、IOが優先(保証)IOか否か、例えばアクセス先が保証範囲か否かを判定する(ステップS2)。
【0124】
アクセス先が保証範囲外の場合(ステップS2でNO)、実行制御部13は、一般IO用に確保したリソースを用いて一般IO処理を実行し(ステップS3)、処理が終了する。
【0125】
アクセス先が保証範囲内の場合(ステップS2でYES)、受付部12は、優先IOテーブル11aにエントリを作成し、IO要求に番号を割り当て(ステップS4)、当該エントリにIOの受信時刻及び応答時刻(目標)を登録する(ステップS5)。
【0126】
受付部12は、IO要求の経路を特定(選択)し(ステップS6)、経路中の各実行モジュールの処理時間(目標)をエントリに登録して(ステップS7)、処理が終了する。例えば、受付部12は、ステップS7において、実行モジュールごとに、受信時刻に処理時間(目標)を累積加算した完了時刻(目標)をエントリに登録してよい。
【0127】
〔1-4-2〕IO処理
図9は、IO処理の動作例を説明するためのフローチャートである。実行制御部13は、優先IOテーブル11aに基づき実行モジュールのそれぞれに処理の実行に関する情報を通知する。また、以下の処理では、各実行モジュールは、優先IO用に確保されたリソースを用いて優先IO処理を行なう。なお、以下の説明では、優先IOが読出要求である場合を例に挙げる。
【0128】
・経路“Read_A”の処理の場合
図9に示すように、実行する優先IOのアクセス先がレシーブ側ではない(ローカル側である)場合(ステップS11、ステップS11でNO)、ローカルIOC47が記憶装置5からデータを読み出し、キャッシュメモリ421に格納する(ステップS12)。IOC47は、実行制御部13を介して完了時刻(実績)を優先IOテーブル11aに記録し(ステップS13)、完了時刻(目標)が到来するまで待機する(ステップS14、ステップS14でNO)。
【0129】
完了時刻(目標)が到来すると(ステップS14でYES)、ローカルCM4がキャッシュメモリ421からDMA49を介してレシーブバッファ422にデータを転送する(ステップS15)。ローカルCM4は、完了時刻(実績)を記録し(ステップS16)、完了時刻(目標)が到来するまで待機する(ステップS17、ステップS17でNO)。
【0130】
完了時刻(目標)が到来すると(ステップS17でYES)、レシーブCM4がバッファ422からデータを読み出しIF44に転送する(ステップS18)。レシーブCM4は、完了時刻(実績)を記録し(ステップS19)、完了時刻(目標)が到来するまで待機する(ステップS20、ステップS20でNO)。
【0131】
完了時刻(目標)が到来すると(ステップS20でYES)、レシーブIF44がデータをホスト装置2に転送する(ステップS21)。レシーブIF44は、応答時刻(実績)を記録し(ステップS22)、処理が終了する。
【0132】
・経路“Read_B”の処理の場合
実行する優先IOのアクセス先がレシーブ側であり(ステップS11でYES)、且つ、アクセス先がキャッシュメモリ421でもフラッシュ43でもない場合(ステップS23、ステップS23でNO、ステップS24、ステップS24でNO)、処理がステップS27に移行する。
【0133】
ステップS27において、レシーブIOC47が記憶装置5からデータを読み出し、キャッシュメモリ421に格納する。IOC47は、実行制御部13を介して完了時刻(実績)を優先IOテーブル11aに記録し(ステップS28)、完了時刻(目標)が到来するまで待機する(ステップS29、ステップS29でNO)。
【0134】
完了時刻(目標)が到来すると(ステップS29でYES)、処理がステップS18に移行する。
【0135】
・経路“Read_C”の処理の場合
実行する優先IOのアクセス先がレシーブ側であり(ステップS11でYES)、且つ、アクセス先がキャッシュメモリ421に存在する場合(ステップS23でYES)、処理がステップS18に移行する。
【0136】
・経路“Read_D”の処理の場合
実行する優先IOのアクセス先がレシーブ側であり(ステップS11でYES)、且つ、アクセス先がキャッシュメモリ421に存在せず(ステップS23でNO)、フラッシュ43に存在する場合(ステップS24でYES)、処理がステップS25に移行する。
【0137】
ステップS25において、レシーブCM4がフラッシュ43からデータを読み出し、キャッシュメモリ421に格納する。レシーブCM4は、実行制御部13を介して完了時刻(実績)を優先IOテーブル11aに記録し(ステップS26)、処理がステップS29に移行する。
【0138】
〔2〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
【0139】
例えば、
図4に示すCM4の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。
【0140】
〔3〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【0141】
(付記1)
ストレージ装置のリソースを、性能保証対象の第1処理要求の処理に用いる第1リソースと前記第1処理要求とは異なる第2処理要求の処理に用いる第2リソースとに分割し、
前記第1処理要求の処理を所定順序で実行する複数のモジュールのそれぞれの処理の完了予定時刻を決定し、
前記複数のモジュールのそれぞれに対して、前記決定した完了予定時刻よりも前に前記第1リソースを用いた処理が完了した場合、前記決定した完了予定時刻の到来後に完了を通知させ、前記通知後に前記所定順序の次のモジュールの処理を開始させる、
制御部、を備える
ストレージ装置。
【0142】
(付記2)
前記制御部は、
前記第1処理要求の処理におけるデータの転送経路を特定し、
前記転送経路に応じて、前記複数のモジュールのそれぞれの処理にかかる予定処理時間を決定し、
複数の前記予定処理時間と、前記第1処理要求の受信時刻とに基づき、前記複数のモジュールのそれぞれの処理の完了予定時刻を決定する、
付記1に記載のストレージ装置。
【0143】
(付記3)
前記制御部は、
前記複数のモジュールのそれぞれの処理の完了時刻を取得し、
前記複数のモジュールのそれぞれについて、前記完了時刻と、前記完了予定時刻とに基づき、前記予定処理時間を更新する、
付記2に記載のストレージ装置。
【0144】
(付記4)
前記制御部は、
複数の前記第1処理要求を受信した場合、前記複数の第1処理要求のそれぞれの処理にかかる予定処理時間を算出し、
現在時刻から前記複数の第1処理要求のそれぞれの完了予定時刻までの残時間が、前記予定処理時間以下になった第1処理要求の処理を開始させる、
付記1~付記3のいずれか1項に記載のストレージ装置。
【0145】
(付記5)
ストレージ装置のリソースを、性能保証対象の第1処理要求の処理に用いる第1リソースと前記第1処理要求とは異なる第2処理要求の処理に用いる第2リソースとに分割し、
前記第1処理要求の処理を所定順序で実行する複数のモジュールのそれぞれの処理の完了予定時刻を決定し、
前記複数のモジュールのそれぞれに対して、前記決定した完了予定時刻よりも前に前記第1リソースを用いた処理が完了した場合、前記決定した完了予定時刻の到来後に完了を通知させ、前記通知後に前記所定順序の次のモジュールの処理を開始させる、
処理をコンピュータが実行する、ストレージ制御方法。
【0146】
(付記6)
前記第1処理要求の処理におけるデータの転送経路を特定し、
前記転送経路に応じて、前記複数のモジュールのそれぞれの処理にかかる予定処理時間を決定し、
複数の前記予定処理時間と、前記第1処理要求の受信時刻とに基づき、前記複数のモジュールのそれぞれの処理の完了予定時刻を決定する、
処理を前記コンピュータが実行する、付記5に記載のストレージ制御方法。
【0147】
(付記7)
前記複数のモジュールのそれぞれの処理の完了時刻を取得し、
前記複数のモジュールのそれぞれについて、前記完了時刻と、前記完了予定時刻とに基づき、前記予定処理時間を更新する、
処理を前記コンピュータが実行する、付記6に記載のストレージ制御方法。
【0148】
(付記8)
複数の前記第1処理要求を受信した場合、前記複数の第1処理要求のそれぞれの処理にかかる予定処理時間を算出し、
現在時刻から前記複数の第1処理要求のそれぞれの完了予定時刻までの残時間が、前記予定処理時間以下になった第1処理要求の処理を開始させる、
処理を前記コンピュータが実行する、付記5~付記7のいずれか1項に記載のストレージ制御方法。
【符号の説明】
【0149】
1 ストレージシステム
11 メモリ部
11a 優先IOテーブル
11b IO管理テーブル
12 受付部
13 実行制御部
14 処理時間更新部
2 ホスト装置
3 ストレージ装置
4、4-1、4-2 CM
4a プロセッサ
4b メモリ
4c 記憶部
4d IF部
4e IO部
4f 制御プログラム
4g 記録媒体
41 CPU
42 DIMM
421 キャッシュメモリ
422 バッファ
43 フラッシュ
44、45 IF
46-1~46-3 SW
47 IOC
48 EXP
49 DMA
5、5-1、5-2 記憶装置