JP5089896B2 - マイクロプロセッサの負荷分散機能を備えたストレージシステム - Google Patents

マイクロプロセッサの負荷分散機能を備えたストレージシステム Download PDF

Info

Publication number
JP5089896B2
JP5089896B2 JP2006073867A JP2006073867A JP5089896B2 JP 5089896 B2 JP5089896 B2 JP 5089896B2 JP 2006073867 A JP2006073867 A JP 2006073867A JP 2006073867 A JP2006073867 A JP 2006073867A JP 5089896 B2 JP5089896 B2 JP 5089896B2
Authority
JP
Japan
Prior art keywords
cache
processor
load
read
request
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
JP2006073867A
Other languages
English (en)
Other versions
JP2007249729A (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
Priority to JP2006073867A priority Critical patent/JP5089896B2/ja
Priority to US11/429,527 priority patent/US8271979B2/en
Priority to EP06254558A priority patent/EP1835389A3/en
Publication of JP2007249729A publication Critical patent/JP2007249729A/ja
Priority to US13/588,226 priority patent/US9262095B2/en
Application granted granted Critical
Publication of JP5089896B2 publication Critical patent/JP5089896B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/061Improving I/O performance
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0658Controller construction arrangements
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Description

本発明は、複数のマイクロプロセッサを備えたストレージシステムに関する。
この種のストレージシステムとして、例えば、特許3264465号に記載のストレージシステムが知られている。このストレージシステムは、上位装置に対するインタフェースを構成する複数の上位側接続論理装置と、記憶装置と、前記記憶装置に対するインタフェースを構成する複数の記憶装置側接続論理装置と、これらの装置間で転送されるデータを一時記憶するキャッシュメモリ装置(複数の上位側接続論理装置及び複数の記憶装置側接続論理装置に共有されるキャッシュメモリ装置)とを有する。このストレージシステムでは、複数の上位装置側接続論理装置、複数の記憶装置側接続論理装置、及びキャッシュメモリ装置は、これらの装置に共有されるコモンバスにより相互に接続されるように構成されている。上位側接続論理装置、記憶装置側接続論理装置、キャッシュメモリ装置,及びこれらの間を接続するコモンバスは、二重化され、2系統に分けて配線されており、一方に障害が発生したときでも、他方を用いて縮退運転が可能である。
特許3264465号
各上位側接続論理装置には、一又は複数のマイクロプロセッサが搭載されている。各マイクロプロセッサが、上位装置から受信した入出力要求(以下、I/O要求)の処理を実行する。その際、一つのマイクロプロセッサに、複数のI/O要求が集中してしまうと、そのマイクロプロセッサの負荷が高くなりすぎて、各I/O要求の処理が遅くなってしまう可能性がある。
従って、本発明の目的は、複数のマイクロプロセッサを備えたストレージシステムにおいて一つのマイクロプロセッサに負荷が集中してしまうことを防ぐことにある。
本発明の他の目的は、後述の説明から明らかになるであろう。
本発明に従うストレージシステムは、I/O要求を発行する上位装置とデータを授受する複数の通信ポートと、通信ポートを介して受信したI/O要求の処理であるI/O処理を実行する複数のマイクロプロセッサと、I/O処理に従うデータが読み書きされる複数の記憶装置と、前記上位装置と前記複数の記憶装置との間で授受されるデータを一時的に記憶するキャッシュメモリとを備える。前記複数のマイクロプロセッサのうち、受信したI/O要求のI/O処理を行うマイクロプロセッサが、自分の負荷が第一の負荷以上の場合に、該I/O処理のうちの少なくともI/O処理部分を、前記複数のマイクロプロセッサのうちの他のマイクロプロセッサに割り振り、該他のマイクロプロセッサが、少なくとも該I/O処理部分を(例えば割り振り元の前記マイクロプロセッサに代わって)実行する。前記I/O処理部分とは、前記I/O処理の一部であり、該I/O処理において、マイクロプロセッサにとって低負荷のサブ処理に比して高負荷のサブ処理が含まれた部分である。
第一の実施態様では、前記I/O処理部分とは、前記キャッシュメモリの一領域であってデータを記憶させるためのキャッシュ領域を前記キャッシュメモリから確保することを含むキャッシュ制御処理を含んだ処理部分である。
第二の実施態様では、ストレージシステムが、割り振り先として選択されても良い一以上のマイクロプロセッサIDが表された情報である割り振り制御情報の記憶域を更に備えることができる。前記マイクロプロセッサは、前記割り振り制御情報を参照し、参照した割り振り制御情報に表されている一以上のマイクロプロセッサIDの中からマイクロプロセッサIDを選択し、選択したマイクロプロセッサIDに対応する他のマイクロプロセッサをI/O処理部分の割り振り先とすることができる。各マイクロプロセッサは、自分の負荷が第二の負荷以上の場合に、自分のマイクロプロセッサIDを前記割り振り制御情報に増やし、自分の負荷が第二の負荷未満の場合に、自分のマイクロプロセッサIDを前記割り振り制御情報から減らすことができる。
第三の実施態様では、前記第二の実施態様において、二以上のパッケージが更に備えられ、前記二以上のプロセッサパッケージ上に、前記複数のマイクロプロセッサが存在する。一つのプロセッサパッケージ上に、一以上のマイクロプロセッサと、前記キャッシュメモリに対するデータ通信に利用されるパスである内部データパスが搭載されている。前記割り振り制御情報には、ライト割り振り制御情報とリード割り振り制御情報とがある。前記ライト割り振り制御情報は、ライトI/O処理部分の割り振りを制御するために用いられる割り振り制御情報である。前記ライトI/O処理部分とは、前記I/O要求がライト要求である場合のI/O処理部分である。前記リード割り振り制御情報は、リードI/O処理部分の割り振りを制御するために用いられる割り振り制御情報である。前記リードI/O処理部分とは、前記I/O要求がリード要求である場合のI/O処理部分である。前記ライトI/O処理部分の割り振りが行われる場合には、前記ライトI/O処理部分の割り振りが行われずにライトI/O処理が行われる場合に比して、前記キャッシュメモリの負荷及び前記内部データパスの負荷が高くなる。各マイクロプロセッサは、前記ライト割り振り制御情報を更新する場合には、前記キャッシュメモリの負荷が或るメモリ負荷以上である、及び、自分を搭載するプロセッサパッケージの内部データパスの負荷が或るデータパス負荷以上である、のうちの少なくとも一方であるならば、自分のマイクロプロセッサIDを前記ライト割り振り制御情報から増やすことができる。また、各マイクロプロセッサは、前記キャッシュメモリの負荷が前記或るメモリ負荷未満である、及び、自分を搭載するプロセッサパッケージの内部データパスの負荷が前記或るデータパス負荷未満である、のうちの少なくとも一方であるならば、自分のマイクロプロセッサIDを前記ライト割り振り制御情報に増やすことができる。
第四の実施態様では、前記複数のマイクロプロセッサには、前記上位装置と前記キャッシュメモリとの間の通信を制御するマイクロプロセッサである二以上の上位マイクロプロセッサと、前記記憶装置と前記キャッシュメモリとの通信を制御するマイクロプロセッサである一以上の下位マイクロプロセッサとがある。上位マイクロプロセッサが、割り振り対象が、前記I/O要求がライト要求である場合のI/O処理部分であるライトI/O処理部分ならば、他の上位マイクロプロセッサに割り振り、一方、割り振り対象が、前記I/O要求がリード要求である場合のI/O処理部分であるリードI/O処理部分ならば、下位マイクロプロセッサに割り振ることができる。
第五の実施態様では、前記第四の実施態様において、前記上位マイクロプロセッサが前記他の上位マイクロプロセッサにライトI/O処理部分を割り振る場合、前記上位マイクロプロセッサが、前記ライト要求に従うデータをバッファに蓄積し、前記他の上位マイクロプロセッサが、前記バッファに記憶されたデータを前記キャッシュメモリに書くことができる。
第六の実施態様では、前記第五の実施態様において、前記上位マイクロプロセッサが前記ライトI/O処理部分の割り振りを行わない場合には、該上位マイクロプロセッサが、前記キャッシュメモリの一領域であってデータを記憶させるためのキャッシュ領域を前記キャッシュメモリから確保し(例えばキャッシュ領域をロックし)、前記確保したキャッシュ領域にデータを書き、その後、前記確保したキャッシュ領域を解放する(アンロックする)ことを行うようになっている。前記ライトI/O処理部分は、前記キャッシュ領域を確保することと、前記確保したキャッシュ領域を解放することとを含んだキャッシュ制御処理である。前記上位マイクロプロセッサが前記他の上位マイクロプロセッサにライトI/O処理部分を割り振る場合、前記上位マイクロプロセッサが、前記ライト要求に従うデータをバッファに蓄積し、前記他の上位マイクロプロセッサに所定の要求を発行し、前記他の上位マイクロプロセッサが、該所定の要求に応答して、前記キャッシュ領域を前記キャッシュメモリに確保し、前記バッファに記憶されたデータを前記確保されたキャッシュメモリに書き、前記確保したキャッシュ領域を解放して、完了報告を返し、前記上位マイクロプロセッサが、該完了報告に応答して、前記上位装置にステータスを送信することができる。
第七の実施態様では、前記第四の実施態様において、ライトI/O処理部分の割り振りを制御するために用いられる情報であるライト割り振り制御情報を記憶した記憶域が更に備えられる。前記ライト要求には、アクセス先を表す情報であるアクセス先情報が含まれている。前記ライト割り振り制御情報には、複数の領域の各々に対応付けられた領域ID及び上位マイクロプロセッサIDが記憶されている。各領域は、前記ライト要求に含まれている前記アクセス先情報から求められるアドレス範囲の一部分である。前記複数の領域には、周期的に、同じ上位マイクロプロセッサIDが対応付けられている。
第八の実施態様では、前記第四の実施態様において、リードI/O処理部分の割り振りを制御するために用いられる情報であるリード割り振り制御情報を記憶した記憶域が更に備えられる。前記下位マイクロプロセッサは複数個あり、各下位マイクロプロセッサには、通信可能に接続された記憶装置とそうではない記憶装置とがある。前記複数の記憶装置の二以上の記憶装置によりパリティグループが形成され、論理的な記憶デバイスである論理ユニットが、各パリティグループ毎に、一又は複数個形成されている。各通信ポート毎に、通信可能な論理ユニット並びに該論理ユニットを形成する一以上の記憶装置が決まっている。前記リード要求には、アクセス先を表す情報であるアクセス先情報が含まれており、該アクセス先情報には、論理ユニットのIDが含まれている。前記リード割り振り制御情報には、各通信ポート毎に、通信ポートのID、該通信ポートに通信可能な論理ユニットのID、及び、該論理ユニットを形成する各記憶装置に通信可能な各下位マイクロプロセッサのIDが記録されている。前記上位マイクロプロセッサが下位マイクロプロセッサにリードI/O処理部分を割り振る場合、該上位マイクロプロセッサが、リード要求を受信した通信ポートのIDと、該リード要求のアクセス先情報に含まれている論理ユニットIDとに対応した下位マイクロプロセッサIDに対応する下位マイクロプロセッサに、前記リードI/O処理部分の割り振ることができる。
第九の実施態様では、前記第四の実施態様において、前記上位マイクロプロセッサが前記リードI/O処理部分の割り振りを行わない場合には、該上位マイクロプロセッサが、前記キャッシュメモリの一領域であってデータを記憶させるためのキャッシュ領域を前記キャッシュメモリから確保し、所定の要求を下位マイクロプロセッサに送信し、該下位マイクロプロセッサが、該所定の要求に応答して、リード要求に従うデータを記憶装置から読み出して、確保されているキャッシュ領域に格納し、完了報告を返し、前記上位マイクロプロセッサが、該完了報告に応答して、該確保されているキャッシュ領域からデータを読み出し、該データとステータスとを前記上位装置に送信し、該確保されているキャッシュ領域を解放することができる。前記リードI/O処理部分は、前記キャッシュ領域を確保することと、前記確保したキャッシュ領域を解放することとを含んだキャッシュ制御処理である。前記上位マイクロプロセッサが前記下位マイクロプロセッサにリードI/O処理部分を割り振る場合、前記上位マイクロプロセッサが、前記下位マイクロプロセッサに確保要求を発行し、前記下位マイクロプロセッサが、該確保要求に応答して、リード要求に従うデータを記憶装置から読み出して、該確保されているキャッシュ領域に格納し、完了報告を返し、前記上位マイクロプロセッサが、該完了報告に応答して、該確保されているキャッシュ領域からデータを読み出し、該データとステータスとを前記上位装置に送信し、該確保されているキャッシュ領域を解放し、解放要求を前記下位マイクロプロセッサに送信し、該下位マイクロプロセッサが、該解放要求に応答して、前記確保されているキャッシュ領域を解放することができる。
第十の実施態様では、I/O処理部分の割り振りの失敗状況を表す情報である失敗状況情報を記憶する記憶域と、前記I/O処理部分の割り振りが失敗した場合に前記失敗状況情報を更新する失敗状況更新部と、前記失敗状況情報を含んだ負荷情報を出力する負荷情報出力部とが更に備えられる。
第十一の実施態様では、前記第十の実施態様において、二以上のプロセッサパッケージ上に、前記複数のマイクロプロセッサが存在し、一つのプロセッサパッケージ上に、一以上のマイクロプロセッサと、前記キャッシュメモリに対するデータ通信に利用されるパスである内部データパスが搭載されている。前記負荷情報には、更に、前記複数のマイクロプロセッサの各々の負荷を表す情報であるプロセッサ負荷情報と、各プロセッサパッケージ毎の内部データパスの負荷を表す情報である内部データパス負荷情報とが含まれている。
第十二の実施態様では、前記第十の実施態様において、所定の失敗状況以上に失敗されていることを示す失敗状況を前記失敗状況情報が表している場合に、マイクロプロセッサの増設を示唆する情報を表示する増設示唆部が更に備えられる。
本発明に従う管理計算機は、前記ストレージシステムから負荷情報を受信する受信部と、前記受信した負荷情報中の所定の失敗状況以上に失敗されていることを示す失敗状況を前記受信した失敗状況情報が表している場合に、マイクロプロセッサの増設を示唆する情報を表示する増設示唆部とを備える。増設示唆部は、前記プロセッサ負荷情報及び前記内部データパス負荷情報に基づいて、マイクロプロセッサの増設を示唆する情報を表示することができる。
上記各部は、各手段と言い換えることができる。上記各部は、ハードウェア(例えば回路)、コンピュータプログラム、或いはそれらの組み合わせ(例えば、コンピュータプログラムを読み込んで実行する一又は複数のCPU)によって実現することもできる。各コンピュータプログラムは、コンピュータマシンに備えられる記憶資源(例えばメモリ)から読み込むことができる。その記憶資源には、CD−ROMやDVD(Digital Versatile Disk)等の記録媒体を介してインストールすることもできるし、インターネットやLAN等の通信ネットワークを介してダウンロードすることもできる。
本発明によれば、複数のマイクロプロセッサを備えたストレージシステムにおいて一つのマイクロプロセッサに負荷が集中してしまうことを防ぐことができる。
以下、図面を参照して、本発明の一実施形態について説明する。
図1は、本発明の一実施形態の特徴の一つの概念を示す。
ストレージシステム2には、複数の記憶装置3と、一以上の記憶装置3に対するデータの入出力を処理する一以上のマイクロプロセッサ(以下、「DKP」と略記)32と、上位装置1000から発行されたI/O要求を処理する複数のマイクロプロセッサ(以下、「CHP」と略記する)12とが備えられる。このストレージシステム2では、上位装置1000からI/O要求(ライト要求或いはリード要求)を受けたCHP12は、そのI/O要求の処理(以下、I/O処理)の少なくとも高負荷部分(例えば、後述するキャッシュヒット判定やキャッシュロック)を、他のCHP12或いはDKP32に、割り振る。これにより、割り振り元のCHP12は、I/O処理のうちの少なくとも高負荷の処理を実行することから解放され、その分、そのCHP12の負荷が軽くなる。本明細書では、マイクロプロセッサから別のマイクロプロセッサにI/O処理の少なくとも高負荷部分(以下、「I/O処理部分」と略記する)を割り振ることを、「オフロード」と呼ぶこともある。
なお、CHP12は、他のCHP12とDKP32のいずれにもI/O処理部分をオフロードできるが、本実施形態では、I/O要求がライト要求である場合には、ライト要求のI/O処理の少なくとも高負荷部分(以下、ライトI/O処理部分)を他のCHP12にオフロードし、一方、I/O要求がリード要求である場合には、リード要求のI/O処理の少なくとも高負荷部分(以下、リードI/O処理部分)をDKP32にオフロードする。
また、上位装置1000は、I/O要求を発行する装置であれば良く、例えば、ホスト計算機或いは他のストレージシステムとすることができる。
図2は、本実施形態の別の特徴の概念を示す。
ストレージシステム2は、各マイクロプロセッサ12、32の負荷を特定するための情報要素を含んだ負荷情報を所定の記憶域に保持し、且つ、その負荷情報を、各マイクロプロセッサ12、32の負荷の変化に応じて、更新する。
そのストレージシステム2には、ストレージシステム2を管理するためのサーバ(以下、管理サーバ)40が接続されている。管理サーバ40は、ストレージシステム2で管理されている負荷情報を取得し、取得した負荷情報を解析することにより、ストレージシステム2内の各CHP12やDKP32の負荷がわかる。管理サーバ40は、割り振り先の候補の全て(例えば、全てのマイクロプロセッサ12、32、全てのDKP32、或いは、全てのCHP12)の負荷が、I/O処理部分のオフロードを引き受けられない程に高い(例えば、負荷が所定の閾値よりも高い)ことがわかった場合、マイクロプロセッサの増設を提示するための増設提示情報(例えば、マイクロプロセッサの増設を指示するメッセージ)を出力する。管理者は、出力された増設提示情報を見た場合に、一以上のマイクロプロセッサをストレージシステム2に増設する。
具体的には、例えば、図2に示すように、全てのCHP12の負荷が高くなったことがわかった場合には、ライトI/O処理部分の割り振り先の候補が無い状態なので、管理サーバ40により、CHPの増設を提示するための増設提示情報が出力される。管理者は、その増設提示情報を見た場合、一以上のCHP12を備えたプロセッサパッケージ(例えば後述のCHA)10をストレージシステム2に増設する。ライトI/O処理部分の割り振り元のCHP12は、プロセッサパッケージ10が増設されたことを検出した場合に、増設されたプロセッサパッケージ10に備えられている他のCHP12に、ライトI/O処理部分をオフロードする。
以下、本実施形態について詳細に説明する。
図3は、ストレージサブシステム2の構成例を示す。
ストレージシステム2は、例えば、配列された複数の記憶装置3を備えるディスクアレイ装置である。ストレージシステム2には、上位装置の一種でありI/O要求を発行するホスト計算機(以下、単にホスト)1や、ストレージシステム2を管理するための前述した管理サーバ40が接続される。ストレージシステム2は、コントローラ部と、複数の記憶装置3(図3には1つのみ図示)とを備える。
記憶装置3としては、例えば、ハードディスク、フレキシブルディスク、磁気テープ、半導体メモリ、光ディスク等のようなデバイスを用いることができる。以下、記憶装置3は、ハードディスクドライブとし、それを「ディスク」と略称する。複数のディスク3には、複数の論理ユニット(図示せず)が用意される。各論理ユニットは、例えば、複数のディスク3のうちの二以上のディスク3がRAID(Redundant Array of Independent (or Inexpensive) Disks)の法則に従ってグループ化され、グループ化された二以上のディスク3(以下、パリティグループと呼ぶが、RAIDグループ或いはアレイグループと呼ばれることもある)が有する記憶資源を用いて用意された論理的な記憶デバイスである。
コントローラ部は、ストレージシステム2で行われる処理を制御する部であり、具体的には、例えば、一以上のチャネルアダプタ(CHA)4と、一以上のディスクアダプタ(DKA)30と、サービスプロセッサ(SVP)6と、キャッシュメモリ20と、共有メモリ60と、内部ネットワーク7とを備える。
各CHA4は、ホスト1との間のデータ通信を行う回路基盤である。各CHA4は、ホストI/Fポート11と、CHP12と、CHP12にとってのローカルなメモリ(以下、ローカルメモリ13)と、内部ネットワーク7に接続される内部I/F16とを備える。ローカルメモリ13には、CHP12に実行されるコンピュータプログラム、例えば、I/O処理プログラム14や、周期処理プログラム15が記憶される。
CHA4の数や、一つのCHA4に備えられる前述の構成要素の数は、一以上であれば幾つでも良い。特に、例えば、CHA4の数や、一つのCHA4に搭載されるCHP12の数は、ストレージシステム2内に複数のCHP12が存在すれば、幾つでもよい。ホストI/Fポート11とCHP12は関連付けられており、一つのCHA4に複数のホストI/Fポート11及び複数のCHP12が備えられている場合には、I/O要求を受信したホストI/Fポート11に関連付けられているCHP12が、そのI/O要求の処理を実行する。なお、前述したように、本実施形態では、CHP12は、自分の負荷が所定の基準値よりも高い場合には、他のCHP12或いはDKP32に、そのI/O処理部分をオフロードすることができる。
各DKA30は、ディスク3との間のデータ授受を行うものである。DKA30のハードウェア構成としては、CHA4と同様とすることができる。すなわち、DKA30は、内部I/F31や、DKP32や、DKP32にとってのローカルなメモリ(ローカルメモリ33)や、ディスク3とデータを授受するディスクI/Fポート36を備える。ローカルメモリ33に記憶されているI/O処理プログラム34や周期処理プログラム35のうち少なくともI/O処理プログラム34は、マイクロプロセッサをDKP32として実行させるためのコンピュータプログラムである。DKA30とディスク3との通信は、例えば、種々の通信媒体、例えば、FC−AL(Fibre Channel Arbitration Loop)、FCスイッチ、或いはSAS(Serial Attached SCSI)スイッチ(SASエクスパンダと呼ばれることもある)を介して行われる。
SVP6は、ストレージシステム2の保守又は管理のために操作されるコンピュータ装置である。SVP6は、SVP6にとってのローカルなメモリ(ローカルメモリ50)を備え、そのローカルメモリ50に記憶されている負荷情報収集プログラム51を実行することにより、前述した負荷情報を収集し、収集された負荷情報を、管理I/Fポート5を介して管理サーバ40に送信することができる。なお、管理サーバ40は、一種の計算機であり、CPU43や、ストレージシステム2と通信するためのインターフェース(I/F)44や、管理プログラム42が記憶されたメモリ41を備える。CPU43が管理プログラム42を実行することにより、ストレージシステム2に負荷情報を求めるための負荷情報取得要求が発行され、その負荷情報取得要求がサービスプロセッサ6に受信された場合に、前述した負荷情報収集プログラム51により、収集された負荷情報を管理サーバ40が受けることができる。
内部ネットワーク7は、各CHA4、各DKA30、SVP6、キャッシュメモリ20及び共有メモリ60を相互に接続させる。内部ネットワーク7は、例えば、高速スイッチング動作によってデータ伝送を行う超高速クロスバススイッチ等のような高速バスとして構成することができる。また、LAN、SANのような通信ネットワークでも構成でき、さらに、前述の高速バスとともに複数のネットワークでも構成することができる。
キャッシュメモリ20は、ホスト1から受信したデータや、ディスク3から読み出されたデータ等を一時的に記憶するものである。キャッシュメモリ20には、データを記憶するメモリモジュール22と、メモリモジュール22に対するデータの読み書きを制御するメモリコントローラ21とを備える。メモリコントローラ21は、内部ネットワーク7を介して受信したデータをメモリモジュール22に書込んだり、メモリモジュール22からデータを読み出して内部ネットワーク7を介しCHA4或いはDKA30に送信したりする。
共有メモリ60は、ストレージシステム2の制御に用いられる制御情報を記憶したメモリであり、CHA4とDKA30に共有されるメモリである。共有メモリ60は、キャッシュメモリ20と一体にされてもよい。共有メモリ60には、例えば、ステージング要求先テーブル62、ライト振り先テーブル61、オフロード許可ビットマップ64、キャッシュ制御情報63、プロセッサ稼働率情報66、内部データパス利用率情報65、キャッシュメモリ負荷情報68、I/Oカウント値67及びオフロード失敗カウント値69が記憶される。
ステージング要求先テーブル62は、ディスク3に記憶されたデータをキャッシュメモリ20に読み出すこと(ステージ)を実行するマイクロプロセッサ、換言すれば、リードI/O処理部分の割り振り先のDKP、を決定するために使用されるテーブルである。ステージング要求先テーブル62の構成例を図4に示す。ステージング要求先テーブル62には、ホストI/Fポート11毎に、ポート番号、LUN(論理ユニット番号)、ディスクID及び振り先プロセッサIDが記録される。一つのLUNには、そのLUNを提供する全て(例えば4つ)のディスクのIDが対応付けられている。LUNは、例えば、I/O要求で指定されている。ディスクIDは、例えば、I/O要求で指定されている先頭論理ブロックアドレスを変換して得られる内部アドレスを基に特定されるIDである。このテーブル62では、一つのポート番号、一つのLUN及び一つのディスクIDに対して、一つの振り先プロセッサIDが対応付けられている。CHP12は、リード要求を受けたホストI/Fポート11のポート番号と、そのリード要求から求まるLUN及びディスクIDに対応する一以上の振り先プロセッサを、リードI/O処理部分の割り振り先とする。
ライト振り先テーブル61は、ライトI/O処理部分の割り振り先のCHPを決定するために使用されるテーブルである。ライト振り先テーブル61の構成例を図5に示す。ライト振り先テーブル61には、複数の領域の各々に対応するIDと振り先プロセッサIDとが記録される。ここで言う「領域」とは、I/O要求に含まれている情報(例えば、LUN及び先頭論理ブロックアドレスのようなアクセス先情報)を用いて特定されるアクセス先のことである。具体的には、例えば、領域は、DKA30側の論理的なアドレス空間(上記アクセス先情報を変換することにより得られるアドレスの範囲)を構成する要素である。本実施形態では、所定個数の領域毎に(つまり周期的に)、同じ領域IDが割り当てられる(図6の例では、10個の領域毎に(例えば、領域A01の後の領域A11に)、同一の領域ID(例えば0)が割り当てられる)。各領域IDには、一つの振り先プロセッサID(CHPのID)が対応付けられている。このような構成により、ライトI/O処理部分の割り振り先が特定のCHP12に集中してしまうのを抑えることができる。なお、このライト振り先テーブル61では、ライトI/O処理部分のオフロードが行われない領域の領域IDには、無効値(無効な振り先プロセッサID、例えば、プロセッサIDとして存在し得ない値)が対応付けられる。また、このライト振り先テーブル61に記録される振り先プロセッサIDは、各CHP12の負荷に応じて、増減される。例えば、CHP12は、自分の負荷が高くなった場合に、一又は複数の領域IDに対応付けられている自分のプロセッサIDを無効値に変更し、逆に、自分の負荷が低くなった場合に、一又は複数の領域IDに対応付けられている無効値を自分のプロセッサIDに変更することができる。
オフロード許可ビットマップ64は、各DKP32に対してリードI/O処理部分をオフロードしてもよいか否かを表わすビットマップである。具体的には、例えば、図7に例示するように、各DKP32のID(プロセッサID)に1ビットが対応しており、その1ビットは、オフロード可を表す値(例えば"1")か、又は、オフロード不可を表す値(例えば"0")となる。
キャッシュ制御情報63は、キャッシュヒットしたか否かの判定や排他制御などのキャッシュ制御に使用される情報である。キャッシュ制御情報63には、例えば、複数のキャッシュ領域(例えば、メモリモジュール22の一記憶域)の各々について、キャッシュ領域のキャッシュポインタ(以下、キャッシュポインタ)と、キャッシュポインタの属性情報とが含まれる。属性情報としては、例えば、ロックの有無と、キャッシュ領域のステータスと、データの領域アドレスとが含まれる。キャッシュ領域の状態としては、例えば、未割り当てであることを意味する"フリー"と、キャッシュ領域に記憶されているデータがディスク3に未反映であることを意味する"ダーティ"と、キャッシュ領域3に記憶されているデータがディスク3に存在することを意味する"クリーン"とがある。各マイクロプロセッサ12、32は、リードI/O処理やライトI/O処理でのキャッシュヒット判定の場合には、キャッシュ領域ステータスがクリーン又はダーティであり、且つ、データ領域アドレスが、リード要求或いはライト要求で指定されているアクセス先情報(例えばLUNや先頭論理ブロックアドレス)を変換することにより得られたアドレスに対応していれば、キャッシュヒットとし、そうでなければ、キャッシュミスとする。各マイクロプロセッサ12、32は、キャッシュヒットとなった場合には、キャッシュ領域をロックし(ロック有りとし)、キャッシュミスとなった場合には、キャッシュ領域を割り当てて(例えば、未割り当てのキャッシュ領域を選択し、選択したキャッシュ領域に対応するデータ領域アドレスに、I/O要求のアクセス先情報を変換して得られたアドレスを設定し)、割り当てたキャッシュ領域をロックする。このように、キャッシュ領域をロックすることにより、他のCHP12や他のDKP32からそのキャッシュ領域がロックされないようになる、つまり、キャッシュ領域のいわゆる排他制御が行われる。なお、キャッシュ領域が解放される場合には、例えば、ロック有無がロック無しとされる。また、キャッシュヒットしたか否かの判定や、キャッシュ領域のロックの方法は、他の方法が採用されても良い。
プロセッサ稼働率情報66は、各マイクロプロセッサ12、32の稼働率を表す。具体的には、例えば、各マイクロプロセッサ12、32のID毎に、稼働率が記録される。
内部データパス利用率情報65には、各アダプタ4、30において、そのアダプタ4、30が有する内部パス(例えば外部I/Fポート11、36から内部I/F16、36にかけたパス)の転送能力に対して実際にデータ転送で使用されている能力を表す率(以下、内部データパス利用率)が記録される。内部データパス利用率は、例えば、各アダプタ4、30毎に記録される。
キャッシュメモリ負荷情報68は、キャッシュメモリ20にかかっている負荷を表す情報であり、例えば、キャッシュメモリ20の転送能力に対して実際にデータ転送で使用されている能力を表す率(以下、これを「キャッシュメモリ負荷」と言う)である。
I/Oカウント値67は、ストレージシステム2のI/O要求の処理回数(受信回数であってもよい)のカウント値である。I/Oカウント値67は、例えば、I/O要求を受信する都度に、カウント値が1増やされる。I/Oカウント値67は、周期的にリセットされても良いし、リセットされずに更新されていってもよい。
オフロード失敗カウント値69は、I/O処理部分のオフロードに失敗した回数のカウント値である。オフロード失敗カウント値69は、例えば、振り元プロセッサがオフロードしようとしたが振り先プロセッサの都合によりオフロードできなかった場合に、1増やされる。振り先プロセッサの数が不足すると、この値が増えやすくなる。オフロード失敗カウント値69は、I/Oカウント値67と同じ周期でリセットされても良いし、リセットされずに更新されていってもよい。
以下、本実施形態で行われる処理の流れの一例を説明する。
図8は、CHP12でI/O処理プログラム14が実行されることにより行われる処理の流れの一例を示す。
I/O処理プログラム14は、イベント待ちになっており(ステップS1)、イベントが発生した場合には、そのイベントの種別を判定する(S2)。
S2の結果、イベントが、ホスト1からリード要求の受信であった場合には、I/O処理プログラム14は、リードI/O処理を実行する(S3)。S2の結果、イベントが、ホスト1からライト要求の受信であった場合には、I/O処理プログラム14は、ライトI/O処理を実行する(S4)。S2の結果、イベントが、他のCHPからのコピー要求であった場合には、I/O処理プログラム14は、ライト振り先処理を実行する(S5)。
図9は、図8のS3であるリードI/O処理の流れの一例を示す。
I/O処理プログラム14は、自分を実行しているCHP12のプロセッサ稼働率と、所定の基準値とを比較する(S11)。そのプロセッサ稼働率は、S11の比較の直前に算出された値であっても良いし、プロセッサ稼働率情報66から読み出された、自分を実行しているCHP12に対応した値であっても良い。S11の比較の結果、プロセッサ稼働率が基準値以下であれば(S11でNo)、通常リードI/O処理(S17)が行われ、一方、プロセッサ稼働率が基準値を超えていれば(S11でYes)、S12が行われる。
S12では、I/O処理プログラム14は、ステージング要求先テーブル62から、リード要求を受信したホストI/Fポート11のポート番号と、そのリード要求から求まるLUN及びディスクIDに対応した一以上の振り先プロセッサIDを取得する。また、I/O処理プログラム14は、オフロード許可ビットマップ64を参照し、S12で取得された各振り先プロセッサIDに対応する各ビットの値を認識する(S13)。
S13の結果、振り先プロセッサIDに対応したビットが、オフロード不可を表す値になっていたならば(S13でNo)、I/O処理プログラム14は、オフロード失敗カウント値69に1を足し(S16)、通常リード処理(S17)を実行する。一方、S13の結果、振り先プロセッサIDに対応したビットが、オフロード可を表す値になっていたならば(S13でYes)、I/O処理プログラム14は、リード振り元処理(S14)を実行する。ここでは、各振り先プロセッサIDについて、同じ結果になることもあれば、或る振り先プロセッサIDについてはオフロードが行われるが別の振り先プロセッサIDについてはオフロードに失敗するということもあり得る。
S14或いはS17が終了した場合、I/O処理プログラム14は、I/Oカウント値67に1を足す(S15)。
図10は、図9のS14であるリード振り元処理の流れの一例を示す。図11は、図10のリード振り元処理が実行されることにより行われるリード振り先処理の流れの一例を示す。
I/O処理プログラム14は、図9のS12で取得された各振り先プロセッサID(オフロード可のビット値に対応した各振り先プロセッサID)に対応する各DKP32に、データ確保要求を送る(S21)。データ確保要求を受けたDKP32では、I/O処理プログラム34が、図11のリード振り先処理を実行する。
I/O処理プログラム34は、まず、キャッシュヒット判定を行う(S31)。
S31の結果、キャッシュヒットならば、I/O処理プログラム34は、キャッシュヒットとなったキャッシュ領域をロックし(S32)、ステージング済みなので、ステージングすることなく振り元プロセッサ(データ確保要求の送信元のCHP12)に完了報告を送る(S35)。一方、S31の結果、キャッシュミスならば、I/O処理プログラム34は、キャッシュ領域を割り当ててロックし(S32)、ステージングを行い(すなわち、リード要求対象のデータをディスク3から読み出し、ロックされたキャッシュ領域に格納し)(S34)、振り元プロセッサに完了報告を送る(S35)。
振り元プロセッサにおいて、I/O処理プログラム14は、図10のS21の後、振り先プロセッサからの完了報告を待っており(S22)、完了報告を受けたならば、ロックされたキャッシュ領域に格納されているデータを読み出し、読み出したデータをホスト1(リード要求の送信元)に送り(S23)、且つ、ステータス(例えば読出し終了)も、そのホスト1に送る(S24)。そして、I/O処理プログラム14は、振り先プロセッサ(DKP32)に、キャッシュ解放要求を送る(S25)。
振り先プロセッサにおいて、I/O処理プログラム34は、図11のS35の後、振り元プロセッサからのキャッシュ解放要求を待っており(S36)、キャッシュ解放要求を受けたならば、キャッシュ領域を解放する(S37)。具体的には、例えば、I/O処理プログラム34は、キャッシュ制御情報63における、キャッシュ領域に対応したロック有りを、ロック無しに変更することにより、そのキャッシュ領域を解放する。
以上のように、リード振り元処理が行なえれば、リードI/O処理部分がDKP32にオフロードされるが、リード振り元処理が行えなければ、図9を参照して説明した通り、通常リードI/O処理が行われる。
図12は、通常リードI/O処理の流れの一例の概要を示す。
CHP12で実行されるI/O処理プログラム14が、キャッシュヒット判定を行い、その結果、キャッシュミスとなれば、キャッシュ領域を割り当ててロックし、ステージング要求を、リード要求対象のデータのあるディスク3に対応したDKP32に送信し、完了報告を待つ。
DKP32で実行されるI/O処理プログラム34が、CHP12からのステージング要求に応答して、キャッシュヒット判定を行う。既にキャッシュが割り当てられているので、その判定では、キャッシュヒットなる。I/O処理プログラム34は、キャッシュヒットとなったキャッシュ領域をロックし(つまり、そのキャッシュ領域は二重にロックされ)、ステージングを行う。それが終了したら、I/O処理プログラム34は、完了報告をCHP12に返信し、且つ、ロックしたキャッシュ領域を解放する。
CHP12で実行されるI/O処理プログラム14が、完了報告を受けたならば、自分がロックしたキャッシュ領域からデータを読出し、読み出したデータをホスト1に送信し、且つ、ステータスを送信する。それが終了したら、I/O処理プログラム14は、自分がロックしたキャッシュ領域を解放する。
以上の通常リードI/O処理と、前述したリード振り元処理及びリード振り先処理(それらが行われる場合のリードI/O処理の流れの概要を図13に示す)とを比較すると、振り元のCHP12から、リードI/O処理部分として、例えば、キャッシュヒットの判定、キャッシュを割り当ててロックする処理、及びキャッシュ領域を解放する処理(以下、これらを「キャッシュ制御処理」と総称する)がオフロードされているのがわかる(なお、最後に通信が増えているのは、I/O処理の完了まで振り先DKP32にロックを保持させるためである)。通常リードI/O処理において、キャッシュ制御処理が、他の処理に比して負荷が高い。その高負荷のキャッシュ制御処理のオフロードを実行するために、プロセッサ稼働率のチェックや、オフロード可否のチェックを含む、通常リードI/O処理とは異なる図9のリードI/O処理が行われ、リード要求を受けたCHP12の負荷(プロセッサ稼働率)が基準値以下の場合、或いは、オフロード不可の場合に、通常リードI/O処理が行われる。
以上のようにして、リード要求を受けたCHP12の負荷が高い場合には、リードI/O処理部分が、CHP12からDKP32にオフロードされる。これにより、振り元CHP12の負荷を下げて振り元プロセッサCHP12のネックを回避することができ、以って、1ポート限界性能の向上につながる。なお、CHP12からDKP32にリードI/O処理部分がオフロードされても、CHP12の負荷が低くなった分だけDKP32の負荷が高くなるわけではなく、DKP32の負荷にあまり大きな変化は無いと考えられる。オフロードの有無に関わらず(つまり通常リードI/O処理でも)、DKP32はキャッシュ制御処理を行うためである。
図14は、図8のS4であるライトI/O処理の流れの一例を示す。
I/O処理プログラム14は、自分を実行しているCHP12のプロセッサ稼働率と、所定の基準値とを比較する(S41)。S41の比較の結果、プロセッサ稼働率が基準値以下であれば(S41でNo)、I/O処理プログラム14は、通常ライトI/O処理を行い(S47)、一方、プロセッサ稼働率が基準値を超えていれば(S41でYes)、S42を行う。
S42では、I/O処理プログラム14は、ライト振り先テーブル61から、ライト要求から求まる領域のIDに対応した振り先プロセッサIDを取得する。I/O処理プログラム14は、取得された振り先プロセッサIDが無効値であれば(S43でNo)、オフロード失敗カウント値69に1を足し(S46)、通常ライト処理(S17)を実行する。一方、取得された振り先プロセッサIDが無効値でなければ(S43でYes)、I/O処理プログラム14は、ライト振り元処理(S44)を実行する。
S44或いはS47が終了した場合、I/O処理プログラム14は、I/Oカウント値67に1を足す(S45)。
図15は、図14のS44であるライト振り元処理の流れの一例を示す。図16は、図15のライト振り元処理が実行されることにより行われるライト振り先処理(図8のS5)の流れの一例を示す。
I/O処理プログラム14は、ホスト1からデータ(ライト要求に従うデータ)を受領し、受領したデータをバッファに格納する(S51)。バッファは、ストレージシステム2における記憶域であれば、どこに存在しても良いが、本実施形態では、キャッシュメモリ20に設けられる。
I/O処理プログラム14は、図14のS42で取得された振り先プロセッサIDに対応する他のCHP12に、コピー要求を送る(S21)。これにより、他のCHP12では、図8において、コピー要求受信というイベントの発生となる。なお、そのコピー要求には、例えば、バッファに格納されたデータのポインタが含まれている。
他のCHP12に実行されるI/O処理プログラム14(以下、他のI/O処理プログラム14)は、コピー要求に応答して、まず、キャッシュヒット判定を行う(図16のS61)。
S61の結果、キャッシュヒットならば、他のI/O処理プログラム14は、キャッシュヒットとなったキャッシュ領域をロックし(S63)、S64を行う。一方、S61の結果、キャッシュミスならば、他のI/O処理プログラム14は、キャッシュ領域を割り当ててロックし(S62)、受信したコピー要求から特定されるデータを、バッファから、ロックされたキャッシュ領域にコピーする(S64)。そして、他のI/O処理プログラム14は、振り元プロセッサに完了報告を送り、ロックされているキャッシュ領域を解放する(S66)。
振り元プロセッサにおいて、I/O処理プログラム14は、図15のS52の後、振り先プロセッサからの完了報告を待っており(S53)、完了報告を受けたならば、ステータス(例えば書き込み終了)を、ライト要求の送信元のホスト1に送る(S54)。
以上のように、ライト振り元処理が行なえれば、ライトI/O処理部分が他のCHP12にオフロードされるが、ライト振り元処理が行えなければ、図14を参照して説明した通り、通常ライトI/O処理が行われる。
図17は、通常ライトI/O処理の流れの一例の概要を示す。
I/O処理プログラム14が、キャッシュヒット判定を行い、その結果、キャッシュミスとなれば、キャッシュ領域を割り当ててロックし、ホスト1からデータを受領し、受領したデータをキャッシュ領域に格納して、ホスト1にステータスを返信し、キャッシュ領域を解放する。
以上の通常ライトI/O処理と、前述したライト振り元処理及びライト振り先処理(それらが行われる場合のライトI/O処理の流れの概要を図18に示す)とを比較すると、振り元のCHP12から、ライトI/O処理部分として、例えば、前述したキャッシュ制御処理(具体的には、キャッシュヒットの判定、キャッシュを割り当ててロックする処理、及びキャッシュ領域を解放する処理)が、オフロードされているのがわかる。通常ライトI/O処理において、キャッシュ制御処理が、他の処理に比して負荷が高い。その高負荷のキャッシュ制御処理のオフロードを実行するために、プロセッサ稼働率のチェックや、振り先プロセッサIDが有効か否かの判定を含む、通常ライトI/O処理とは異なる図14のライトI/O処理が行われ、ライト要求を受けたCHP12の負荷(プロセッサ稼働率)が基準値以下の場合、或いは、振り先プロセッサIDが無効値の場合に、通常ライトI/O処理が行われる。
以上のようにして、ライト要求を受けたCHP12の負荷が高い場合には、ライトI/O処理部分が、CHP12から他のCHP12にオフロードされる。これにより、振り元CHP12の負荷を下げて振り元プロセッサCHP12のネックを回避することができ、以って、1ポート限界性能の向上につながる。なお、本実施形態では、CHP12がバッファにデータを格納し、割り振り先の他のCHP12が、キャッシュ領域を確保して、バッファからそのキャッシュ領域にデータをコピーしている。つまり、二重にキャッシュメモリ20にデータを書いている。このため、一見手間に見えるが、正しくキャッシュ領域を確保する処理が高負荷なので、上記のようにした方が、CHP12にとって負荷が軽くなる。
また、本実施形態によれば、ライトI/O処理は、ホスト1からのデータをキャッシュ領域に格納する処理と、該データをキャッシュ領域からディスク3書込む処理とに分けることができる。DKP32は、後者の処理を行う必要があり、複数のディスク3によりパリティグループとする構成を採っていると、データの書き込みのために複数のDKP32が働くことになる。一方、CHP12は、ホストからI/O要求を受けなければ低負荷である。これらの点を鑑みて、本実施形態では、ライトI/O処理部分はDKP32ではなく他のCHP12にオフロードされる。
また、本実施形態によれば、リードI/O処理部分を他のCHP12にオフロードしてしまうと、キャッシュミスの場合に、他のCHP12からDHP32にステージング要求を送信するという無駄が生じてしまう。この点に鑑みて、本実施形態では、リードI/O処理部分は他のCHP12ではなくDKP32にオフロードされる。
さて、次に、CHP12の周期処理について説明する。その周期処理では、CHP12の稼働率、そのCHP12を搭載したCHA4のデータパス利用率、及びキャッシュメモリ負荷に応じて、そのCHP12の担当する領域を増減する処理が行われる。
図19は、CHP12の周期処理の流れの一例を示す。この周期処理は、周期処理プログラム15がCHP12により実行されることにより行われる。
CHP12は、自分の稼働率を、共有メモリ60のプロセッサ稼働率情報に、自分のプロセッサIDに対応付けて書く(S71)。
また、CHP12は、自分を搭載しているCHA4の内部データパス利用率を、内部I/F16のレジスタから読んで、共有メモリ60の内部データパス利用率情報65に、そのCHA4のIDに対応付けて書く(S72)。内部データパス利用率は、例えば、CHA4の所定の構成要素(例えば内部I/FのLSI)によって、定期的に、内部I/Fのレジスタ(図示せず)に書かれるようになっている。内部データパス利用率が書かれる場所は、そのレジスタに限らず、CHA4の他の場所であっても良い。
さらに、CHP12は、キャッシュメモリ負荷情報を、キャッシュメモリ20のメモリコントローラ21のレジスタから読んで、共有メモリ60に書く(S73)。キャッシュメモリ負荷情報は、メモリコントローラ21によって、それのレジスタ(図示せず)に書かれるようになっている。キャッシュメモリ情報が書かれる場所は、そのレジスタに限らず、他の場所であっても良い。
CHP12は、S71で書いたプロセッサ稼働率が稼働率基準値以上か未満であるかを判定する(S74)。プロセッサ稼働率が稼働率基準値未満であれば、CHP12は、S72で書いた内部データパス利用率が利用率基準値以上か未満かを判定する(S75)。その内部データパス利用率が利用率基準値未満であれば、CHP12は、S73で書いたキャッシュメモリ負荷情報が表すキャッシュメモリ負荷が負荷基準値以上か未満かを判定する(S76)。そのキャッシュメモリ負荷が負荷基準値未満であれば、CHP12は、ライト担当領域拡大処理(S77)を実行し、S74、S75及びS76のうちの一つでも以上と判断された場合には、ライト担当領域縮小処理(S78)を実行する。
以上の処理によれば、CHP12は、自分に対してライトI/O処理部分が割り振られた方が好ましい場合には、自分が割り振り先に決定される確率を高めるためにライト担当領域拡大処理を行い、反対に、自分に対してライトI/O処理部分が割り振られない方が好ましい場合には、自分が割り振り先に決定される確率を低めるためにライト担当領域縮小処理を行う。なお、プロセッサ稼働率が稼働率基準値以上の場合にライト担当領域縮小処理を行うのは、割り振りを受けるとプロセッサ稼働率が一層高くなってしまうので、それを防ぐためである。また、内部データパス利用率が利用率基準値以上の場合にライト担当領域縮小処理を行うのは、割り振りを受けると内部データパス利用率が高くなってしまうので、それを防ぐためである。キャッシュメモリ負荷が負荷基準値以上の場合にライト担当領域縮小処理を行うのは、割り振りを受けるとキャッシュメモリ20との通信回数が増えてしまうので、それを防ぐためである。
図20は、ライト担当領域拡大処理の流れの一例を示す。
CHP12は、ライト振り先テーブル61の先頭要素(先頭行)を検査対象とし(S81)、その検査対象における振り先プロセッサIDが無効値か否かを判定する(S82)。
S82の結果、無効値であれば、CHP12は、その無効値を自分のプロセッサIDに変えて(S83)、処理を終了する。
一方、S82の結果、無効値でなければ、CHP12は、次の要素(次行)を検査対象として(S84でNo、S85)、再びS82の判定を行う。CHP12は、このような処理を、S82で無効値が見つかるまで繰り返し、テーブル61の全体を調査しても、無効値が見つからなければ(S84でYes)、処理を終了する。
図21は、ライト担当領域縮小処理の流れの一例を示す。
CHP12は、ライト振り先テーブル61の先頭要素(先頭行)を検査対象とし(S91)、その検査対象における振り先プロセッサIDが自プロセッサIDか否かを判定する(S92)。
S92の結果、自プロセッサIDであれば、CHP12は、自プロセッサIDを無効値に変えて(S93)、処理を終了する。
一方、S92の結果、自プロセッサIDでなければ、CHP12は、次の要素(次行)を検査対象として(S94でNo、S95)、再びS92の判定を行う。CHP12は、このような処理を、S92で自プロセッサIDが見つかるまで繰り返し、テーブル61の全体を調査しても、自プロセッサIDが見つからなければ(S94でYes)、処理を終了する。
さて、次に、DKP32の周期処理について説明する。その周期処理では、DKP32のプロセッサ稼働率に応じて、オフロード許可ビットマップをON/OFFする処理が行われる。
図22は、DKP32の周期処理の流れの一例を示す。この周期処理は、周期処理プログラム35がDKP32により実行されることにより行われる。
DKP32は、自分の稼働率を、共有メモリ60のプロセッサ稼働率情報に、自分のプロセッサIDに対応付けて書く(S101)。
DKP32は、S101で書いたプロセッサ稼働率が稼働率基準値以上か未満であるかを判定する(S74)。この稼働率基準値は、オフロードするか否かの判定で使用される基準値、或いは、CHP13の周期処理で使用される基準値と、同じ値であっても異なる値であっても良い。
DKP32は、S74で稼働率基準値未満であれば、オフロード許可ビットマップの、自プロセッサIDに対応するビットを1(ON)にし、一方、S74で稼働率基準値以上であれば、オフロード許可ビットマップの、自プロセッサIDに対応するビットを0(OFF)にする。
以上の処理によれば、DKP32が、自分の負荷に応じて、自分が割り振り先として決定される確率を調整することができる。
さて、次に、ハードウェアの増設を支援するための処理について説明する。その処理では、例えば、管理サーバ40のCPU43が管理プログラム42を実行することによって、負荷チェック処理が定期的に或いは不定期的に行われる。
図23は、負荷チェック処理の流れの一例を示す。
管理サーバ40が、SVP6に、負荷情報の取得要求を送り(S111)、負荷情報受信待ちとなる(S112)。SVP6では、図24に示すように、負荷情報取得要求待ちになっており(S131)、負荷情報取得要求を受けた場合、負荷情報(プロセッサ稼働率情報66、内部データパス利用率情報65、オフロード失敗カウント値69、及びI/Oカウント値67)が共有メモリ60から読み出され(S132)、読み出された負荷情報が、管理サーバ40に送られる(S133)。
管理サーバ40は、負荷情報を受信したならば、受信した負荷情報を表示する(S113)。また、管理サーバ40は、負荷情報を用いてオフロード失敗率を算出し、算出されたオフロード失敗率が失敗率基準値以上か否かを判定する(S114)。オフロード失敗率は、例えば、オフロード失敗カウント値をI/Oカウント値で除算することにより算出される。
S114の結果、オフロード失敗率が失敗率基準値以上であれば、管理サーバ40は、振り先資源不足通知処理(S115)を実行する。
図25は、振り先資源不足通知処理の流れの一例を示す。
管理サーバ40は、負荷情報中の各プロセッサ稼働率が稼働率基準値以上か否かを比較し(S121)、稼働率基準値以上のプロセッサ稼働率があれば、「プロセッサ高負荷」のメッセージと、稼働率基準値以上の箇所(例えば、CHA4或いはDKA30のIDと、プロセッサID)を表示する(S122)。この表示に応答して、管理者は、例えば、高負荷のプロセッサがCHP12であって、そのCHP12の数が多いと感じたならば、CHA4を増設すれば、オフロード失敗率を下げることが期待できるし、高負荷のプロセッサがDKP32であり、DKP32の数が多いと感じたならば、DKA30を増設すれば、オフロード失敗率を下げることが期待できる。
また、管理サーバ40は、負荷情報中の各内部データパス利用率が利用率基準値以上か否かを比較し(S123)、利用率基準値以上のパッケージ(CHA4或いはDKA30)があれば、「内部データパス高負荷」のメッセージと、利用率基準値以上の箇所(例えば、CHA4或いはDKA30のID)を表示する(S124)。この表示に応答して、例えば、管理者は、高負荷のパッケージがCHA4であり、そのCHA4の数が多いと感じたならば、CHA4を増設すれば、オフロード失敗率を下げることが期待できるし、高負荷のパッケージがDKA30であり、そのDKA30の数が多いと感じたならば、DKA30を増設すれば、オフロード失敗率を下げることが期待できる。
以上のような負荷チェック処理や振り先資源不足通知処理により、管理者が振り先ネック解消のためにハードウェア増設を計画することを支援できる。
以上、本発明の好適な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、オフロード失敗カウント値は、リードとライト別に用意され、オフロード失敗率は、リードとライト別に算出され、その結果を基に、パッケージの増設が提示されても良い(例えば、リードのオフロード失敗率が基準値以上であるが故に振り先資源不足通知処理が行われた場合、増設対象は、DKAとなっても良い)。また、管理サーバ40に代わって、SVP6或いはホスト1が、負荷チェック処理及び振り先不足資源通知処理を行っても良い。また、共有メモリ60に格納される種々の情報の少なくとも一部が各ローカルメモリ13、33に格納され、共有メモリ60を参照する代わりにローカルメモリ13或いは33が参照されてもよい。また、キャッシュメモリ負荷が基準値以上であれば、キャッシュメモリの増設が提示されても良い。
図1は、本発明の一実施形態の特徴の一つの概念を示す。 図2は、本実施形態の別の特徴の概念を示す。 図3は、ストレージサブシステム2の構成例を示す。 図4は、ステージング要求先テーブル62の構成例を示す。 図5は、ライト振り先テーブル61の構成例を示す。 図6は、実施の形態の説明で言う領域についての説明図である。 図7は、オフロード許可ビットマップ64の構成例を示す。 図8は、CHP12でI/O処理プログラム14が実行されることにより行われる処理の流れの一例を示す。 図9は、図8のS3であるリードI/O処理の流れの一例を示す。 図10は、図9のS14であるリード振り元処理の流れの一例を示す。 図11は、図10のリード振り元処理が実行されることにより行われるリード振り先処理の流れの一例を示す。 図12は、通常リードI/O処理の流れの一例の概要を示す。 図13は、リード振り元処理及びリード振り先処理が行われる場合のリードI/O処理の流れの概要を示す。 図14は、図8のS4であるライトI/O処理の流れの一例を示す。 図15は、図14のS44であるライト振り元処理の流れの一例を示す。 図16は、図15のライト振り元処理が実行されることにより行われるライト振り先処理の流れの一例を示す。 図17は、通常ライトI/O処理の流れの一例の概要を示す。 図18は、ライト振り元処理及びライト振り先処理が行われる場合のライトI/O処理の流れの概要を示す。 図19は、CHP12の周期処理の流れの一例を示す。 図20は、ライト担当領域拡大処理の流れの一例を示す。 図21は、ライト担当領域縮小処理の流れの一例を示す。 図22は、DKP32の周期処理の流れの一例を示す。 図23は、負荷チェック処理の流れの一例を示す。 図24は、負荷情報取得処理の流れの一例を示す。 図25は、振り先資源不足通知処理の流れの一例を示す。
符号の説明
1…ホスト 2…ストレージシステム 3…ディスク 4…チャネルアダプタ 6…サービスプロセッサ 12…チャネルプロセッサ 20…キャッシュメモリ 30…ディスクアダプタ 32…ディスクプロセッサ 61…ライト振り先テーブル 62…ステージング要求先テーブル 63…キャッシュ制御情報 64…オフロード許可ビットマップ 65…内部データパス利用率情報 66…プロセッサ稼働率情報 67…I/Oカウント値 68…キャッシュメモリ負荷情報 69…オフロード失敗カウント値

Claims (14)

  1. I/O要求を発行する上位装置とデータを授受する複数の通信ポートと、
    I/O処理に従うデータが読み書きされる複数の記憶装置と、
    前記上位装置と前記複数の記憶装置との間で授受されるデータを一時的に記憶するキャッシュメモリと
    通信ポートを介して受信したI/O要求の処理であるI/O処理を実行する複数のマイクロプロセッサであって、前記上位装置と前記キャッシュメモリとの間の通信を制御するマイクロプロセッサである二以上の上位マイクロプロセッサと、前記記憶装置と前記キャッシュメモリとの通信を制御するマイクロプロセッサである一以上の下位マイクロプロセッサとを含む複数のマイクロプロセッサと
    を備え、
    )前記複数のマイクロプロセッサのうち、受信したI/O要求のI/O処理を行う上位マイクロプロセッサである振り元プロセッサは、前記I/O要求の種別を判別し、
    )前記()において前記I/O要求がライト要求であると判別された場合、
    (b1)前記振り元プロセッサが、自分の負荷が第一の負荷以上の場合に、そのライト要求のライト処理のうちのライト処理部分でありキャッシュヒット判定、キャッシュロック及びキャッシュ解放を含むライト時キャッシュ制御処理を、前記複数のマイクロプロセッサのうちの他の上位マイクロプロセッサであるライト振り先プロセッサに割り振り、
    (b2)該ライト振り先プロセッサが、該ライト処理部分として、キャッシュヒット判定を行い、前記キャッシュヒット判定がミスだった場合に、前記キャッシュメモリからキャッシュ領域を割り当てて、そのキャッシュ領域をロックし、一方、前記キャッシュヒット判定がヒットだった場合に、ヒットしたキャッシュ領域をロックし、前記ライト要求に従うデータを、ロックされた前記キャッシュ領域に格納し、完了報告を前記振り元プロセッサに送信し、且つ、ロックされている前記キャッシュ領域のロックを解除することによりそのキャッシュ領域を解放し、
    (b3)その後、前記振り元プロセッサが、前記完了報告を受信し、前記ライト要求の完了報告を前記上位装置に送り、
    )前記()において前記I/O要求がリード要求であると判別された場合、
    (c1)前記振り元プロセッサが、自分の負荷が第一の負荷以上の場合に、該リード要求のリード処理のうちのリード処理部分でありキャッシュヒット判定、キャッシュロック及びキャッシュ解放を含むリード時キャッシュ制御処理を、前記複数のマイクロプロセッサのうちのいずれか下位マイクロプロセッサであるリード振り先プロセッサに割り振り、
    (c2)該リード振り先プロセッサが、該リード処理部分として、キャッシュヒット判定を行い、前記キャッシュヒット判定がミスだった場合に、前記キャッシュメモリからキャッシュ領域を割り当てて、そのキャッシュ領域をロックして、そのキャッシュ領域に、前記リード要求に従うデータを読み出し、完了報告を前記振り元プロセッサに送信し、一方、前記キャッシュヒット判定がヒットだった場合に、ヒットしたキャッシュ領域をロックし、完了報告を前記振り元プロセッサに送信し、
    (c3)前記振り元プロセッサが、前記完了報告を受けて、ロックされている前記キャッシュ領域に記憶されている、前記リード要求に従うデータを、前記上位装置に送キャッシュ解放要求を前記リード振り先プロセッサに送信し、
    (c4)前記リード振り先プロセッサが、前記キャッシュ解放要求を受けて、ロックされている前記キャッシュ領域のロックを解除することによりそのキャッシュ領域を解放する、
    ストレージシステム。
  2. 割り振り先として選択されても良い一以上のマイクロプロセッサIDが表された情報である割り振り制御情報の記憶域を更に備え、
    前記振り元プロセッサは、前記割り振り制御情報を参照し、参照した割り振り制御情報に表されている一以上のマイクロプロセッサIDの中からマイクロプロセッサIDを選択し、選択したマイクロプロセッサIDに対応する他のマイクロプロセッサを前記ライト処理部分又は前記リード処理部分の割り振り先とし、
    各マイクロプロセッサは、自分の負荷が第二の負荷以上の場合に、自分のマイクロプロセッサIDを前記割り振り制御情報に増やし、自分の負荷が第二の負荷未満の場合に、自分のマイクロプロセッサIDを前記割り振り制御情報から減らす、
    請求項1記載のストレージシステム。
  3. 二以上のプロセッサパッケージを備え、
    前記二以上のプロセッサパッケージ上に、前記複数のマイクロプロセッサが存在し、一つのプロセッサパッケージ上に、一以上のマイクロプロセッサと、前記キャッシュメモリに対するデータ通信に利用されるパスである内部データパスが搭載されており、
    前記割り振り制御情報には、ライト割り振り制御情報とリード割り振り制御情報とがあり、
    前記ライト割り振り制御情報は、ライト処理部分の割り振りを制御するために用いられる割り振り制御情報であり、
    前記リード割り振り制御情報は、リード処理部分の割り振りを制御するために用いられる割り振り制御情報であり、
    前記ライト処理部分の割り振りが行われる場合には、前記ライト処理部分の割り振りが行われずにライト処理が行われる場合に比して、前記キャッシュメモリの負荷及び前記内部データパスの負荷が高くなり、
    各マイクロプロセッサは、前記ライト割り振り制御情報を更新する場合には、前記キャッシュメモリの負荷が或るメモリ負荷以上である、及び、自分を搭載するプロセッサパッケージの内部データパスの負荷が或るデータパス負荷以上である、のうちの少なくとも一方であるならば、自分のマイクロプロセッサIDを前記ライト割り振り制御情報から増やし、前記キャッシュメモリの負荷が前記或るメモリ負荷未満である、及び、自分を搭載するプロセッサパッケージの内部データパスの負荷が前記或るデータパス負荷未満である、のうちの少なくとも一方であるならば、自分のマイクロプロセッサIDを前記ライト割り振り制御情報に増やす、
    請求項2記載のストレージシステム。
  4. ライト処理部分の割り振りを制御するために用いられる情報であるライト割り振り制御情報を記憶した記憶域を更に備え、
    前記ライト要求には、アクセス先を表す情報であるアクセス先情報が含まれており、
    前記ライト割り振り制御情報には、複数の領域の各々に対応付けられた領域ID及び上位マイクロプロセッサIDが記憶され、
    各領域は、前記ライト要求に含まれている前記アクセス先情報から求められるアドレス範囲の一部分であり、
    前記複数の領域には、周期的に、同じ上位マイクロプロセッサIDが対応付けられている、
    請求項記載のストレージシステム。
  5. リード処理部分の割り振りを制御するために用いられる情報であるリード割り振り制御情報を記憶した記憶域を更に備え、
    前記下位マイクロプロセッサは複数個あり、各下位マイクロプロセッサには、通信可能に接続された記憶装置とそうではない記憶装置とがあり、
    前記複数の記憶装置の二以上の記憶装置によりパリティグループが形成され、論理的な記憶デバイスである論理ユニットが、各パリティグループ毎に、一又は複数個形成されており、
    各通信ポート毎に、通信可能な論理ユニット並びに該論理ユニットを形成する一以上の記憶装置が決まっており、
    前記リード要求には、アクセス先を表す情報であるアクセス先情報が含まれており、該アクセス先情報には、論理ユニットのIDが含まれており、
    前記リード割り振り制御情報には、各通信ポート毎に、通信ポートのID、該通信ポートに通信可能な論理ユニットのID、及び、該論理ユニットを形成する各記憶装置に通信可能な各下位マイクロプロセッサのIDが記録されており、
    前記振り元プロセッサがリード振り先プロセッサにリード処理部分を割り振る場合、該振り元プロセッサが、リード要求を受信した通信ポートのIDと、該リード要求のアクセス先情報に含まれている論理ユニットIDとに対応した下位マイクロプロセッサIDに対応する下位マイクロプロセッサに、前記リード処理部分を割り振る、
    請求項又は記載のストレージシステム。
  6. 前記ライト処理部分及び前記リード処理部分の割り振りの失敗状況を表す情報である失敗状況情報を記憶する記憶域と、
    前記ライト処理部分及び前記リード処理部分の割り振りが失敗した場合に前記失敗状況情報を更新する失敗状況更新部と、
    前記失敗状況情報を含んだ負荷情報を出力する負荷情報出力部と
    を更に備える請求項1乃至のうちのいずれか1項に記載のストレージシステム。
  7. 二以上のプロセッサパッケージ上に、前記複数のマイクロプロセッサが存在し、一つのプロセッサパッケージ上に、一以上のマイクロプロセッサと、前記キャッシュメモリに対するデータ通信に利用されるパスである内部データパスが搭載されており、
    前記負荷情報には、更に、前記複数のマイクロプロセッサの各々の負荷を表す情報であるプロセッサ負荷情報と、各プロセッサパッケージ毎の内部データパスの負荷を表す情報である内部データパス負荷情報とが含まれている、
    請求項記載のストレージシステム。
  8. 所定の失敗状況以上に失敗されていることを示す失敗状況を前記失敗状況情報が表している場合に、マイクロプロセッサの増設を示唆する情報を表示する増設示唆部を更に備える、
    請求項又は記載のストレージシステム。
  9. ストレージシステムと、
    前記ストレージシステムを管理するための計算機である管理計算機と
    を備え、
    前記ストレージシステムが、
    I/O要求を発行する上位装置とデータを授受する複数の通信ポートと、
    I/O処理に従うデータが読み書きされる複数の記憶装置と、
    前記上位装置と前記複数の記憶装置との間で授受されるデータを一時的に記憶するキャッシュメモリと、
    通信ポートを介して受信したI/O要求の処理であるI/O処理を実行する複数のマイクロプロセッサであって、前記上位装置と前記キャッシュメモリとの間の通信を制御するマイクロプロセッサである二以上の上位マイクロプロセッサと、前記記憶装置と前記キャッシュメモリとの通信を制御するマイクロプロセッサである一以上の下位マイクロプロセッサとを含む複数のマイクロプロセッサと、
    I/O処理部分の割り振りの失敗状況を表す情報である失敗状況情報を記憶する記憶域と、
    前記I/O処理部分の割り振りが失敗した場合に前記失敗状況情報を更新する失敗状況更新部と、
    負荷情報を前記管理計算機に出力する負荷情報出力部と
    を備え、
    )前記複数のマイクロプロセッサのうち、受信したI/O要求のI/O処理を行う上位マイクロプロセッサである振り元プロセッサは、前記I/O要求の種別を判別し、
    )前記()において前記I/O要求がライト要求であると判別された場合、
    (b1)前記振り元プロセッサが、自分の負荷が第一の負荷以上の場合に、そのライト要求のライト処理のうちのライト処理部分でありキャッシュヒット判定、キャッシュロック及びキャッシュ解放を含むライト時キャッシュ制御処理を、前記複数のマイクロプロセッサのうちの他の上位マイクロプロセッサであるライト振り先プロセッサに割り振り、
    (b2)該ライト振り先プロセッサが、該ライト処理部分として、キャッシュヒット判定を行い、前記キャッシュヒット判定がミスだった場合に、前記キャッシュメモリからキャッシュ領域を割り当てて、そのキャッシュ領域をロックし、一方、前記キャッシュヒット判定がヒットだった場合に、ヒットしたキャッシュ領域をロックし、前記ライト要求に従うデータを、ロックされた前記キャッシュ領域に格納し、完了報告を前記振り元プロセッサに送信し、且つ、ロックされている前記キャッシュ領域のロックを解除することによりそのキャッシュ領域を解放し、
    (b3)その後、前記振り元プロセッサが、前記完了報告を受信し、前記ライト要求の完了報告を前記上位装置に送り、
    )前記()において前記I/O要求がリード要求であると判別された場合、
    (c1)前記振り元プロセッサが、自分の負荷が第一の負荷以上の場合に、該リード要求のリード処理のうちのリード処理部分でありキャッシュヒット判定、キャッシュロック及びキャッシュ解放を含むリード時キャッシュ制御処理を、前記複数のマイクロプロセッサのうちのいずれか下位マイクロプロセッサであるリード振り先プロセッサに割り振り、
    (c2)該リード振り先プロセッサが、該リード処理部分として、キャッシュヒット判定を行い、前記キャッシュヒット判定がミスだった場合に、前記キャッシュメモリからキャッシュ領域を割り当てて、そのキャッシュ領域をロックして、そのキャッシュ領域に、前記リード要求に従うデータを読み出し、完了報告を前記振り元プロセッサに送信し、一方、前記キャッシュヒット判定がヒットだった場合に、ヒットしたキャッシュ領域をロックし、完了報告を前記振り元プロセッサに送信し、
    (c3)前記振り元プロセッサが、前記完了報告を受けて、ロックされている前記キャッシュ領域に記憶されている、前記リード要求に従うデータを、前記上位装置に送キャッシュ解放要求を前記リード振り先プロセッサに送信し、
    (c4)前記リード振り先プロセッサが、前記キャッシュ解放要求を受けて、ロックされている前記キャッシュ領域のロックを解除することによりそのキャッシュ領域を解放し、
    前記管理計算機が、
    前記ストレージシステムから負荷情報を受信する受信部と、
    前記受信した負荷情報中の所定の失敗状況以上に失敗されていることを示す失敗状況を前記受信した失敗状況情報が表している場合に、マイクロプロセッサの増設を示唆する情報を表示する増設示唆部と
    を備える計算機システム。
  10. 二以上のプロセッサパッケージ上に、前記複数のマイクロプロセッサが存在し、一つのプロセッサパッケージ上に、一以上のマイクロプロセッサと、前記キャッシュメモリに対するデータ通信に利用されるパスである内部データパスが搭載されており、
    前記負荷情報には、更に、前記複数のマイクロプロセッサの各々の負荷を表す情報であるプロセッサ負荷情報と、各プロセッサパッケージ毎の内部データパスの負荷を表す情報である内部データパス負荷情報とが含まれており、
    前記増設示唆部が、前記プロセッサ負荷情報及び前記内部データパス負荷情報に基づいて、マイクロプロセッサの増設を示唆する情報を表示する、
    請求項記載の計算機システム。
  11. I/O要求を発行する上位装置とデータを授受する複数の通信ポートと、
    I/O処理に従うデータが読み書きされる複数の記憶装置と、
    前記上位装置と前記複数の記憶装置との間で授受されるデータを一時的に記憶するキャッシュメモリと
    通信ポートを介して受信したI/O要求の処理であるI/O処理を実行する複数のマイクロプロセッサであって、前記上位装置と前記キャッシュメモリとの間の通信を制御するマイクロプロセッサである二以上の上位マイクロプロセッサと、前記記憶装置と前記キャッシュメモリとの通信を制御するマイクロプロセッサである一以上の下位マイクロプロセッサとを含む複数のマイクロプロセッサと
    を備えたストレージシステムにおけるマイクロプロセッサの負荷分散方法であって、
    )前記複数のマイクロプロセッサのうち、受信したI/O要求のI/O処理を行う上位マイクロプロセッサである振り元プロセッサは、前記I/O要求の種別を判別し、
    )前記()において前記I/O要求がライト要求であると判別された場合、
    (b1)前記振り元プロセッサが、前記振り元プロセッサの負荷が第一の負荷以上の場合に、該ライト処理のうちのライト処理部分でありキャッシュヒット判定、キャッシュロック及びキャッシュ解放を含むライト時キャッシュ制御処理を、前記複数のマイクロプロセッサのうちの他の上位マイクロプロセッサであるライト振り先プロセッサに割り振り、
    (b2)該ライト振り先プロセッサが、該ライト処理部分として、キャッシュヒット判定を行い、前記キャッシュヒット判定がミスだった場合に、前記キャッシュメモリからキャッシュ領域を割り当てて、そのキャッシュ領域をロックし、一方、前記キャッシュヒット判定がヒットだった場合に、ヒットしたキャッシュ領域をロックし、前記ライト要求に従うデータを、ロックされた前記キャッシュ領域に格納し、完了報告を前記振り元プロセッサに送信し、且つ、ロックされている前記キャッシュ領域のロックを解除することによりそのキャッシュ領域を解放し、
    (b3)その後、前記振り元プロセッサが、前記完了報告を受信し、前記ライト要求の完了報告を前記上位装置に送り、
    )前記()において前記I/O要求がリード要求であると判別された場合、
    (c1)前記振り元プロセッサが、自分の負荷が第一の負荷以上の場合に、該リード処理のうちのリード処理部分でありキャッシュヒット判定、キャッシュロック及びキャッシュ解放を含むリード時キャッシュ制御処理を、前記複数のマイクロプロセッサのうちのいずれか下位マイクロプロセッサであるリード振り先プロセッサに割り振り、
    (c2)該リード振り先プロセッサが、該リード処理部分として、キャッシュヒット判定を行い、前記キャッシュヒット判定がミスだった場合に、前記キャッシュメモリからキャッシュ領域を割り当てて、そのキャッシュ領域をロックして、そのキャッシュ領域に、前記リード要求に従うデータを読み出し、完了報告を前記振り元プロセッサに送信し、一方、前記キャッシュヒット判定がヒットだった場合に、ヒットしたキャッシュ領域をロックし、完了報告を前記振り元プロセッサに送信し、
    (c3)前記振り元プロセッサが、前記完了報告を受けて、ロックされている前記キャッシュ領域に記憶されている、前記リード要求に従うデータを、前記上位装置に送キャッシュ解放要求を前記リード振り先プロセッサに送信し、
    (c4)前記リード振り先プロセッサが、前記キャッシュ解放要求を受けて、ロックされている前記キャッシュ領域のロックを解除することによりそのキャッシュ領域を解放する、
    負荷分散方法。
  12. 割り振り先として選択されても良い一以上のマイクロプロセッサIDが表された情報である割り振り制御情報に表されている前記一以上のマイクロプロセッサIDの中からマイクロプロセッサIDを選択し、選択されたマイクロプロセッサIDに対応するマイクロプロセッサが前記他のマイクロプロセッサであり、
    マイクロプロセッサの負荷が第二の負荷以上の場合に、該マイクロプロセッサのマイクロプロセッサIDを前記割り振り制御情報に増やし、該マイクロプロセッサの負荷が第二の負荷未満の場合に、該マイクロプロセッサのマイクロプロセッサIDを前記割り振り制御情報から減らす、
    請求項11記載の負荷分散方法。
  13. I/O処理部分の割り振りの失敗状況を表す情報である失敗状況情報を、前記I/O処理部分の割り振りが失敗した場合に前記失敗状況情報を更新し、
    所定の失敗状況以上に失敗されていることを示す失敗状況を前記失敗状況情報が表している場合に、マイクロプロセッサの増設を示唆する情報を表示する、
    請求項11又は12記載の負荷分散方法。
  14. I/O要求を発行する上位装置とデータを授受する複数の通信ポートと、
    I/O処理に従うデータが読み書きされる複数の記憶装置と、
    前記上位装置と前記複数の記憶装置との間で授受されるデータを一時的に記憶するキャッシュメモリと、
    前記上位装置と前記キャッシュメモリとの間の通信を制御するマイクロプロセッサである二以上の上位マイクロプロセッサと、
    前記記憶装置と前記キャッシュメモリとの通信を制御するマイクロプロセッサである一以上の下位マイクロプロセッサと、
    I/O処理部分の割り振りの失敗状況を表す情報である失敗状況情報を記憶する記憶域と、
    前記失敗状況情報を含んだ負荷情報を出力する負荷情報出力部と
    を備え、
    )前記複数のマイクロプロセッサのうち、受信したI/O要求のI/O処理を行う上位マイクロプロセッサである振り元プロセッサは、前記I/O要求の種別を判別し、
    )前記()において前記I/O要求がライト要求であると判別された場合、
    (b1)前記振り元プロセッサは、自分の負荷が前記第一の負荷以上であれば、該ライト要求のライト処理のうちのライト処理部分でありキャッシュヒット判定、キャッシュロック及びキャッシュ解放を含むライト時キャッシュ制御処理を、他の上位マイクロプロセッサであるライト振り先プロセッサに割り振り、
    (b2)該ライト振り先プロセッサが、該ライト処理部分として、キャッシュヒット判定を行い、前記キャッシュヒット判定がミスだった場合に、前記キャッシュメモリからキャッシュ領域を割り当てて、そのキャッシュ領域をロックし、一方、前記キャッシュヒット判定がヒットだった場合に、ヒットしたキャッシュ領域をロックし、前記ライト要求に従うデータを、ロックされた前記キャッシュ領域に格納し、完了報告を前記振り元プロセッサに送信し、且つ、ロックされている前記キャッシュ領域のロックを解除することによりそのキャッシュ領域を解放し、
    (b3)その後、前記振り元プロセッサが、前記完了報告を受信し、前記ライト要求の完了報告を前記上位装置に送り、
    )前記()において前記I/O要求がリード要求であると判別された場合、
    (c1)前記振り元プロセッサが、自分の負荷が前記第一の負荷以上であれば、該リード要求のリード処理のうちのリード処理部分でありキャッシュヒット判定、キャッシュロック及びキャッシュ解放を含むリード時キャッシュ制御処理を、下位マイクロプロセッサであるリード先振り先プロセッサに割り振り、
    (c2)該リード振り先プロセッサが、該リード処理部分として、キャッシュヒット判定を行い、前記キャッシュヒット判定がミスだった場合に、前記キャッシュメモリからキャッシュ領域を割り当てて、そのキャッシュ領域をロックして、そのキャッシュ領域に、前記リード要求に従うデータを読み出し、完了報告を前記振り元プロセッサに送信し、一方、前記キャッシュヒット判定がヒットだった場合に、ヒットしたキャッシュ領域をロックし、完了報告を前記振り元プロセッサに送信し、
    (c3)前記振り元プロセッサが、前記完了報告を受けて、ロックされている前記キャッシュ領域に記憶されている、前記リード要求に従うデータを、前記上位装置に送り、キャッシュ解放要求を前記リード振り先プロセッサに送信し、
    (c4)前記リード振り先プロセッサが、前記キャッシュ解放要求を受けて、ロックされている前記キャッシュ領域のロックを解除することによりそのキャッシュ領域を解放し、
    前記キャッシュ制御処理は、前記ライト処理や前記リード処理における他の処理よりも前記上位マイクロプロセッサにとって高負荷の処理であり、
    前記ライト処理部分或いは前記リード処理部分の割り振りに失敗した場合に、前記振り元プロセッサが、前記失敗状況情報を更新する、
    ストレージシステム。
JP2006073867A 2006-03-17 2006-03-17 マイクロプロセッサの負荷分散機能を備えたストレージシステム Expired - Fee Related JP5089896B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2006073867A JP5089896B2 (ja) 2006-03-17 2006-03-17 マイクロプロセッサの負荷分散機能を備えたストレージシステム
US11/429,527 US8271979B2 (en) 2006-03-17 2006-05-05 Storage system comprising microprocessor load distribution function
EP06254558A EP1835389A3 (en) 2006-03-17 2006-08-31 Storage system comprising microprocessor load distribution function
US13/588,226 US9262095B2 (en) 2006-03-17 2012-08-17 Storage system comprising microprocessor load distribution function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006073867A JP5089896B2 (ja) 2006-03-17 2006-03-17 マイクロプロセッサの負荷分散機能を備えたストレージシステム

Publications (2)

Publication Number Publication Date
JP2007249729A JP2007249729A (ja) 2007-09-27
JP5089896B2 true JP5089896B2 (ja) 2012-12-05

Family

ID=38116168

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006073867A Expired - Fee Related JP5089896B2 (ja) 2006-03-17 2006-03-17 マイクロプロセッサの負荷分散機能を備えたストレージシステム

Country Status (3)

Country Link
US (2) US8271979B2 (ja)
EP (1) EP1835389A3 (ja)
JP (1) JP5089896B2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070282880A1 (en) * 2006-05-31 2007-12-06 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Partial role or task allocation responsive to data-transformative attributes
JP4933284B2 (ja) * 2007-01-25 2012-05-16 株式会社日立製作所 ストレージ装置及び負荷分散方法
US7715321B2 (en) * 2007-01-30 2010-05-11 International Business Machines Corporation Network interface card transmission control protocol acceleration offload failure detection and recovery mechanism
JP5330702B2 (ja) 2008-01-31 2013-10-30 株式会社日立製作所 複数のコントローラモジュールを備えた記憶装置システム
US7962671B2 (en) 2008-11-21 2011-06-14 Hitachi, Ltd. Storage apparatus and method of updating control information in storage apparatus
CN102754090B (zh) * 2010-06-17 2015-09-16 株式会社日立制作所 包括多个微处理器的存储系统以及用于在该存储系统中分担处理的方法
US8769199B2 (en) * 2011-05-17 2014-07-01 Lsi Corporation Methods and systems of distributing RAID IO load across multiple processors
WO2013001613A1 (ja) * 2011-06-28 2013-01-03 富士通株式会社 スケジューリング方法およびシステム
US10061718B2 (en) * 2012-06-28 2018-08-28 Microsoft Technology Licensing, Llc Protecting secret state from memory attacks
US9047129B2 (en) * 2012-07-23 2015-06-02 Adobe Systems Incorporated Systems and methods for load balancing of time-based tasks in a distributed computing system
JP5898377B2 (ja) * 2012-09-25 2016-04-06 株式会社日立製作所 ストレージ装置、及びストレージ装置の制御方法
JP5976937B2 (ja) * 2013-07-26 2016-08-24 株式会社日立製作所 コンピュータシステム
JP6136834B2 (ja) * 2013-10-07 2017-05-31 富士通株式会社 ストレージ制御装置、制御プログラムおよび制御方法
KR102075358B1 (ko) * 2013-11-11 2020-03-02 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US20160342512A1 (en) * 2014-01-21 2016-11-24 Hitachi, Ltd. Storage system and processing method
WO2015151239A1 (ja) * 2014-04-02 2015-10-08 株式会社日立製作所 通信用半導体集積回路、ストレージ装置およびストレージ装置の障害管理方法
JP6428309B2 (ja) * 2015-01-27 2018-11-28 富士通株式会社 演算処理システムおよび演算処理システムの制御方法
US9959146B2 (en) * 2015-10-20 2018-05-01 Intel Corporation Computing resources workload scheduling
US10579277B1 (en) * 2017-10-27 2020-03-03 EMC IP Holding Company LLC Non-disruptive insertion of virtualized storage appliance
JP7011156B2 (ja) 2017-11-20 2022-01-26 富士通株式会社 ストレージ制御装置およびプログラム
US11144226B2 (en) * 2019-04-11 2021-10-12 Samsung Electronics Co., Ltd. Intelligent path selection and load balancing
US11099759B2 (en) 2019-06-03 2021-08-24 Advanced New Technologies Co., Ltd. Method and device for dividing storage devices into device groups
CN110347497B (zh) * 2019-06-03 2020-07-21 阿里巴巴集团控股有限公司 一种将多个存储设备划分设备组的方法及装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68925114T2 (de) 1988-01-27 1996-06-20 Storage Technology Corp Frühstartmodus-verfahren und -vorrichtung
US5121479A (en) 1988-01-27 1992-06-09 Storage Technology Corporation Early start mode data transfer apparatus
US5680574A (en) * 1990-02-26 1997-10-21 Hitachi, Ltd. Data distribution utilizing a master disk unit for fetching and for writing to remaining disk units
US5301324A (en) * 1992-11-19 1994-04-05 International Business Machines Corp. Method and apparatus for dynamic work reassignment among asymmetric, coupled processors
JP3264465B2 (ja) 1993-06-30 2002-03-11 株式会社日立製作所 記憶システム
JP3503690B2 (ja) 2000-01-06 2004-03-08 国産電機株式会社 電動機速度制御装置
JP2001306365A (ja) * 2000-04-27 2001-11-02 Mitsubishi Electric Corp 負荷測定方式
JP4478321B2 (ja) * 2000-11-27 2010-06-09 富士通株式会社 ストレージシステム
JP4188602B2 (ja) 2002-01-10 2008-11-26 株式会社日立製作所 クラスタ型ディスク制御装置及びその制御方法
JP2003242097A (ja) * 2002-02-15 2003-08-29 Hitachi Ltd クロスコール機能を備えるディスク制御装置
JP2004054845A (ja) * 2002-07-24 2004-02-19 Sony Corp データ管理装置
JP2005056200A (ja) * 2003-08-05 2005-03-03 Hitachi Ltd データ管理方法、ディスク記憶装置およびディスク記憶システム
JP4391265B2 (ja) * 2004-02-26 2009-12-24 株式会社日立製作所 ストレージサブシステムおよび性能チューニング方法
JP4528551B2 (ja) * 2004-04-14 2010-08-18 株式会社日立製作所 ストレージシステム
JP4377279B2 (ja) 2004-05-06 2009-12-02 株式会社日立製作所 ストレージシステム、コンピュータシステム、およびストレージシステムの設定方法
DE602004011757T2 (de) 2004-07-01 2009-02-05 Sap Ag Datenverarbeitungssystem zur Zuweisung von Objekten an Verarbeitungseinheiten
EP1626339B1 (en) * 2004-08-13 2016-02-24 Sap Se Data processing system and method for assigning objects to processing units

Also Published As

Publication number Publication date
US8271979B2 (en) 2012-09-18
JP2007249729A (ja) 2007-09-27
US20120311204A1 (en) 2012-12-06
EP1835389A2 (en) 2007-09-19
US9262095B2 (en) 2016-02-16
US20070220514A1 (en) 2007-09-20
EP1835389A3 (en) 2009-12-02

Similar Documents

Publication Publication Date Title
JP5089896B2 (ja) マイクロプロセッサの負荷分散機能を備えたストレージシステム
JP4775846B2 (ja) 物理リンクの割当てを制御するコンピュータシステム及び方法
JP4790372B2 (ja) ストレージのアクセス負荷を分散する計算機システム及びその制御方法
US7617360B2 (en) Disk array apparatus and method of controlling the same by a disk array controller having a plurality of processor cores
JP5099128B2 (ja) ストレージ管理プログラム、ストレージ管理装置およびストレージ管理方法
JP4890033B2 (ja) 記憶装置システム及び記憶制御方法
JP4842593B2 (ja) ストレージ仮想化装置のデバイス制御引継ぎ方法
US7480780B2 (en) Highly available external storage system
US6601138B2 (en) Apparatus system and method for N-way RAID controller having improved performance and fault tolerance
JP4477906B2 (ja) ストレージシステム
JP4896500B2 (ja) 機器停止を伴う仮想ボリューム制御方法
US7817626B2 (en) Storage subsystem
JP4609848B2 (ja) 負荷分散コンピュータシステム、経路設定プログラム及びその方法
JP2009043030A (ja) ストレージシステム
JP2005165702A (ja) クラスタストレージのデバイス連結方法
EP1708076B1 (en) Storage system and storage control method
JP2002032197A (ja) ディスクアレイ記憶装置の論理ボリュームの透過交換方法
US8578073B2 (en) Storage system and control method of storage system
US6922762B2 (en) Clustering storage system
US7694037B2 (en) Information processing apparatus and command multiplicity control method wherein commands are sent from a host to a target using iSCSI control protocol
JP2007179156A (ja) 記憶制御装置及び方法
JPH10198526A (ja) Raid装置及びそのアクセス制御方法
US8275958B2 (en) Storage system with remote copy controllers
US20120311275A1 (en) Storage subsystem and load distribution method
JP2009295045A (ja) ストレージシステム、ストレージサブシステム、及び記憶制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110426

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120125

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120323

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: 20120911

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120912

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150921

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees