JP5555370B2 - コマンドの起動を制御するストレージ装置及びその方法 - Google Patents

コマンドの起動を制御するストレージ装置及びその方法 Download PDF

Info

Publication number
JP5555370B2
JP5555370B2 JP2013502033A JP2013502033A JP5555370B2 JP 5555370 B2 JP5555370 B2 JP 5555370B2 JP 2013502033 A JP2013502033 A JP 2013502033A JP 2013502033 A JP2013502033 A JP 2013502033A JP 5555370 B2 JP5555370 B2 JP 5555370B2
Authority
JP
Japan
Prior art keywords
command
processor unit
mppk
area
qos
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013502033A
Other languages
English (en)
Other versions
JP2013524334A (ja
Inventor
憲 所
雄太 梶原
寧彦 山口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2013524334A publication Critical patent/JP2013524334A/ja
Application granted granted Critical
Publication of JP5555370B2 publication Critical patent/JP5555370B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ストレージ装置におけるコマンドの起動を制御する技術に関する。
コマンドに設定されている優先度を基にコマンドの起動を制御するストレージ装置が知られている。具体的には、例えば、Qos(Quality of service)制御に基づき発行されたI/Oコマンドを起動するストレージ装置が知られている。この種のストレージ装置は、優先度が付与されたI/O(Input/Output)コマンドを受信し、そのI/Oコマンドに付与されている優先度を基に、I/Oコマンドの起動を制御する(例えば、特許文献1)。
特開2010−102458号公報
ストレージ装置が有する通信インタフェース装置は、一般に、ポートとそのポートに関連付けられたMP(Micro Processor)とを有する。この場合、或るポートが受信したI/Oコマンドは、そのポートに関連付けられているMPのみによって起動される。
このため、複数のポートのうちの1つのポートにI/Oコマンドが集中した場合、そのポートが受信した複数のI/Oコマンドが、期待通りの起動されない可能性がある。
また、ポートが受信したI/Oコマンドは、一旦記憶領域(典型的にはキュー)に蓄積されるが、ポート毎に、全ての優先度にそれぞれ対応した複数のキューを備えていなければならない。このため、管理しなければならないキュー情報(キューに関する情報)の量が多い。
これは、コマンドが格納される記憶領域が、キュー以外の記憶領域であっても生じ得る。
したがって、本発明の目的は、1つのポートにI/Oコマンドが集中してもそのポートで受信したI/Oコマンドを期待通りに起動でき、且つ、記憶制御装置において管理しなければならないコマンド記憶領域の管理情報の量を削減することにある。
記憶制御装置において、複数の優先度にそれぞれ対応しI/Oコマンドが格納される複数のコマンド記憶領域(例えばキュー)が、複数のポート及び複数のプロセッサに共通である。この場合、どのポートがI/Oコマンドを受信しても、そのI/Oコマンドは、そのI/Oコマンドに付与されている優先度に対応したコマンド記憶領域に格納される。複数のプロセッサは、優先度が高いI/Oコマンドほど一定時間内により多く起動されるように、複数のコマンド記憶領域内のI/Oコマンドを起動する。
記憶制御装置は、複数の論理ボリュームの基になる複数の物理記憶デバイスを備えたストレージ装置でも良いし、ストレージ装置とホスト計算機との間に介在できるインテリジェントなスイッチ装置でも良い。
本発明の一実施形態に係る計算機システムの構成例を示す。 本発明の一実施形態の概要を示す。 MPPK280がI/Oコマンドを起動するまでの流れを示す。 I/Oコマンド振分け処理の流れを示すフローチャートである。 振分け先検索テーブルを示す。 I/Oコマンドが格納されているエントリをIMQからPQに再配置する処理の流れを示すフローチャートである。 PQ263毎の上限起動数に基づくコマンド起動制御処理の模式図である。 キュー管理テーブルを示す。 コマンド起動制御処理の一部を示すフローチャートである。 コマンド起動制御処理の残りを示すフローチャートである。 上限起動数の更新処理の一部分のフローチャートである。 上限起動数の更新処理の残りのフローチャートである。 PQ#0〜#3の直前回の残りシェア累積値を示すグラフである。 PQ#0〜#3の今回のシェア累積値を示すグラフである。 PQ#0〜#3の今回のシェア累積値と閾値との関係を示すグラフである。 PQ#0〜#3の今回の残りシェア累積値を示すグラフである。 各PQのコンカレンシー値を表すテーブルを示す。 PQ#0〜#3の今回のシェア累積値と起動中コマンド数との関係を示すグラフである。 PQ#0〜#3についての今回の上限起動数を示す。 Qos主制御部10にフィードバックされる稼働状況情報の種類を表すテーブルを示す。 、取得単位「I/O処理完了毎」である稼働状況情報(I/O処理回数、データ転送量、平均応答時間)を取得する処理の流れを示すフローチャートである。 取得単位「50ミリ秒(瞬間値)」である稼働状況情報(キュー登録数、起動中コマンド数)を取得する処理の流れを示すフローチャートである。 取得単位「1秒周期(1s周期)(瞬間値)」でSM内の稼働状況情報を更新する処理の流れを示すフローチャートである。 LDEVオーナ権移動前の各PQの負荷を示す。 LDEVオーナ権移動後の各PQの負荷を示す。 Qos区域によってシェア累積値が異なることを示すグラフである。 Qos制御テーブルを示す。 計算機システムの初期構成におけるLDEVオーナ権移動の一例を示す図である。 計算機システムの運用中でのQos区域変更におけるLDEVオーナ権移動の一例を示す図である。
以下、図面を参照して、本発明の一実施形態を説明する。なお、以下の説明では「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「xxxテーブル」を「xxx情報」と呼ぶことができる。
また、以下の説明では、要素を特定するための識別情報として、ID(識別子)或いは番号が使用されるが、識別情報として、名前、番号などが使用されて良い。
また、以下の説明では、起動されるコマンドは、I/Oコマンドであるとする。しかし、起動対象となるコマンドは、I/Oコマンドに代えて又は加えて、他種のコマンドでも良い。
図1は、本発明の一実施形態に係る計算機システムの構成例を示す。
計算機システムは、Qos主制御部10と、Qos主制御部10に接続されている複数(又は1つ)のホスト20と、ホスト20に通信ネットワーク30を介して接続されるストレージ装置100とを備える。
通信ネットワーク30は、同図によると、SAN(Storage Area Network)であるが、他種のネットワーク(例えば、LAN(Local Area Network)、専用回線或いは公衆回線)でも良い。ホスト20とストレージ装置100とのデータのやり取りは、所定の通信プロトコル(例えば、TCP/IP(Transmission Control/Internet Protocol)、或いは、ファイバチャネルプロトコル)にしたがって行われる。
Qos主制御部10は、Qos制御を行う装置(例えば計算機)である。Qos主制御部10は、I/Oコマンドの発行頻度を制御する機能を有する。また、Qos主制御部10は、ホスト20から送信されるI/Oコマンドに付与する優先度を決定する。Qos主制御部10は、同図に示すように1つであっても良いし、各ホスト20に備えられても良い。具体的には、例えば、Qos主制御部10は、ホスト20のCPUで所定のコンピュータプログラムが実行されることにより発揮される機能であっても良い。
ホスト20は、CPUやメモリなどを備えた計算機である。ホスト20は、ストレージ装置100により提供される論理的な記憶領域(以下、LDEV(Logical DEVice))を認識し、このLDEVを指定したI/Oコマンドを発行する。I/Oコマンドには、優先度が付与されている(優先度を表す情報が設定されている)。I/Oコマンドに付与される優先度は、Qos主制御部10から送信される情報に従う優先度である。
ストレージ装置100は、コントローラ200と、ディスク装置300とを有する。
同図によると、ディスク装置300は、複数のディスク型の物理記憶デバイス(例えば、HDD(Hard Disk Drive))310より構成されるHDU(Hard Disk Unit)である。ディスク装置300は、例えば、複数のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループを有する。そして、RAIDグループを基に、記憶領域としてLDEV(Logical DEVice)311が形成される。なお、物理記憶デバイスとして、他種の記憶デバイス(例えばフラッシュメモリデバイス)が採用されても良い。
コントローラ200は、CHA(CHannel Adaptor)210と、SVP(SerVice Processor)220と、SW(SWitch)230と、CMPK(Cache Memory PacKage)240と、DKA(Disk Adaptor)250と、MPPK(Micro Processor PacKage)260とを有する。
CHA210は、ストレージ装置100の外部の装置とデータをやり取りする通信インターフェース装置である。CHA210は、プロトコルチップ211と、LR(Local Router)212と、複数のポート213とを有する。プロトコルチップ211は、所定のプロトコル(例えばファイバチャネルプロトコル)でデータを送受信するための回路や、ホスト20からのI/Oコマンドを解析する回路を備えている。LR212は、ホスト20からのI/OコマンドをMPPK260に振り分ける回路である。
SVP220は、ストレージ装置200の稼働状況を監視する装置(例えば計算機)である。SVP220は、コントローラ200の稼働状況を表す情報(以下、稼働状況情報)と、ディスク装置300の稼働状況情報を収集し、収集した稼働状況情報をQos主制御部10に送信(フィードバック)する。
SW230には、CHA210、SVP220、CMPK240、DKA250及びMPPK260が接続されている。SW230は、スイッチデバイス(例えばクロスバスイッチ)であり、SW230を介して、CHA210、SVP220、CMPK240、DKA250及びMPPK260が、それぞれ、互いに通信することができる。SVP220は、SW230に代えて、CHA210、DKA250及びMPPK260の少なくとも1つに接続されていても良い。
CMPK240は、SM(Shared Memory)241を有する。SM241は、複数のMPPK260に共有されるメモリである。SM241は、キャッシュ領域(図示せず)を有する。キャッシュ領域に、LDEV311に対して書き込まれるデータ(CHA210が受信したライト対象データ)、及び、LDEV311からDKA250を介して読み出されたデータが、一時的に格納される。
DKA250は、CMPK240を介して、CHA210と、ディスク装置300との間のデータの送受信を行う。
CHA210が、ホスト20からライトコマンドを受けた場合、そのライトコマンドを、複数のMPPK260のうちの、そのライトコマンドで指定されているLDEVを担当するMPPK260に転送する。ライトコマンドに付随するライト対象のデータは、一旦、CMPK240(SM241)に格納される。その後、そのライトコマンドを起動したMP(ライトコマンドの転送先のMPPK260内のMP)によって、CMPK240(SM241)から、そのライト対象のデータが読み出され、そのデータが、DKA250を介して、ライトコマンドで指定されているLDEV311に書き込まれる。
また、CHA210が、ホスト20からリードコマンドを受けた場合、そのリードコマンドを、複数のMPPK260のうちの、そのリードコマンドで指定されているLDEVを担当するMPPK260に転送する。リード対象のデータは、そのリードコマンドを起動したMP(リードコマンドの転送先のMPPK260内のMP)によって、DKA250を介してLDEV311から読み出される。読み出されたリード対象のデータは、一旦、CMPK240(SM241)格納される。その後、CMPK240(SM241)から、そのリード対象のデータが読み出され、そのデータがCHA210からホスト20に送信される。
以上のように、I/Oコマンド(ライトコマンド又はリードコマンド)が起動されると、LDEVに対するデータのI/Oが実行される。
MPPK260は、ローカルメモリ261と、複数のMP(Micro Processor)264とを有する。ローカルメモリ261に、このメモリ261を有するMPPK260に転送されて来たI/Oコマンドが格納される。ローカルメモリ261には、IMQ262と、PQ(Priority Queue)263と、フリーキュー(図示省略)と、キュー管理テーブル(図8参照)とが含まれる。I/Oコマンドが格納される、ローカルメモリ261内の記憶領域(以下、エントリ)が、IMQ262、PQ263或いはフリーキューのいずれかのキューに属している。つまり、エントリが、キューというデータ構造で管理される。PQ263は、I/Oコマンドに付与され得る優先度の数と同じ数だけ存在するキューである。つまり、PQ263は、優先度別に存在する。
初期状態では、全てのエントリは、フリーキューに属している。
MPPK260がI/Oコマンドを受信すると、そのMPPK260内のいずれかのMP264が、フリーキューからエントリを1つ取得し(エントリをデキューし)、I/Oコマンドをそのエントリに格納する。そのMP264は、I/Oコマンドが格納されたエントリを、IMQに接続する(エンキューする)。いずれかのMP264が、IMQから1つのエントリを取得し(デキューし)、そのエントリに格納されているI/Oコマンドに付与されている優先度に対応するPQに、そのエントリを接続する(エンキューする)。その後、いずれかのMP264が、PQからエントリをデキューし、そのエントリ内のI/Oコマンドを起動する。そのMP264は、そのエントリを、フリーキューにエンキューする。
どのI/Oコマンドにどんな高さの優先度を付与するかは、所定の規則、例えば、I/Oコマンドで指定されるLDEVのLUN(Logical Unit Number)、及び/または、I/Oコマンドを発行するアプリケーションプログラムを基に、決定されて良い。
図2は、本実施形態の概要を示す。
ポート213にMP264は関連付けられておらず(ポート213とMP264が一体になっておらず)、ポート213とMP264は互いに独立している。
複数の優先度に対応した複数のPQ263が、ポート213毎にではなく、MPPK260毎に存在する。どのMPPK260に存在するPQ263の数も、ポート213の数に関係無く、優先度の数と同じである。1つのMPPK260において、複数のMP264が、複数のPQ263を共有する。
本実施形態によれば、複数の優先度に対応した複数のPQ263をポート毎に有することに比べて、PQ263の数を削減することができる。従って、管理しなければならないキュー情報(キューに関する情報)を削減することができる。
また、後述するように、Qos主制御部10が、MPPK260単位で、PQ263毎に1種類以上の所定のパラメータ値(シェア値及びコンカレンシー値)を設定する。上記の通り、PQ263の数を削減することができるので、パラメータ値の設定対象が削減することができる。このため、Qos主制御部10の負荷が軽減される。
図3は、MPPK280がI/Oコマンドを起動するまでの流れを示す。
前述したように、いずれかのMP264が、フリーキューからエントリをデキューし、デキューされたエントリに、ホスト20からのI/Oコマンドを格納し、I/Oコマンドが格納されたエントリを、IMQ262にエンキューする(ステップ1)。
また、前述したように、いずれかのMP264が、IMQ262からエントリをデキューし、デキューしたエントリを、そのエントリ内のI/Oコマンドに付与されている優先度に対応したPQ263にエンキューする(ステップ2)。
次に、前述したように、いずれかのMP264が、いずれかのPQ263からエントリをデキューし、そのエントリ内のI/Oコマンドを起動する(ステップ3)。
ステップ3を実行するMP264は、そのステップ3の直前回のステップ3を実行したMP264と異なるMP264である。つまり、本実施形態では、連続した複数のI/Oコマンドを1つのMP264が起動するのではなく、連続した複数のI/Oコマンドが異なる複数のMP264によって起動される。例えば、I/Oコマンドを起動するMP264は、ラウンドロビンで切り替わる。具体的には、例えば、MP#0が1つのI/Oコマンドを起動したら、次にI/Oコマンドを起動するMP264はMP#1である。その後、I/Oコマンドを起動するMP264は、MP#2、MP#3となり、その次は、再び、MP#0となる。なお、各MPが独立して動作するため、連続した複数のI/Oコマンドを1つのMPが起動しても良い。
このように、本実施形態では、MPPK260毎に、複数のPQ263が複数のMP264に共有されている。PQ263内のI/Oコマンドを起動するMP264は、I/Oコマンドの起動の都度に異なる。このため、1つのMPPK260において、複数のI/Oコマンドの起動にかかる負荷を複数のMP264に分散することができる。
なお、ステップ3を行うMP264に限らず、ステップ1及び/又はステップ2を行うMP264も、そのステップの都度に異なっても良い。
図4は、I/Oコマンド振分け処理の流れを示すフローチャートである。図5は、振分け先検索テーブルを示す。
CHA210内のプロトコルチップ211が、ポート213を介して、I/Oコマンドを受信する(ステップ401)。次に、プロトコルチップ211から、LR212にI/Oコマンドが転送される(ステップ402)。LR212は、そのI/Oコマンドから、LUN(Logical Unit Number)と、S_IDとを取得する(ステップ403)。LUNとは、ホスト20が指定したLDEVの番号である。S_IDとは、ホスト20のIDである。つまり、S_IDを解析すれば、どのホスト20から送信されたI/Oコマンドであるかが分かる。
次に、LR212は、図5に示す振分け先検索テーブル500を参照して、I/Oコマンドの振分け先MPPKを決定する(ステップ404)。テーブル500は、どんなI/OコマンドをどのMPPKに振り分けるかを表す情報を有する。テーブル500は、SM241に格納されていても良いし、各CHA210内の記憶領域に格納されていても良い。具体的には、例えば、テーブル500は、ポート213毎に、下記の情報、
(*)I/Oコマンドを受信したポート231の番号であるポート番号504、
(*)I/Oコマンドの送信元のホストのIDであるS_ID501、
(*)I/Oコマンドで指定されているLDEVの番号であるLUN502、
(*)I/Oコマンドの振分け先のMPPKの番号であるMPPK番号503、
を有する。図5によれば、例えば、ポート#0で受信したI/Oコマンドの送信元が、S_ID「0.0.1」のホスト20であり、且つ、そのI/Oコマンドで指定されているLUNが「0」の場合、そのI/Oコマンドの振分け先として、MPPK#0が決定される。
LR212は、決定した振分け先MPPK260にI/Oコマンドを振り分ける(ステップ405)。そのI/Oコマンドは、振分け先のMPPK260において、エントリに格納され、そのエントリがIMQ262にエンキューされる。
図6は、I/Oコマンドが格納されているエントリをIMQからPQに再配置する処理の流れを示すフローチャートである。
MPPK260内の任意のMP264が、IMQ262からエントリをデキューし(ステップ601)、そのエントリ内のI/Oコマンドに付与されているTask Attributeを解析する(ステップ602)。ここで、Task Attributeとは、SCSI(Small Computer System Interface)の規格に従う情報であり、Qos制御部10が制御すべきI/Oコマンドか否かを表す情報である。I/Oコマンドが有するTask Attributeが「SIMPLE」という値の場合、そのI/Oコマンドは、Qos制御部10が制御すべきI/Oコマンドである。
Task Attributeが「SIMPLE」という値である場合(ステップ603:YES)、MP264は、ローカルメモリ261内のフリーキューからエントリをデキューする(ステップ604)。次に、MP264は、ステップ601でデキューしたエントリ内のI/Oコマンドを、ステップ604でデキューしたエントリにコピーする(ステップ605)。MP264は、コピーされたI/Oコマンドに付与されている優先度「n」を特定する(ステップ606)。MP264は、特定された優先度「n」に対応するPQ263に、ステップ604でデキューしたエントリ(I/Oコマンドが格納されているエントリ)をエンキューする(ステップ607)。そして、MP264は、優先度「n」に対応するPQ263についてのキュー登録数を1インクリメントする(ステップ608)。ここで、PQ263の「キュー登録数」とは、そのPQに格納されているI/Oコマンド総数、すなわち、そのPQ263を構成するエントリの数である。キュー登録数をインクリメントする理由は、PQ263毎に、処理できるI/Oコマンドの総数が決まっており、MP264及びQos主制御部10が、処理できるI/Oコマンドの総数の上限値を認識する必要があるからである。各PQ263のキュー登録数(I/Oコマンド総数)を表す情報は、SVP220に収集され、SVP220からQos制御部10に送られる(フィードバックされる)。
Task Attributeが「SIMPLE」という値でない場合(S603:NO)、MP264は、ステップ601でデキューしたエントリ内のI/Oコマンドを、Qos制御処理外のI/Oコマンドとして処理する(S609)。例えば、MP264は、ステップ601でデキューしたエントリ内のI/Oコマンドを起動する。
次に、PQ263内のエントリに格納されているI/Oコマンドの処理の流れを説明する。
本実施形態では、PQ263毎に、一定時間長毎(例えば毎分)に起動可能なI/Oコマンドの数の上限(以下、上限起動数)が予め決められている。
図7は、PQ263毎の上限起動数に基づくコマンド起動制御処理の模式図である。
図7に示す例によれば、MPPK260内に4つのMP264が存在し、ローカルメモリ261内には、16段階の優先度にそれぞれ対応した16個のPQ263が存在している。点線枠1000は、各PQ263に対応する上限起動数を表している。図7によれば、PQ#0の上限起動数は「15」、PQ#1の上限起動数は「4」、PQ#2の上限起動数は「7」、PQ#15の上限起動数は「1」である。なお、この上限起動数は、後述のシェア値及びコンカレンシー値に基づいて決定される。I/Oコマンドを起動するMP264は、ラウンドロビンで切り替わる。
例えば、上限起動数が「15」であるPQ#0からは、一定期間内に、最大15個のI/Oコマンドが起動される。I/Oコマンドが起動される度に上限起動数がデクリメントされ、これが0になるまで、I/OコマンドがPQ#0から起動される。
また、例えば、上限起動数が「1」であるPQ#15からは、一定期間内にI/Oコマンドが1つ起動されると、上限起動数が「0」となる。このため、PQ#15からは、その一定期間内にI/Oコマンドは起動されない。
このように、それぞれのPQ263について、上限起動数が「0」となるまで、I/Oコマンドが起動される。上限起動数が「0」となったPQについて(上限起動数分のI/Oコマンドが起動されたPQについて)、上限起動数を新たに決定する処理が行われ、決定された上限起動数が、設定される。新たに設定された上限起動数は、直前回の上限起動数と比べて、同じであることもあれば、違っていることもある。
図8は、キュー管理テーブルを示す。
キュー管理テーブル900は、例えば、MPPK260毎に存在し、ローカルメモリ261に格納されている。なお、全てのMPPKに対応する複数のキュー管理テーブルがマージされたテーブルがSM241に格納されていても良い。
キュー管理テーブル900は、このテーブル900を有するMPPK260内のPQ263毎に、キュー登録数901、起動中コマンド数902、及び、上限起動数903を有する。キュー登録数901は、PQ263に登録されているI/Oコマンドの総数(PQ263を構成するエントリの数)を表す情報である。起動中コマンド数902は、PQ263から起動されている最中のI/Oコマンドの数を表す情報である。上限起動数903は、起動可能なI/Oコマンドの総数を表す情報である。
上限起動数903が多いPQ263ほど、一定時間内により多くのI/Oコマンドを処理することができる。MP264により、I/Oコマンドが起動されると、そのI/Oコマンドが格納されていたPQ263に対応した上限起動数903は1デクリメントされる。
同一の優先度に対応したPQでも、どのMPPK内のPQであるかによって、上限起動数が異なっていてもよい。
図9及び図10は、コマンド起動制御処理を示すフローチャートである。具体的には、図9が、コマンド起動制御処理の一部を示すフローチャートであり、図10が、コマンド起動制御処理の残りを示すフローチャートである。以下、1つのMP264を例に採り(図9〜図19の説明において、「対象MP264」と言う)、コマンド起動制御処理を説明する。
対象MP264は、ラウンドロビンで、全てのPQ263をチェックする(ステップ701)。以下、1つのPQ263を例に採り(図9及び図10の説明において、「対象PQ263」と言う)、ステップ702以降を説明する。
対象MP264は、対象PQ263のPQロックを取得する(ステップ702)。ここで、「PQロック」とは、対象PQ263から他のMP264を排他するためのロックである。対象MP264が対象PQ263のPQロックを取得できない場合、対象PQ263が他のMP264によってロックされていることになる。この場合(ステップ703:NO)、対象MP264は、別のPQについて、S702を行う。
PQロックを取得できた場合、対象MP264は、対象PQ263から先頭のエントリをデキューする(ステップ704)。デキューに成功した場合(ステップ705:YES)、対象MP264は、対象PQ263に対応するキュー登録数901(図8参照)を1デクリメントする(ステップ705)。また、対象MP264は、対象PQ263に対応する上限起動数903を1デクリメントする(ステップ705)。次に、対象MP264は、取得したPQロックを解放する(ステップ708)。そして、対象MP264は、デキューしたエントリが有するI/Oコマンドを起動する(ステップ709)。対象MP264は、対象PQ263に対応する起動中コマンド数902を1インクリメントする(ステップ710)。対象MP264は、対象PQ263からデキューしたエントリをフリーキューにエンキューする(ステップ711)。
対象MP264は、全てのPQ263に対応する全ての上限起動数903がゼロであるか否かをチェックする(ステップ712)。全ての上限起動数903がゼロの場合(ステップ712:YES)、対象MP264は、全ての上限起動数903を更新する処理を実施する(ステップ713)。
コマンド起動制御処理の流れは、上記の流れに限られない。例えば、MP264が、1つのPQについてPQロックを取得した場合、そのMP264は、他のPQをチェックせず、他のMP264が、PQロックを取得できるまで他のPQをチェックして良い。つまり、各MP264は、PQロックを取得したPQについてのみ1つのI/Oコマンドを起動しても良い。
次に、上限起動数更新処理を説明する。この更新処理には、シェア値及びコンカレンシー値が用いられる。
ここで、「シェア値」とは、PQ263毎に存在するパラメータである。上限起動数更新処理の開始時に、PQ263毎にそれぞれ設けられている領域に加算される。MP264は、PQ263のジョブ起動比率が、そのPQ263に対応したシェア値の比率となるように、I/Oコマンドの起動数と起動順序とを制御する。
「コンカレンシー値」とは、各PQ263の上限起動数の上限値である。MP264は、コンカレンシー値以下になるようにI/Oコマンドの上限起動数を制限する。これにより、優先度の高いI/Oコマンドの起動が遅れるのを防止することができる。
図11及び図12は、上限起動数の更新処理のフローチャートである。具体的には、図11は、上限起動数の更新処理の一部分のフローチャートであり、図12は、その更新処理の残りのフローチャートである。
対象MP264は、ラウンドロビンで、全てのPQ263をチェックする(ステップ1101)。対象MP264は、各PQ263のキュー登録数901を特定する。ここで、MP263が全PQ263をチェックすることを「1ラウンド」とする。1ラウンドにおいて、全てのPQ263につき、ステップ1102以降が行われる。以下、1つのPQ263を例に採り(図11及び図12の説明において、「対象PQ263」と言う)、ステップ1102以降を説明する。
対象MP264は、対象PQ263に対応したキュー登録数901を特定する(ステップ1102)。対象MP264は、対象PQ263にエントリがあるかどうかをチェックする(ステップ1103)。エントリがある場合(ステップ1103:YES)、対象MP264は、対象PQ263が有するシェア値及びコンカレンシー値を特定する(ステップ1104)。そして、対象MP264は、対象PQ263に対応した残りシェア累積値(後述する)に、ステップ1104で特定したシェア値を累積する(ステップ1105)。
対象MP264は、対象PQ263の起動中コマンド数902を特定する(ステップ1106)。
次に、対象MP264は、下記3つの条件の全て、
(*)対象PQ263にエントリがある、
(*)上限起動数+起動中コマンド数<コンカレンシー値である、
(*)シェア累積値が閾値を超えている、
を満たすかどうかチェックする(ステップ1107)。条件を満たしている場合、対象MP264は、ステップ1108以降を行う。上記3つの条件の少なくとも1つが満たされなくなるまで、対象PQについて、ステップ1108以降が繰り返される。
対象MP264は、上限起動数903を1インクリメントする(ステップ1108)。次に、対象MP264は、シェア累積値から閾値を減算する(ステップ1109)。対象MP264は、キュー登録数901を1デクリメントする(ステップ1110)。
ステップ1108〜1110の繰り返しにおいて、閾値以下になった減算後のシェア累積値が、対象PQについての「残りシェア累積値」である。
また、ステップ1108〜1110のループが終了した時点の上限起動数が、次回の一定時間内で起動可能なI/Oコマンドの数の上限である。
以上の上限起動数更新処理によれば、残りシェア累積値の大きさに応じて、次回の一定時間に対応した上限起動数が制御される。つまり、1つのPQについて、全ての一定時間において上限起動数が同じとは限らない。
コマンド起動制御処理(及び上限起動数更新処理)を、図13〜図19を参照して説明する。なお、ここでは、簡単のため、対象MP264について、優先度が最も高いPQ#0、優先度が2番目に高いPQ#1、優先度が3番目に高いPQ#2の3つのPQがあるものとする。
(n−1)番目のラウンドが終了した時点で、PQ#0〜#2の残りシェア累積値が、図13が示す通りであるとする。n番目のラウンドは、図13に示す残りシェア累積値が使用される。
n番目のラウンドにおいて、対象MP264は、図14に示すように、PQ#0〜#2について、シェア値を、残りシェア累積値に累積する(図11のステップ1105)。図14によれば、シェア値は、優先度が高いほど大きな値でよい(すなわち、シェア値の大きさが、優先度の高さに相当して良い)。また、閾値は、PQ#0〜#2に共通の値である。
PQ#0〜#2について、図14に示したシェア累積値から、閾値がシェア累積値以下になるまで、閾値が1回以上減算される。閾値が1回減算できる都度に、上限起動数が1インクリメントされる。従って、上限起動数は、図14に示したシェア累積値が閾値で除算されることにより得られた商であり、残りシェア累積値は、その際の余りである。図15によれば、n番目のラウンドにおいて、PQ#0について、上限起動数が「3」であり、PQ#1について、上限起動数が「2」であり、PQ2について、上限起動数が「0」である。図15の例によれば、PQ#0〜#2について、n番目のラウンドが終了した時点の残りシェア累積値は、図16に示す通りである。
図17は、PQ#0〜#2についてのコンカレンシー値を表すテーブルを示す。図17に示す例によれば、PQ#0のコンカレンシー値は「5」、PQ#1のコンカレンシー値は「2」、PQ#2のコンカレンシー値は「1」である。
図15に示したシェア累積値と、図17に示したコンカレンシー値と、図18に示した起動中コマンド数とに基づけば、PQ#0〜#2についての上限起動数は、図19に示す通りとなる(図18の点線枠1800は、PQ#0〜#2における起動中コマンド数を示す)。
例えば、PQ#0については、シェア累積値を閾値で除算することにより得られた商「3」と同数のI/Oコマンドを起動することができる。具体的には、PQ#0について、2つのI/Oコマンドが起動している最中である。PQ#0のコンカレンシー値は「5」である。このため、PQ#0の上限起動数の最大値は、「3」である(5−2=3)。図19によれば、PQ#0について、シェア累積値を閾値で除算した商は「3」である。従って、PQ#0について、商「3」と同数のI/Oコマンドを起動できる。
しかし、PQ#1については、商「2」と同数のI/Oコマンドを起動することはできず、起動できるI/Oコマンドの数は、商「2」未満である。具体的には、PQ#1について、1つのI/Oコマンドが起動している最中である。PQ#1のコンカレンシー値は「2」である。このため、PQ#1の上限起動数の最大値は、「1」である(2−1=1)。しかし、図19によれば、PQ#1について、シェア累積値を閾値で除算した商は「2」である。従って、PQ#1についての上限起動数は、「1」となる。
上述のように、起動中コマンド数と上限起動数との合計がコンカレンシー値以下の数値に制限される。
図20は、Qos主制御部10にフィードバックされる稼働状況情報の種類を表すテーブルを示す。
Qos主制御部10は、フィードバックされた稼働状況情報に基づいて、I/Oコマンドに付与すべき優先度、及び、シェア値を決定する。
同図によると、Qos主制御部10にフィードバックされる稼働状況情報は6種類である。各種の稼働状況情報について、下記の3つ、
(*)MPPK内計測単位(どのような要素毎に稼働状況情報が取得されるか)、
(*)取得単位(どのようなタイミングで稼働状況情報が取得されるか)、
(*)SM更新単位(どのようなタイミングで、取得された稼働状況情報をSM241に格納するか)、
が定義されている。稼働状況情報#1がI/O処理回数、稼働状況情報#2がデータ転送量、稼働状況情報#3が平均応答時間、稼働状況情報#4がキュー登録数、稼働状況情報#5が起動中コマンド数、稼働状況情報#6が情報更新カウント値である。情報#1〜#5は、累積値であり、このため、Qos主制御部10は累積値を受け取ることになる。それ故、Qos主制御部10は、単位時間当たりの値を算出するために、今回受けた累積値から前回取得した累積値を減算し、それにより得られた値を単位時間で除算する必要がある。
図21は、取得単位「I/O処理完了毎」である稼働状況情報(I/O処理回数、データ転送量、平均応答時間)を取得する処理の流れを示すフローチャートである。
MP264は、I/Oコマンドを起動すると(ステップ2101)、I/Oコマンド開始時刻をローカルメモリ261に登録する(ステップ2102)。そして、MP264は、I/Oコマンドの処理が終了すると(ステップ2103)、I/Oコマンド終了時刻をローカルメモリ261に登録する(ステップ2104)。その後、MP264は、ローカルメモリ261上のI/O処理数カウント値(処理されたI/Oコマンドの数を表す値)を1インクリメントする(ステップ2105)。
また、MP264は、I/Oコマンドの処理に従い書き込まれた又は読み出されたデータの量(データ転送量)を特定し(ステップ2106)、ローカルメモリ261上のデータ転送量カウント値に加算する(ステップ2107)。
また、MP264は、I/Oコマンド開始時刻とI/Oコマンド終了時刻との差分を基に平均応答時間(I/Oコマンド開始時刻とI/Oコマンド終了時刻との差分の合計をI/Oコマンド処理数カウント値で除算した値)を算出し(ステップ2108)、算出された値を、ローカルメモリ261上の平均応答時間カウント値に加算する(ステップ2109)。
以上の処理により、ローカルメモリ261におけるI/O処理数カウント値、データ転送量カウント値、及び平均応答時間カウント値が、I/Oコマンドが処理される都度に、更新される。
図22は、取得単位「50ミリ秒(瞬間値)」である稼働状況情報(キュー登録数、起動中コマンド数)を取得する処理の流れを示すフローチャートである。
MP264は、キュー登録数901の瞬間値(当該時点でのキュー登録数)を特定する(ステップ2201)。そして、MP264は、その特定した瞬間値を、ローカルメモリ261上のキュー登録数カウント値に加算する(ステップ2202)。ここで、「瞬間値」とは、例えば、50msec程度の短い時間幅で特定された値である。
また、MP264は、起動中コマンド数902の瞬間値を特定する(ステップ2203)。そして、MP264は、その特定した瞬間値を、ローカルメモリ261上の起動中コマンド数カウント値に加算する(ステップ2202)。ここでも、「瞬間値」は、例えば、50ミリ秒程度の短い時間幅で特定された値である。
図23は、取得単位「1秒周期(1s周期)(瞬間値)」でSM内の稼働状況情報を更新する処理の流れを示すフローチャートである。
MP264は、1秒周期で、下記、
(*)ローカルメモリ261上のI/0処理数カウント値(処理されたI/Oコマンドの累積値)を特定する(ステップ2301)、
(*)ローカルメモリ261上のデータ転送量カウント値(入出されたデータの量の累積値)を特定する(ステップ2302)、
(*)ローカルメモリ261上の平均応答時間カウント値(平均応答時間の累積値)を特定する(ステップ2303)、
を行う。ステップ2301〜ステップ2303の順番は、上記に限らない。
次に、MP264は、ローカルメモリ261上のキュー登録数カウント値に基づいて、キュー登録数の平均値(1秒当たりのキュー登録数(例えば、キュー登録数カウント値を情報更新カウント値で除算することにより得られる値))を算出する(ステップ2304)。
また、MP264は、ローカルメモリ261上の起動中コマンド数カウント値に基づいて、起動中コマンド数の平均値(1秒当たりの起動中コマンド数(例えば、起動中コマンド数カウント値を情報更新カウント値で除算することにより得られる値))を算出する(ステップ2305)。
MP264は、ステップ2301〜2305で得た各種稼働状況情報を、SM241上の該当のカウント値に加算し(ステップ2306)、ステップ2301〜2305で得た各種稼働状況情報をゼロクリアする(リセットする)(ステップ2307)。そして、MP264は、SM241上の情報更新カウント値(図20の情報#6)を1インクリメントする(ステップ2308)。つまり、情報更新カウント値は、図23に示す一連の処理が行われた回数である。
SM241上の更新後の各種稼働状況情報が、MP264からQos主制御部10にフィードバックされる。SM241上の各種稼働状況情報は、1秒或いは1秒よりも長い周期で、定期的に(又は不定期的に)、Qos主制御部10に送信される。
Qos主制御部10は、フィードバックされた1種類以上の稼働状況情報を基に、制御を行う。例えば、第1のMPPK#0内の第1のPQ#1の負荷(PQ#1に蓄積されているI/Oコマンドの数)が、期待値より低い、或いは、第2のMPPK#1内の第2のPQ#1(同一優先度のPQ)の負荷よりも高い場合、下記(1)〜(3)のいずれかの方法で、第1のPQ#1の負荷と第2のPQ#2の負荷と差を縮めることが期待できる。
(1)MPPK#0がオーナ権であるLDEVを指定したI/Oコマンドの発行頻度を減らし、MPPK#1がオーナ権であるLDEVを指定したI/Oコマンドの発行頻度を増やすような制御を、Qos主制御部10が行う。
(2)Qos主制御部10が、MPPK#0及び/又は#1について設定する制御パラメータ(例えば、シェア値及び/又はコンカレンシー値)を調整する。
(3)PQ#1に蓄積されるI/Oコマンドで指定されているLDEVのオーナ権が、MPPK#0からMPPK#1に移る。
ここで、「オーナ権」とは、対象となるLDEVに対してアクセスできる権利である。例えば、或るMPPKについて或るLDEVのオーナ権が設定されると、その或るLDEVには、そのLDEVのオーナ権を有するMPPKのみがアクセスでき、そのLDEVのオーナ権が無い他のMPPKは、そのLDEVに対してアクセスすることができない。
この(3)の方法において、どのLDEVのオーナ権をMPPK#0からMPPK#1に移すかは、フィードバックされた稼働状況情報を基にQos主制御部10が決定しても良いし、管理者が稼働状況情報を基に決定しても良いし、MP264(又はSVP)が稼働状況情報を基に決定しても良い。図24及び図25に示すように、決定されたLDEVのオーナ権がMPPK#0からMPPK#1に移ることで、第1のPQ#1の負荷と第2のPQ#2の負荷との差を縮めることができる。LDEVのオーナ権の移動により、オーナ権の移動元のMPPKとオーナ権の移動先のMPPK間で負荷を分散することもできる。
PQ毎及びMPPK毎に稼働状況情報(例えば、PQ毎に、I/O頻度(例えば、単位は、IOPS(1秒当たりのI/Oコマンドの数))が取得され、期待される負荷との差が最大の負荷を有するPQが選択されて良い。そして、そのPQについて、そのPQに関与する各LDEV(そのPQに蓄積されるI/Oコマンドで指定され得る各LDEV)について、稼働状況情報が取得され、その稼働状況情報を基に、オーナ権(LDEV)の移動後の負荷と期待される負荷との差が最小になるようなオーナ権(LDEV)が決定されて良い。
なお、或るLDEVのオーナ権が、第1のMPPKから第2のMPPKに移った場合、振分け先検索テーブル500(図5参照)が更新される。具体的には、そのテーブル500において、或るLDEVのLUNに、第1のMPPKの番号に代えて、第2のMPPKの番号が対応付けられる。
ところで、Qos制御として、下記のような制御も可能である。
すなわち、計算機システムが、論理的に複数の区域(以下、Qos区域)に分割される。各Qos区域には、少なくとも1つのホストと、少なくとも1つのMPPKと、少なくとも1つのLDEVとが含まれる。Qos主制御部10は、Qos区域毎に、他のQos区域と異なるQos制御を行うことができる。つまり、Qos区域毎に、独立したQos制御が行われて良い。具体的には、例えば、第1のQos区域及び第2のQos区域にそれぞれ3つのPQがある場合、第1のQos区域内の3つのPQについて設定されるシェア値及びコンカレンシー値と、第2のQos区域内の3つのPQについて設定されるシェア値及びコンカレンシー値は異なっていて良い。例えば、図26に示すように、Qos区域X内の3つのPQについてのシェア累積値と、Qos区域Y内の3つのPQについてのシェア累積値とが、異なるように、Qos制御が行われて良い。また、Qos主制御部10は、フィードバックされた稼働状況情報が、どのQos区域に属する要素(例えば、MPPK、PQ)に関する稼働状況情報であるかを基に、Qos区域別に、独立したQos制御を行ってよい。より具体的には、例えば、Qos主制御部10は、図27に示すQos制御テーブルを基に、下記のうちの少なくとも1つ、
(*)どのQos区域のPQにどのようなパラメータ(シェア値及び/又はコンカレンシー値)を設定するかを決定すること、
(*)どのQos区域についての稼働状況情報であるかを特定すること、
(*)どのQos区域内のLDEVのオーナ権を、どの別のQos区域内のMPPKに移動するかを決定し、その決定に従い、Qos区域間で、LDEVオーナ権を移動すること、
を行って良い。Qos制御テーブルは、例えば、Qos区域毎に、下記の情報、
(*)Qos区域のID、
(*)Qos区域に含まれるホストのID(例えばS_ID)、
(*)Qos区域に含まれているMPPKの番号、
(*)Qos区域に含まれているLDEVのID(例えばLUN)、
を有して良い。
Qos区域間のLDEVオーナ権の移動は、計算機システムの初期構成と、計算機システムの運用中でのQos区域変更のいずれにおいても行うことができる。
図28は、計算機システムの初期構成におけるLDEVオーナ権移動の一例を示す図である。
Qos区域X及びYがある。Qos区域Xに、MPPK#0が含められ、Qos区域Yに、MPPK#3が含められる。MPPK#0は、LDEV#1〜#3のオーナ権を有し、MPPK#3は、LDEV#8及び#9のオーナ権を有している。
この状況において、MP264又(はSVP220)が、SVP220(又はQos主制御部10)から、LDEV#4をQos区域Yに含め、且つ、LDEV#9をQos区域Xに含めることが指定されたとする。
この場合、MP264(又はSVP220)が、LDEV#3のオーナ権を、MPPK#0から、Qos区域Y内のいずれかのMPPK(例えばMPPK#3)に移動する。また、MP264(又はSVP220)が、LDEV#8のオーナ権を、MPPK#3から、Qos区域X内のいずれかのMPPK(例えばMPPK#0)に移動する。Qos主制御部10、SVP220又はMP264が、移動先のQos区域における1以上のMPPKのうちのどのMPPKをオーナ権の移動先とするかを、移動対象のオーナ権に対応するLDEVを指定したI/Oコマンドが蓄積されるPQについてのパラメータ(例えば、シェア値)を基に、決定して良い。
図29は、計算機システムの運用中でのQos区域変更におけるLDEVオーナ権移動の一例を示す図である。
Qos区域変更前は、図28に示した構成のQos区域X及びYがあるとする。その状態で、ホストA及びBからのI/Oコマンドが増加し、MPPK#0の負荷が増加したとする。
この場合、例えば、MPPK#0に割り当てられているLDEVのオーナ権を他のMPPKに移動することにより、MPPK#0の負荷を軽減させることが考えられる。
ここで、MPPK#0のLDEVオーナ権の移動先は、MPPK#0を含んだQos区域X内である必要がある。なぜなら、MPPK#0が有するオーナ権に対応したLDEVは、Qos区域Xに含められているLDEVであるからである。
しかし、図28に示したQos区域Xによれば、MPPK#0の他にMPPKが存在しない。
そこで、MP264、SVP220又はQos主制御部10は、MPPK#0の負荷(例えば、MPPK#0に蓄積されているI/Oコマンドの総数、或いは、少なくとも1つのPQについてのキュー登録数)が所定の閾値を超えたことを検出した場合、例えば、以下の処理、
(a)いずれかの他のQos区域(Qos区域Y)内のいずれか1以上のMPPK(MPPK#1)を、Qos区域Xに含める(その際、例えば、図27に示したテーブルを、MPPK#1がQos区域Yに含まれるように更新する)、
(b)MPPK#1の、LDEV#4及び#5のオーナ権を、Qos区域Y内のいずれかのMPPK(MPPK#2)に移動する、
(c)Qos区域Xに既存MPPK#0が有する、LDEV#8のオーナ権を、Qos区域に新たに追加されたMPPK#1に移動する、
を行って良い。
上記(b)を行う理由は、LDEV#4及び#5は、Qos区域Yに含められているLDEVであるためである。
上記(c)を行う理由は、新たに追加されたMPPKにオーナ権を移動することで、既存のMPPKの負荷を新たに追加されたMPPKに分散するためである。なお、(c)において、移行対象となるオーナ権に対応したLDEVは、例えば、
(*)既存MPPK#0が有する複数のPQのうち、期待値より高い負荷のPQに蓄積されるI/Oコマンドで指定されるLDEV、
(*)既存MPPK#0に割り当てられている複数のLDEVから任意に選択されたLDEV、
(*)既存MPPK#0に割り当てられている複数のLDEVのうち、I/O頻度が最も高いLDEV、
のいずれかである。
以上の処理により、MPPK#0の負荷を軽減させることができる。
なお、どのQos区域にどのMPPKを追加するか、及び/又は、どのQos区域からどのMPPKを除去するかは、SM241内の一種類以上の稼働状況情報、具体的には、例えば、どのQos区域内のどのMPPKの負荷が所定の閾値より高くなったか、或いは、どのQos区域内のどのMPPKに障害が発生したかを基に、決定されて良い。
LDEVオーナ権の移動に伴って、Qos主制御部10、SVP220又はMP264が、移動対象のオーナ権に対応するLDEVを指定したI/Oコマンド(例えば、未だ起動されておらずエントリ(例えばPQ或いはIMQ内のエントリ)に蓄積されているI/Oコマンド)を、移動元のMPPKから移動先のMPPKに移動しても良い。
以上、本発明の一実施形態を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこの実施形態のみに限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。
例えば、SVP220が無くても良い。その場合、いずれかのMP264が、SVP220の機能を有しても良い。
10…Qos主制御部、20…ホスト、100…ストレージ装置

Claims (1)

  1. 優先度が付与され論理ボリュームを指定したI/Oコマンドをホスト計算機から受信しそのI/Oコマンドが起動された場合にそのI/Oコマンドで指定されている論理ボリュームに対してデータの入出力を行う記憶制御装置であって、
    複数のホスト計算機からI/Oコマンドを受信する複数の通信インタフェース装置と、
    複数のプロセッサユニットと、
    前記複数のプロセッサユニットに共通の記憶領域である共有領域と
    を有し、
    前記複数のプロセッサユニット及び複数の論理ボリュームが論理的な複数の区域に分けられることにより、各区域が、1以上のプロセッサユニットと1以上の論理ボリュームとを含み、
    各通信インタフェース装置が、I/Oコマンドを受信する複数のポートを有し
    各プロセッサユニットが、
    複数の優先度にそれぞれ対応し前記複数の通信インタフェース装置に共通の複数のコマンド記憶領域と、
    複数のコマンド記憶領域に共通の複数のプロセッサと
    を有し、
    各プロセッサは、そのプロセッサを含んだプロセッサユニットに関する稼働状況を表す情報である稼動状況情報を前記共有領域に格納し、
    各プロセッサユニットは、I/Oコマンドの起動の制御に関するパラメータ値であってそのプロセッサユニットが有する複数のコマンド記憶領域の各々について設定されたパラメータ値を基に、I/Oコマンドの起動を制御し、
    前記複数の区域は、同一優先度であるがパラメータ値が異なるコマンド格納領域を含み、
    区域毎に、プロセッサユニットに論理ボリュームが割り当てられており、論理ボリュームが割り当てられているプロセッサユニット内のプロセッサのみが、その論理ボリュームに対してデータを入出力することができ、各通信インタフェース装置は、受信したI/Oコマンドを、そのI/Oコマンドで指定されている論理ボリュームが割り当てられているプロセッサユニットに転送し、そのプロセッサユニットは、そのI/Oコマンドを、そのI/Oコマンドに付与されている優先度に対応したコマンド記憶領域に格納し、複数のコマンド格納領域のパラメータ値を基に、優先度が高いI/Oコマンドほど一定時間内により多く起動されるように、複数のコマンド記憶領域内のI/Oコマンドを起動するようになっており
    負荷が所定の閾値を超えている第1のプロセッサユニットが、前記第1のプロセッサユニットを含んだ第1区域内に、前記第1プロセッサユニット以外のプロセッサユニットが存在しない場合、第2区域に含まれている複数のプロセッサユニットから前記稼働状況情報を基に第2のプロセッサユニットを決定し、決定された第2のプロセッサユニットを、前記第2区域から前記第1区域に含め、前記第2のプロセッサユニットに割り当てられている1以上の論理ボリュームを、前記第2区域に残っている1以上のプロセッサユニットに割り当て、前記第1のプロセッサユニットに割り当てられている複数の論理ボリュームから、負荷が期待値より高いコマンド記憶領域に蓄積されるI/Oコマンドで指定される論理ボリュームを決定し、決定された論理ボリュームを、前記第1区域に新たに追加された前記第2のプロセッサユニットに割り当てる、
    記憶制御装置。
JP2013502033A 2010-09-09 2010-09-09 コマンドの起動を制御するストレージ装置及びその方法 Expired - Fee Related JP5555370B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/005528 WO2012032577A1 (en) 2010-09-09 2010-09-09 Storage apparatus for controlling running of commands and method therefor

Publications (2)

Publication Number Publication Date
JP2013524334A JP2013524334A (ja) 2013-06-17
JP5555370B2 true JP5555370B2 (ja) 2014-07-23

Family

ID=43901440

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013502033A Expired - Fee Related JP5555370B2 (ja) 2010-09-09 2010-09-09 コマンドの起動を制御するストレージ装置及びその方法

Country Status (3)

Country Link
US (1) US8407370B2 (ja)
JP (1) JP5555370B2 (ja)
WO (1) WO2012032577A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9081507B2 (en) * 2012-03-14 2015-07-14 Symantec Corporation Shared storage access management systems and methods
US9582218B2 (en) * 2013-01-09 2017-02-28 Cisco Technology, Inc. Serial attached storage drive virtualization
WO2014125559A1 (ja) 2013-02-12 2014-08-21 株式会社日立製作所 記憶制御装置および記憶制御装置の制御方法
DE112013006634T5 (de) * 2013-11-28 2015-10-29 Hitachi, Ltd. Computersystem und Computersystemsteuerverfahren
WO2016020979A1 (ja) * 2014-08-05 2016-02-11 株式会社日立製作所 計算機システム及び仲介デバイス
WO2016189640A1 (ja) * 2015-05-26 2016-12-01 株式会社日立製作所 ストレージ装置、及び方法
US9639280B2 (en) * 2015-06-18 2017-05-02 Advanced Micro Devices, Inc. Ordering memory commands in a computer system
WO2017158799A1 (ja) * 2016-03-17 2017-09-21 株式会社日立製作所 ストレージ装置および情報処理方法
WO2017203647A1 (ja) * 2016-05-26 2017-11-30 株式会社日立製作所 計算機及びi/oアダプタの割当管理方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003345525A (ja) * 2002-05-24 2003-12-05 Hitachi Ltd 計算機システム及びレプリケーション方法
JP2008134775A (ja) * 2006-11-28 2008-06-12 Hitachi Ltd 記憶サブシステム及びこれを利用したリモートコピーシステム
JP5106913B2 (ja) * 2007-04-23 2012-12-26 株式会社日立製作所 ストレージシステム、ストレージシステム管理方法、及び計算機システム
US8259738B2 (en) * 2007-05-01 2012-09-04 Net Navigation Systems, Llc Channel service manager with priority queuing
JP2009223863A (ja) * 2008-03-19 2009-10-01 Hitachi Ltd コンピュータシステム及びコマンド実行頻度制御方法
JP2010102458A (ja) 2008-10-22 2010-05-06 Hitachi Ltd コマンドの起動を制御するストレージシステム及び方法

Also Published As

Publication number Publication date
JP2013524334A (ja) 2013-06-17
WO2012032577A1 (en) 2012-03-15
US20120066413A1 (en) 2012-03-15
US8407370B2 (en) 2013-03-26

Similar Documents

Publication Publication Date Title
JP5555370B2 (ja) コマンドの起動を制御するストレージ装置及びその方法
US10798207B2 (en) System and method for managing application performance
US8260986B2 (en) Methods and apparatus for managing virtual ports and logical units on storage systems
US8271749B2 (en) Storage subsystem and method of executing commands by controller
US7711872B2 (en) Storage apparatus, process controller, and storage system
JP6340439B2 (ja) ストレージシステム
US7694037B2 (en) Information processing apparatus and command multiplicity control method wherein commands are sent from a host to a target using iSCSI control protocol
US9934172B1 (en) Data storage system with dynamic throttling of parallel sub-I/O request for individual host I/O requests
US8874873B2 (en) Resources allocation in a computer storage system
JP2003131908A (ja) 記憶制御装置
US20130097118A1 (en) Performance assist storage volumes
US20240054023A1 (en) Methods for dynamic throttling to satisfy minimum throughput service level objectives and devices thereof
CN111782138B (zh) 路径切换方法及装置
US10242053B2 (en) Computer and data read method
WO2015121998A1 (ja) ストレージシステム
US10740040B2 (en) System and computer for controlling caching for logical storage
US9065740B2 (en) Prioritising data processing operations
US7774510B2 (en) Near zero overhead command timeout scheme
JP6578694B2 (ja) 情報処理装置、方法及びプログラム
US9619286B1 (en) Using request service time as fairness heuristic in locking techniques
JP5415338B2 (ja) ストレージシステム、その負荷分散管理方法及びプログラム
JP2012146280A (ja) 記憶操作のためのキュー及び作業負荷による選択インタフェースの方法及び装置
WO2009136533A1 (ja) 分散データ格納システムの応答調停システム、分散データ格納システムの応答調停方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131015

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131016

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131205

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140530

R150 Certificate of patent or registration of utility model

Ref document number: 5555370

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees