JP5909566B2 - 計算機システム及びその制御方法 - Google Patents

計算機システム及びその制御方法 Download PDF

Info

Publication number
JP5909566B2
JP5909566B2 JP2014555651A JP2014555651A JP5909566B2 JP 5909566 B2 JP5909566 B2 JP 5909566B2 JP 2014555651 A JP2014555651 A JP 2014555651A JP 2014555651 A JP2014555651 A JP 2014555651A JP 5909566 B2 JP5909566 B2 JP 5909566B2
Authority
JP
Japan
Prior art keywords
request
processor
controller
processing
core
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.)
Active
Application number
JP2014555651A
Other languages
English (en)
Other versions
JP2015520425A (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 JP2015520425A publication Critical patent/JP2015520425A/ja
Application granted granted Critical
Publication of JP5909566B2 publication Critical patent/JP5909566B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • G06F13/34Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer with priority control
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Description

本発明は、ホスト計算機と記憶領域との間でのデータの入出力処理を制御するストレージシステム及びその制御方法に係り、詳しくは、ホスト計算機と記憶装置との間のデータの送受信を実行するコントローラが多重化された、クラスタ構造のストレージシステムに関するものである。
ホスト計算機と記憶領域間のアクセスを制御するコントローラが多重化されたストレージシステムは、クラスタ構成のストレージシステムとして知られている。この種のストレージシステムは、複数のコントローラを効果的に稼働させるために、あるコントローラのプロセッサが他のコントローラのメインメモリやインターフェース等のハードウェア資源にアクセスする必要があった。そこで、このアクセスを迅速かつ確実にするために、プロセッサはハードウェアに直接アクセスするのではなく、アクセスのための専用LSIを介してアクセスするようにしていた。クラスタ構成のコントローラを持つストレージシステムとして、特許第3719976号公報、及び、特開2008−269424号公報に開示されたものが知られている。
特許第3719976号公報 特開2008−269424号公報
近年、汎用LSIの性能が向上している事情もあって、専用LSIを用いることなく、汎用品を利用してストレージシステムのクラスタコントローラを構築することが求められている。このタイプのストレージシステムでは、二つのコントローラのプロセッサ同士をPCI‐Expressバスで接続することによって、複数のコントローラ同士がアクセスできるようにしている。
このタイプのストレージシステムでは、専用LSIを利用していないために、第1のコントローラのプロセッサは、第2のコントローラのデータ転送用ハードウェアやメモリ等のハードウェアリソースに直接アクセスできないが、第1のコントローラのプロセッサは第2のコントローラのプロセッサにリソースへのアクセスを依頼し、当該アクセスの結果を第2のコントローラのプロセッサから受け取るようにすればよい。
しかしながら、第2のコントローラのプロセッサはホストI/Oの処理を頻繁に行なっており、その間に、第1のコントローラのプロセッサからリクエストを受け付けても直ぐにこれに応答することができないために、専用LSIを利用したストレージシステムに比較して応答性能が低下するという問題があった。
そこで、第2のコントローラのプロセッサに、第1のコントローラのプロセッサからのリクエストを優先して処理させることが必要になる。この種の優先処理として、プロセッサ間で割り込み要求を用いる方法がある。しかし、割り込みがあった際にOSがそれまで動作していたプロセスから通常の割り込みハンドラへと処理を切り替える必要があり、このプロセスの切り替えに時間を要するためにオーバーヘッドが大きく、割り込み要求が多用されると性能が却って低下するという問題がある。
また、プロセッサにマルチコアプロセッサを用い、複数のコアのうちの一つを、他のコントローラからのリクエストを受け付ける専用のコアとして決め、このコアではホストI/O処理等の通常の処理を行わないことによって、他のコントローラから受け付けたリクエストへの応答時間を短縮する方法も考えられる。しかしながら、専用コアへの負荷が大きくなると、他のコントローラからのリクエストに対する処理が遅延し、一方、専用コアの数を増やすと、通常コアの割合が少なくなって、ホストI/O処理の性能が影響を受けるおそれもある。
そこで、本発明は、クラスタ構造のストレージシステムにおいて、一方のコントローラのプロセッサから他方のコントローラのプロセッサにアクセスが送られても、他方のコントローラのプロセッサは、このアクセスを優先処理できるとともに、I/O処理も遅延させないようにすることを目的とするものである。
前記目的を達成するために、本発明は、第1のコントローラの第1のプロセッサは、第2のコントローラの第2のプロセッサによって処理されるべき依頼情報を当該第2のプロセッサに優先処理させるものとそうでないものとを区別して当該第2のプロセッサに送信し、かつ、当該第2のプロセッサは、優先処理する依頼情報とそうではない依頼情報とを区別して取得することを特徴とするストレージシステム及びその制御方法である。
本発明によれば、第2のプロセッサは第1のプロセッサからの依頼情報を全て優先処理するものではなく、ストレージシステムの運用上優先することが必要なものから処理するために、第2のプロセッサのホスト計算機からのI/O処理を遅延させることもない。
本発明によれば、クラスタ構造のストレージシステムにおいて、一方のコントローラのプロセッサから他方のコントローラのプロセッサにアクセスが送られても、当該第2のコントローラのプロセッサは、このアクセスを優先処理できるとともに、I/O処理も遅延させないようにすることができる。
図1は、第1の実施形態に係るストレージシステムを有する計算機システムのハードウェアブロック図である。 図2は、コントローラのMPUメモリの構成例に係るブロック図である。 図3は、MPUメモリのテキスト領域のソフトウェアリソースの構成を示すブロック図である。 図4は依頼送信プログラムの処理フローの一例である。 図5は依頼送信プログラムの他の形態を示すフローチャートである。 図6は割り込み受信プログラムの処理フローの一例である。 図7は通常受信プログラムの処理フローの一例である。 図8は代理アクセスプログラムの処理フローの一例である。 図9はタイマー同期プログラムの処理フローの一例である。 図10は依頼処理識別テーブルの構成例である。 図11はアクセス先属性テーブルのである。 図12は自他系判定テーブルの構成例である。 図13はホスト計算機2からのリードI/O処理のフローチャートである。 図14は図13のフローチャートの一部を詳しく説明したものである。 図15は図13のフローチャートの一部を詳しく説明したものである。 図16は第2の実施形態のMPUメモリの構成例である。 図17は専用コア判定テーブルの構成例である。 図18は、第2の実施形態における、MPUメモリのソフトウェア構成図である。 図19は第2の実施形態における依頼送信プログラムの処理フローの一例である。 図20は、専用コア数調整プログラムのフローチャートである。 図21は依頼方式要件テーブルの一例である。 図22Aは依頼方式利用可否テーブルの第1の例である。 図22Bは依頼方式利用可否テーブルの第2の例である。 図23は第4の実施形態における依頼送信プログラムのフローチャートである。 図24はボリューム毎に既述の性能要件を定めた、ボリューム性能要件テーブルの構成例である。 図25はユーザがボリュームのI/O性能要件を設定するための入力画面の一例である。 図26は期待通信応答時間補正のためのフローチャートである。
実施形態1
次に本発明にストレージシステムの実施形態を図面に基づいて説明する。ストレージシステムは、デュアルコントローラ構成を備える。図1は、第1の実施形態に係るストレージシステムを有する計算機システムのハードウェアブロック図である。計算機システム1は、ホスト計算機2、管理端末3、ストレージシステム4、ネットワーク5,6を備える。ネットワーク5は、ホスト計算機2とストレージシステ4とを接続するためのものであり、特に、SANである。ネットワーク6は、ストレージシステム4と管理端末3とを接続する、特に、LANである。ホスト計算機2は、例えば、大型汎用コンピュータ、サーバ、クライアント端末である。ホスト計算機2はSAN5を介さずにストレージシステム4に接続されてもよい。また、管理端末3は、LAN6を介さずにストレージシステムに接続されてもよい。
ストレージシステム4は、第1のコントローラ100aと、第2のコントローラ100bと、複数のストレージドライブ109Dを有するドライブ部109と、を備えている。第1のコントローラ100aを[CTLa]と記述することがあり、第2のコントローラ100bを[CTLb]と記述することがある。また、コントローラ内の構成要素を表現する際で、そのCTLaの構成要素かCTLbの構成要素かを区別する場合には、前者の構成要素の符号の後に[a]を付し、後者の構成要素の符号の後に[b]を付す。同一の構成要素には同一の符号を付す。CTLa及びCTLbのどちらの構成要素であるかの区別が不要である場合には、[a]、[b]を付さないこととする。二つのコントローラを区別する際には、一つのコントローラを自系(内部)のコントローラと呼び、他方のコントローラを他系(外部)のコントローラと呼ぶこともある。
CTLaは、MPU101a、MPUメモリ102a、DMA103a、HOST_I/F(I/F:インターフェースの略、以後同じ。)104a、DRIVE_I/F105a、及び、管理_I/F106aと、を備えている。CTLbも同様である。CTLaのHOST_I/F104a及びCTLbのHOST_I/F104bはそれぞれSAN5を介してホスト計算機2と接続する。CTLaのDRIVE_I/F105aとCTLbのDRIVE_I/F105bはそれぞれドライブ部109に接続する。CTLaの管理_I/F106aとCTLbの管理_I/F106bとはそれぞれLAN6を介して管理端末3に接続する。
CTLaのNTB107aとCTLaのNTB107bとはそれぞれノントランスペアレントブリッジである。MPU101aとMPU101bとは、NTB107a、107bを介して、例えば、転送速度5Gbps以上の全二重方式の高速なバス108で接続されており、ユーザデータや制御情報を交換することが出来る。NTB107および接続路108はそれぞれ複数あってもよい。ドライブ部109は複数の論理記憶領域としてのLU(Logical Unit)を構成する。ドライブ部109の各ストレージドライブ109Dは磁気ディスク或いはSSD等の記憶媒体から構成される。
次に、CTLaのMPUメモリ102aの構成を図2に基づいて説明する。CTLbのMPUメモリ102bも同じである。MPUメモリ102aは、テキスト領域10a、ローカルメモリ11aの領域、通信エリア14aの領域、共有メモリ(以下、[SM]という。)12aの領域、キャッシュメモリ13aの領域を有し、それぞれの領域はアドレス範囲として設定される。それぞれの領域に、プログラム、制御情報或いは各種データが格納される。
テキスト領域10aは、ストレージシステムにその機能を実現させるための各種プログラムを格納する。ローカルメモリ11aは、テキスト領域10aのプログラムによって参照されるテーブルを格納する。このテーブルは、CTLbのテキスト領域のプログラムからは参照されない。MPUメモリ102bのテキスト領域のプログラムはMPUメモリ102bのローカルメモリ11bを参照する。
ローカルメモリ11aのテーブルには、例えば、自他系判定テーブル110、代理アクセス識別テーブル111、ハードウェア属性テーブル112を格納する。各テーブルの説明は後述するとおりである。
通信エリア14aは、割込用通信エリア141aと通常通信エリア142aを有する。この通信エリアには、MPU101bによって制御情報やデータが書き込まれる。MPUメモリ102bの通信エリア14bの割込用通信エリア141bと通常通信エリア142bには、MPU101aによって制御情報やデータが書き込まれる。
SM12aは、CTLaとCTLbで共有される必要がある、ストレージシステム構成情報・制御情報を格納している。この情報には自系コントローラのものと他系コントローラのものが含まれる。他系コントローラのSM12bも同じである。この情報を以後共有情報という。
共有情報は、ストレージシステムを制御するのに必要な情報である。具体的には、メモリに格納され、ホストコンピュータと交換されるデータのキャッシュの管理情報、ホストインタフェース、ディスクインタフェース、DMA等のデータ転送用ハードリソースの起動用レジスタ、及び、それらに排他的にアクセスするためのロック機構を実現するロックビット等の排他管理情報、他方のコントローラにも認識される必要がある、ハードウェアリソースの構成の設定又は更新情報、ストレージアプリケーション(例えば、ボリュームのレプリカイメージを作成するボリュームコピー機能や、物理的なボリューム容量を仮想化し必要に応じて割り当てる仮想ボリューム機能、遠隔サイトへのデータコピーを行うことによりディザスタリカバリを実現するリモートコピー機能等)をコントローラ間で整合性を取って行うための制御情報である。
この共有情報が一方のコントローラ側のSM12aに存在する場合、他系コントローラのMPU101bから当該一方のコントローラのMPU101aを介して参照される。例えば、キャッシュメモリ13aのインデックス情報は、このキャッシュメモリを有する側のコントローラ100aに存在するために、他系コントローラ100bがこのインデックス情報を参照する場合には、キャッシュメモリ13aを有する側のコントローラ100aのMPU101aを介して当該インデックス情報にアクセスする。
キャッシュメモリ13aは、ホスト計算機2からのユーザデータないしディスクに格納したユーザデータを一時的に保持する。他系コントローラのキャッシュメモリ13bも同じである。
図3はテキスト領域10aのソフトウェアリソースの構成図である。ソフトウェアリソースは、構成管理プログラム201、基本I/Oプログラム202、タイマー同期プログラム203a、代理アクセスプログラム204a、割り込み受信プログラム205a、通常受信プログラム206a、依頼送信プログラム207a、SMアクセスプログラム208a、DMAアクセスプログラム209a、HOST_IFアクセスプログラム210a、DRIVE_IFアクセスプログラム211aを備える。これらプログラムは、MPU101aによって実行される。CTLbのテキスト領域も同様である。
構成管理プログラム201aは、管理端末3からのコマンドによって起動し、構成管理情報を参照し、これを更新することもできる。構成管理情報は、ドライブ部109やHOST_IF104、DRIVE_IF105等のハードウェアや、1ないし複数のストレージドライブで構成される論理ボリューム等の論理構成要素を管理するための情報等である。CTLaの構成情報とCTLbの構成情報は、SMa(12a)とSMb(12b)とに記録されている。
複数のコントローラをホスト計算機に対して統一的に運用するために、一方のコントローラの構成情報に更新があった場合には、これを他系コントローラに同期させることが望ましい。この同期は、例えば、MPU102aが自系コントローラのSM12aの構成情報を更新する際、この更新を他系のコントローラのSM12bにライトすることによって達成される。
管理端末3からアクセスされた管理_I/F106aを有するコントローラ100a側のMPU101aは、同じ側のSM12aの構成管理情報を更新し、他系コントローラ100bのMPUメモリ102bの通信用エリア14bの構成情報更新判定用フラグにオンを設定する。他系コントローラのMPU101bはこの更新フラグを参照し、フラグがオンであればコントローラ100a側のMPU101aから、SM12aの最新の構成情報を取得して、自身の側のコントローラ100bのSM12bの更新情報を更新しフラグにオフを設定する。
基本I/Oプログラム202aは、ホスト計算機2からのI/O要求コマンドを受けて、データのリードI/O又はライトI/Oを実行する。基本I/Oプログラム202aはリードI/O又はライトI/Oを実行する際、必要に応じて、依頼送信プログラム207aやSMアクセスプログラム208a、DMAアクセスプログラム209a、HOST_IFアクセスプログラム210a、DRIVE_IFアクセスプログラム211aなどを呼び出し、各プログラムを実行させる。
タイマー同期プログラム203aは、自系コントローラ100aのタイマーを他系コントローラ100bのタイマーと同期させるためのものである。複数のコントローラのうち、一つのコントローラのタイマーをマスター扱いとし、他のコントローラのタイマーをスレーブ扱いとする。マスター扱いのコントローラのタイマー同期プログラムは非動作モードにされる。
代理アクセスプログラム204aは、他系コントローラのMPU101bから送信された依頼情報(コマンドなど)に基づいて、自系コントローラ100aのMPU101aを、メモリ102a、インターフェース104a,105a、そして、DMA103aの何れか又は複数に、MPU101bの代わりにアクセスさせるためのプログラムである。
依頼送信プログラム207aは、構成管理プログラム201aや基本I/Oプログラム202aが他系コントローラ100bのMPUメモリ102bのSM12bやキャッシュメモリ13bをリードしたり、あるいはこれにライトしたり、インターフェース104b,105b、そして、DMA103bを起動させるためにアクセスする等、他系コントローラのMPU101bにこれらの仲介を依頼するためのものである。この依頼は、プロセッサ101aがブリッジ108を介して他系コントローラのMPUメモリ102bの通信用エリア14bに依頼情報(コマンド等)を書込み、このコマンドを他系コントローラのMPU101bが実行することによって達成される。既述のとおり、通信エリア14a(14b)には、割込処理のための依頼情報が記録される割込用通信エリア141a(141b)と割込処理以外の通常処理のためのコマンドが記録される通常通信エリア142a(142b)とがある。
割込用通信エリア141aには、他系コントローラ100bから優先処理が要求される依頼情報が記録され、通常通信エリア142aには他系コントローラから非優先処理が要求されるコマンドが記録される。CTLaの構成管理プログラム201aや基本I/Oプログラム202aがCTLbのMPU101bに素早く対応して欲しい処理を割込用通信エリア141aに書き込み、かつ、CTLbに対して割込み信号を発行するようにして、プロセッサ間通信に専用LSIが利用されない不利益を補うようにしている。CTLbのMPU101bは代理アクセスプログラム204bを実行することによって、割込用通信エリア141b及び通常通信エリア142bに格納されたコマンドを実行して、コマンドの実行結果である、メモリ(12b、13b)のリード情報、データ転送完了情報等をコマンドの依頼元であるMPU101aに応答する。
MPU101aの依頼送信プログラム207aは、割込用通信エリア141bに格納されるべき依頼情報(コマンド)の種類、属性等を優先処理が必要とされる範囲のものに制限する。多種多様な依頼情報が全て割込用通信エリア141bに格納されるとすると、MPU101bは他系コントローラのために多くのコマンドを優先処理しなければならず、MPU101bが本来処理しなければならならない、自系コントローラでの「ホスト計算機からのI/Oの処理等が遅延してしまう。
そこで、他系コントローラに優先処理される依頼情報は何かということについて説明する。第1のコントローラのプロセッサが第2のコントローラのプロセッサに既述の共有情報の参照を依頼した場合には、第1のコントローラのプロセッサが第2のコントローラのプロセッサから共有情報を得るまでは、第1のコントローラのプロセッサは次の処理に移行すべきではない。例えば、第1のコントローラのプロセッサが第2のコントローラから共有情報を取得できなければ、第1のコントローラのプロセッサはドライブ部109の正しいボリュームへアクセスできず、I/O処理を正確に行うことができない。第1のコントローラが自身の共有情報の更新情報を他系コントローラに反映させる場合もこれを迅速に完了されることが望まれる。つまり、こうした共有情報へのアクセスは極めて短い時間で完了され、依頼元プロセッサに依頼先プロセッサから応答されなければならない。したがって、本発明は優先処理される依頼情報の好適例を、他系コントローラの共有メモリに対するアクセスとした。
次に優先処理されることが必須ではない依頼情報について説明する。例えば、自系コントローラが他系コントローラにデータの転送を依頼したり、あるいは、データの転送を要求することを検討する。データの転送がサイズの大きいデータの転送を伴って処理に長時間を費やす可能性を持つとしても、他系コントローラのデータ転送用ハードウェアの起動は共有情報へのアクセスより優先されなければならないものではない。
換言すれば、他系コントローラのプロセッサからの応答時間が短いことが要求されない。なぜなら、共有情報とは異なり優先処理されないことの影響が少ないことに加えて、コントローラはホストI/Oを並行して多重で処理できるため、あるホストI/Oコマンドの処理に伴い、プロセッサが他系コントローラのプロセッサにデータ転送のためのハードリソースの起動を依頼した後、他系コントローラのプロセッサからの応答を待つことなく他のホストI/Oコマンドの処理に移れるからである。そうしたデータ転送起動については応答時間を短くすることが必須ではなく、優先処理ではない通常処理(非優先処理)として扱われる。
そこで、第1のコントローラのプロセッサは第2のコントローラのプロセッサに依頼すべき情報を優先処理されるべきものか、そうでないものかを判別して、前者の場合に限って、その依頼情報を第2のコントローラの優先処理部に送信し、後者の依頼情報を第2のコントローラの通常処理部に送信することとした。第2のコントローラのプロセッサは優先処理部の依頼情報を優先処理し、通常処理部の依頼情報を通常処理する。
第1実施形態は、優先処理の実効手段として、割込処理を採用した。第2のコントローラ100bのプロセッサ101bは、第1のコントローラ100aのプロセッサ101aから送られた依頼情報が、割込用通信エリア141bに書き込まれたか、通常通信エリア142bに書き込まれたかによって、第1のコントローラ100aからの依頼情報が優先処理されるものか、或いは、優先処理されない通常処理をされるものかを区別する。通常通信エリア142bに書き込まれたコマンドについて、第2のコントローラのプロセッサ101bは定期的に通常通信エリア142bをポーリングし、通常通信エリア142bに通常処理対象の依頼情報があることを発見すると、ホストI/O処理終了後、あるいはその途中など合間を見つけて当該コマンドを処理する。
図3の割込受信プログラム205aは、他系コントローラ100bから割込み要求を受信した際に呼び出されて起動し、割込用通信エリア141aにあるコマンドを受信して代理アクセスプログラム204aに渡すプログラムであり、通常受信プログラム206aは、既述のポーリングの際に起動され、通常通信エリア142aにコマンドがある場合には、これを受信して代理アクセスプログラム204aに渡すプログラムである。
既述の各プログラムは必要に応じてSMアクセスプログラム208、DMAアクセスプログラム209、HOST_IFアクセスプログラム210、DRIVE_IFアクセスプログラム211などを呼び出し、これらプログラムの一部又は全部を起動する。
SMアクセスプログラム208aは、構成管理プログラム201aや基本I/Oプログラム202aが、SM12aの共有情報を必要とする際に呼び出され、SM12aの制御情報を参照・更新する処理を実行するためのプログラムである。
DMAアクセスプログラム209aは,DMA103aを起動してキャッシュメモリ13aに格納されたユーザデータデータの転送等を行うためのプログラムである。
HOST_IFアクセスプログラム210aはHOST_IF105aにアクセスしてホスト計算機2との間でコマンド・データの送受信を行うためのプログラムである。
DRIVE_IFアクセスプログラム211aはDRIVE_IF105aにアクセスしてドライブ109Dとの間でコマンド・データの送受信を行うためのプログラムである。
これらアクセスプログラムは、アクセス対象のハードウェアを識別する番号、アクセス種別(リード/ライト/データ転送等)、対象データが存在するメモリのアドレス、ハードウェアの処理が完了した際にその成功/失敗、読み込んだ値等の結果情報が格納されるメモリアドレス等の情報を含むアクセス要求情報とともに、基本I/Oプログラム等によって呼び出される。各アクセスプログラムは、基本I/Oプログラムよって特定されたハードウェアに対して、指定されたアクセス種別に応じたアクセスを実行する。
DRIVE_IFアクセスプログラム211aは、基本I/Oプログラム202aによって、DRIVE_IF105aを識別するためのDRIVE_IF番号、およびリード/ライト等のアクセス種別、転送データ格納エリア(キャッシュメモリ、ドライブ部)のアドレス、応答の格納先アドレス(SMのアドレス)といった管理情報を伴うアクセス要求情報と共に呼び出される。呼び出されたDRIVE_IFアクセスプログラム211aは、アクセス種別やデータ転送先アドレス等の情報に基づいて、DRIVE_IF番号で指定されたDRIVE_IF105を起動して終了する。起動されたDRIVE_IF105aは指定されたキャッシュメモリ13aのデータをドライブ部109へ転送、またはドライブ部109の指定されたデータを指定されたデータ格納キャッシュエリアへ転送する。さらに、転送が正常に完了されたかどうか等の完了ステータス情報を、MPUメモリ10a1にある、指定した応答格納先エリア(通信エリア14a)に書き込む。
HOST_IFアクセスプログラム210aは、基本I/Oプログラム202aによって、HOST_IF104aを識別するためのHOST_IF番号、およびリード/ライト等のアクセス種別、転送データ格納エリア(キャッシュメモリ、ドライブ部)のアドレス、応答の格納先アドレス(SMのアドレス)といった管理情報を伴うアクセス要求情報と共に呼び出される。呼び出されたHOST_IFアクセスプログラムは、アクセス種別やデータ転送先アドレス等の情報に基づいて、HOST_IF番号で指定されたHOST_IFを起動して終了する。起動されたHOST_IFはキャッシュメモリ13の指定エリアのデータをホスト計算機へ転送、または、ホストからのデータをキャッシュメモリの指定されたエリアに転送する。さらに、転送が正常に完了されたかどうか等の完了ステータス情報を、MPUメモリ101aにある、指定した応答格納先エリア(通信エリア14a)に書き込む。
DMAアクセスプログラムが受け取る起動要求には、起動するDMAの識別番号、データ転送元/転送先のキャッシュメモリが属するコントローラの情報とメモリアドレス、及び、DMAのよるデータ転送完了に関するステータス情報を格納するための応答格納先アドレス(SMの通信エリア)等の情報を含む。
SMアクセスプログラム208aは、MPUメモリ101aのSM12aに対して、アクセス要求元プログラムによって特定された要求種別に応じて、リード/ライト/アトミックアクセス等を行う。そして、アクセスの結果を通信エリアの結果返却エリアに書き込む。
図4は依頼送信プログラム207の処理フローである。依頼送信プログラム207は、基本I/Oプログラム202や構成情報管理プログラム201等の呼び出し元プログラムによって、代理アクセスを依頼すべき、他系コントローラのハードウェアを示す識別情報、依頼内容(リード、ライト、データ転送起動等)、及び、必要に応じて、リード対象のメモリ等のアドレスや、他系コントローラのハードウェア又はアクセスプログラムからの返値を格納するための自系コントローラのMPUメモリ101aのアドレス等、付随するパラメータを含む依頼情報を伴って呼び出される。
先ず、依頼送信プログラム207aは、呼び出し元プログラムから与えられた依頼情報から、依頼処理情報を識別するための識別コードを取得する(ステップS1201)。次に、依頼処理識別テーブル111a(図10:詳細は後述)を参照し、識別コードに応じてアクセス先である他系コントローラのハードウェアリソースの情報を取得する(ステップS1202)。依頼送信プログラム207aは、ステップS1203に移行し、アクセス先のハードウェアが既述の共有情報を有するか否かを判定する。具体的には、アクセス先属性テーブル112(図12:詳細は後述)を参照、アクセス先ハードウェアに対応する共有情報フィールドにYesが格納されていれば、他系コントローラ100bのアクセス先ハードウェアに対するアクセスを共有情報に対するアクセスと判定する。依頼送信プログラム207aが、これを肯定すると他系コントローラ100bのMPUメモリ102bの割込用通通信エリア141bに依頼情報を送信する(S1204)。
このアクセスの依頼に際して、依頼送信プログラム207aは、依頼情報を他系コントローラのMPUメモリ102bの通信エリア14bの割込用通信エリア141bにライトした後、コントローラ間接続バス108を介して他系コントローラのMPU101bに割込信号(例えば、PCI−expressのMSIパケット)を送信する。
一方、依頼送信プログラム207aが、ステップS1203を否定して、他系コントローラに対するアクセスを共有情報に対するアクセスでないと判定すると、他系コントローラ100bの依頼先ハードウェアに対して割り込み処理をさせる必要はなく、依頼情報を他系コントローラ100bのMPUメモリ102bの通常通信エリア142bへ送信する(S1205)。
図5は依頼送信プログラム207の他の形態を示すためのフローチャートである。図4のステップS1204が、ステップS1210からステップS1214に置き換えられている点が図4のフローチャートとは異なる。依頼送信プログラム207aが、呼び出し元プログラムによるアクセス先を、他系コントローラ101bのアクセス先(SM12b等)に記録された共有情報と判定すると、他系コントローラ100bに対する割り込み処理の依頼のうち未完了の割り込み処理の数を更新記録するカウンタをインクリメントする。依頼送信プログラム207aが割り込み信号を送信しようとする段階でカウンタを+1し、他系コントローラから応答信号が返信された時点でカウンタを−1する。コントローラはこのカウンタを自系コントローラのMPUメモリ102のローカルメモリ内に持っている。
依頼送信プログラム207aは、ステップS1210において、現在のカウンタの値が閾値未満かどうかを判定し(S1210)、閾値以上であれば(S1210:No)、他系コントローラ100bのMPU102bに対して割り込み処理の依頼を行わずに、自系コントローラ100aのMPUメモリ102aの割込待機エリアに依頼要求を記録してフローチャートを終了する(ステップS1211)。
依頼送信プログラム207aは、カウンタが閾値未満であることを判定すると(S1212:Yes)、割込待機エリアに記録されている依頼要求があるかどうかをチェック(S1212)、割込待機エリアに依頼情報がある場合には、待機中の依頼情報とS1203によって判定された現在の依頼情報とを合わせて、他系コントローラの割込通信エリア141bに送信し(S1214)、かつ、複数の依頼情報に対する割込信号を他系コントローラ100bに送信する(S1214)。依頼送信プログラム207aは、依頼情報数分カウンタをインクリメントする(ステップS1215)。一方、依頼送信プログラムが、待機中の依頼情報が無いことを判定すると、現在の依頼情報を送信して(S1213)、現在の依頼情報に対する割込信号を送信するとともに(S1214)、カウンタを+1する(S1215)。
このフローチャートによれば、依頼送信プログラム207aが割り込み要求をまとめることによって、割り込み処理の対象となる依頼情報の送信を依頼先コントローラ100bに対して断続的に多発することを避けて、依頼先コントローラ100bで依頼情報に基づいて呼び出されるプロセスの切り替え等が頻発することに基づくオーバーヘッドを減らすことができる。
図6は割り込み受信プログラム205の処理フローを示している。割込受信プログラム205は、MPU101bが割込信号を他系コントローラ101aから受領した時点で実行中の処理を中断して実行される。実行中処理を中断する際は、プログラムカウンタやローカル変数等が記録され割り込み処理が終了すると元のプログラムが再開される。この仕組みは一般的にOSが持つ機能である。
先ず、割込受信プログラム205aは、割込用通信エリア141aに依頼情報(要求)が記録されているか否かをチェックし(S1802)、要求があれば割込用通信エリア141aから依頼情報を取得して(S1800)、これを伴って代理アクセスプログラム204aを起動し(S1801)、ステップS1802に戻る。要求が無ければ(S1802:No)、フローチャートを終了する。
図7は通常受信プログラム206の処理フローを示す。通常通信プログラム206はMPU101に定期的に呼び出されるが、I/O処理等のホストコマンドの処理を中断して実行されることはない。そのため、通常受信プログラムは、割込処理とは異なり実行中処理にオーバーヘッドを生じさせないが、依頼を受信してから処理するまでの時間が長くなる場合がある。通常受信プログラム206aは、先ず、依頼要求情報が通常通信エリア142aに格納されているかどうかチェックし(S1900)、なければ終了する。依頼情報が格納されていれば、通常通信エリア142aから依頼情報を取得し(ステップS1901)、代理アクセスプログラム204aを起動する(S1902)。代理アクセスプログラム204aの起動が終了するとステップS1900に戻る。
図8は、代理アクセスプログラム204のフローチャートを示す。代理アクセスプログラム204aは、割込受信プログラム205a、又は、通常通信プログラム206aに起動される。代理アクセスプログラム204aは依頼情報を割込通信プログラム205a又は通常通信プログラム206aを介して取得する(ステップS1700)。次に、依頼処理識別テーブル111(図10)を参照して、依頼情報に含まれる識別コードから他系コントローラのアクセス先ハードウェアを識別する(ステップS1701)。そして、ステップS1702〜S1709において、アクセス先ハードウェアを判別し、各アクセス先ハードウェアのアクセスプログラムを起動する。
図9はタイマー同期プログラム203の処理フローである。タイマー情報は、複数のコントローラによって共有されるべき共有情報の一つである。タイマー同期処理は複数のコントローラのMPU内部タイマーを同期するための処理である。タイマー同期プログラム203aは自系コントローラ100aにおいて一定時間おきに呼び出され、他系コントローラ100bのMPU内部タイマーの値を取得して自系コントローラ100aのMPU内部タイマーに読んだ値を反映する。この場合、他系コントローラのタイマーがマスター扱いである。
タイマー同期プログラム203aは依頼送信プログラム207aを起動して他系コントローラの割込通信エリア141bにタイマー読出依頼情報を記録する(S1101)。他系コントローラのMPU101bは割込み受信プログラム205bによって依頼情報を取得し、さらに代理アクセスプログラム204aによってMPU101bの内部タイマー値を読み込む。MPU101bは依頼送信プログラム207aを実行して、依頼情報に対する応答として、読出情報をコントローラ100aの割込用通信エリア141aに格納する。MPU101aは割込受信プログラム205aを実行して割込用通信エリア141aのタイマー値を受信し、さらに、代理アクセスプログラム204aはMPU101aの内部タイマーにアクセスして、読み出したタイマー値を反映させる。このように、タイマー同期プログラムは、他系コントローラから応答があるまでビジーループで待ち(S1102)、応答が来たら、応答情報からタイマー値を取得して(S1103)、タイマー値を自系コントローラのMPU内部タイマーに反映して(S1104)、フローチャートを終了する。
次に、代理アクセスプログラム、割り込み受信プログラム、通常受信プログラム、及び、依頼送信プログラムの一つ又は二つ以上によって利用される制御・管理テーブルについて説明する。この制御・管理テーブルには、既述の自他系判定テーブル110、依頼処理識別テーブル111、アクセス先属性テーブル112(図2を参照)が含まれている。
図10は依頼処理識別テーブル111の構成例を示す図である。依頼識別テーブル111は、識別コードに応じて通信種別とアクセス先を識別するためのテーブルである。各エントリは識別コードフィールド1110、通信種別フィールド1111、アクセス先フィールド1112を持つ。依頼送信プログラム207は、構成管理プログラム201や基本I/Oプログラム202からのコマンドに基づいて、通信種別1111を判定し、更に、アクセス先1112を判定する。
依頼送信プログラム207はこの判定事項に基づいて識別コードを決定する。依頼送信プログラム207aが他系コントローラ100bの通信用エリア14bの割込用通信エリア141bと通常通信エリア142bのどちらに識別コードを書き込むかは、アクセス先によって定まる。アクセス先が共有情報かタイマー情報の場合には、識別コードは割込用通信エリア141bに書き込まれ、それ以外の場合には通常通信エリア142bに書き込まれる。
図11はアクセス先属性テーブル112の構成例を示す図である。アクセス先属性テーブル112は各アクセス先が共有情報を格納するか否かを示すテーブルであり、各エントリはアクセス先フィールド1120、共有情報フィールド1121を含む。共有メモリ(SM)12は共有情報を含み、タイマーも共有情報を含むが、それ以外のアクセス先は共有情報を含んでいない。
依頼送信プログラム207aが他系コントローラ110bの通信用エリア14bの割込用通信エリア141bと通常通信エリア142bのどちらに識別コードを書き込むかは、アクセス先属性テーブル112を参照して、アクセス先が共有情報を含む(Yes)ことを判定すると、依頼送信プログラム207aは、識別コードを割込み通信エリア141bに格納する。アクセス先が共有情報を含まないことを判定すると、依頼送信プログラム207aは、識別コードを通常通信エリア142bに格納する。
図12は自他系判定テーブル110の構成例を示す図である。自他系判定テーブル110は既述の識別コード(ID)に基づいて、アクセス先の種別と、アクセス先がCTLa/CTLbのいずれかにあることを示している。各エントリはIDフィールド1100、種別フィールド1101、CTLフィールド1102と、を含んでいる。依頼送信プログラム207aは、CTLフィールドの登録情報が「b」(他系コントローラ)である場合に、他系コントローラの通信エリア14bに識別コードを格納し、CTLフィールドの登録情報が[a]であることを検出すると、構成情報プログラム201a又は基本プログラム202aのアクセス先は自コントローラ内のリソースであるため、これらプログラムは、他系コントローラ100bの通信エリア14bに識別情報を格納する必要がなく、依頼処理識別テーブル111のアクセス先ハードウェアリソースに対して通信種別に対応する処理を実行する。
次に、ホスト計算機2からのリードI/O処理の説明をしながら、代理アクセスプログラム204、割込み受信プログラム205、通常受信プログラム206、及び、依頼送信プログラム207の動作を図13乃至図16に基づいて説明する。図13はリードI/Oの処理フローチャートである。このフローは、MPU101がホストIF104からのリードI/Oコマンドを受信した際に開始される。
先ず、基本I/Oコマンド202は構成管理プログラム201に構成情報の更新の有無について問い合わせをする。構成管理プログラム201aは、通信用エリア14aにアクセスして、構成情報更新済みフラグがセットされたか否かをチェックする。他系コントローラ100bの構成情報更新済みフラグがセットされていることを検出すると、最新の共有情報を他系コントローラからリードする必要があるために(S1015:Yes)、依頼送信プログラム207aを起動する(S1016)。
依頼送信プログラム207aが起動すると、他系コントローラ100bの通信エリア14bの割込通信用エリア141bに、識別コード(0x00)を書き込むとともに他系コントローラ100bに割込み信号を送信する。識別コード(0x00)は、他系コントローラ100bのMPU101bに共有メモリ12bにアクセスして共有メモリ12bから更新済み共有情報をリードすることを要求する命令である。依頼送信プログラム207aは、他系コントローラ100bからの応答をビジーループで待つ(S1017)。なお、他系コントローラ100bからの応答を自系コントローラ100aで既述のように優先処理するようにしてもよい。
他系コントローラ100bのMPU101bは割込信号を自系コントローラ100aから受信すると、割込受信プログラム205bを起動し、割込受信プログラム205bは割込通信エリア141bの識別コードをリードして代理アクセスプログラム204bに識別コードを渡す。代理アクセスプログラム204bは識別コードに基づいて、依頼処理識別テーブル111bを参照し、アクセス先をSM12bと判定してSM12bにアクセスする。
そして、代理アクセスプログラム204aは、更新済共有情報をリードして、共有情報を含む応答を、依頼送信プログラム207bを介して自系コントローラ100aに送信する自系コントローラのI/O基本プログラム202aは応答情報から更新済共有情報を取得し(S1018)、構成管理プログラム201aを介して更新情報を共有メモリ12aに反映する(s1019)。このように、基本I/Oプログラム202aがホスト計算機2からのリードI/O処理を実行する際に、デュアルコントローラ構成のストレージシステムに於ける、両コントローラで共有すべき構成情報の更新の有無をチェックするようにしたので、一方のコントローラに構成情報の更新がなされても他系コントローラにこれを迅速に反映するようにできる。なお、S1015において、構成管理プログラム201aが、通信エリア14aをチェックした際、構成情報更新フラグがセットされていない場合には、S1016−S1019をスキップすればよい。
次に、基本I/Oプログラム202aは、SM12aの共有情報(自系コントローラ100aのキャッシュメモリ13aのキャッシュインデックスと他系コントローラ100bのキャッシュメモリ13bのキャッシュインデックス)を参照してキャッシュヒットミス判定を行い(S1002)、キャッシュヒットならばS1008に進む。
キャッシュヒットミスならばステップS1004に進む。S1004において、基本I/Oプログラム202aは、リードデータをドライブ部109からステージングするための新規のキャッシュエリアを、自系コントローラ100aのキャッシュメモリ13a又は他系コントローラ100bのキャッシュメモリ13bに確保するために、それぞれのキャッシュメモリの構成情報を更新する。構成情報管理プログラム201aは、キャッシュエリアの確保に関する情報を自系コントローラ100aのSMaに反映すると、依頼送信プログラム207aによって、他系コントローラ100bの通信エリア14bの割込通信用エリア141bに更新情報が更新された旨のフラグをセットする。他系コントローラ100bのMPU101bは、このフラグを優先処理して、自系コントローラ100aの割込通信用エリア141aにSM12aのキャッシュ構成情報をリードするための依頼を書き込む。
次いで、基本I/Oプログラム202aは、キャッシュエリアが自系のキャッシュメモリに確保されたことを判定すると、自系コントローラ100aのDRIVE_IF105aを起動、即ち、DRIVE_IFアクセスプログラム211aを起動する(S1006)。確保したキャッシュ領域が他系のコントローラ100bのキャッシュメモリ13aにあれば、基本I/Oプログラム202aは依頼送信プログラム207aを起動して、他系コントーラの通常通信用エリア142bにDRIVE_IF105bの起動要求を書き込む。他系コントローラ100bのMPU101bは代理アクセスプログラム204aを実行してDRIVE_IFアクセスプログラム211bを起動し、そして、DRIVE_IF105bを起動する。
一方、基本I/Oプログラム202aがキャッシュヒットを判定すると(S1002:Yes)、ステップS1008において、SM12aの共有情報を参照して、リードデータを有しているキャッシュメモリ13が、リードI/Oをホスト計算機から受信したHOST_IF104と同じ側のコントローラにあるか否かを判定する(S1008)。基本I/Oプログラム202aがこれを否定判定すると、リードデータを有するキャッシュメモリがリードI/Oを処理すべきコントローラ(図13の場合、自系コントローラ100aとする。)にあるか否かを判定し(S1009)、キャッシュメモリ13が自系コントローラ100aに属することを判定すると、自系コントローラ100aのDMAアクセスプログラム209aを起動して、DMA103aを起動させる(S1010)。DMA209aは、キャッシュメモリのリードデータをHOST_IF104aに転送する。
一方、キャッシュメモリが他系コントローラ100bにあることを判定すると、他系コントローラにそのDMA109bを起動することを依頼するために依頼送信プログラム207aを起動する(S1011)。
ステップS1008において、基本I/Oプログラム202aが、自系コントローラ100aのSM12aの構成情報を参照して、リードデータを有しているキャッシュメモリが、リードI/Oをホスト計算機2から受信したHOST_IF104と同じ側のコントローラにあることを判定すると、このHOST_IFが自系コントローラ100aの側にあるか否かを判定する。基本I/Oプログラムが、HOST_IFが自系コントローラ100aにあることを判定するとHOST_IFアクセスプログラム210aを起動してHOST_IF104aを起動する(ステップS1013)。
基本I/Oプログラムは、HOST_IFが他系コントローラ100bの側にあることを判定すると(S1008:Yes)、他系コントローラ100bのHOST_IFアクセスプログラム210bの起動を依頼するために依頼送信プログラム207aを起動する(ステップ1014)。
ステップS1013,ステップ1014、ステップ1010、ステップ1011、ステップ1006、及び、ステップ1007を経て、基本I/OプログラムはS1015に進む。S1015では、基本I/Oプログラム202aは、既述の起動されたプログラムからの応答待ち状態を設定して、図13のフローチャートを一旦終了させる。基本I/Oプログラム202aは起動対象プログラムからの応答を確認すると、リードI/Oコマンドの処理を継続するために、図13のフローチャートを再開する。
基本I/Oプログラム202aは、図13のS1006又はS1007の起動要求に対する応答を確認すると図13のフローチャートを再開する。再開後の流れは図14のフローチャートに示すようになる。起動対象プログラムからの応答があった状況(S1006又はS1007)では、新たなキャッシュエリアが自系コントローラ100a又は他系コントローラ100bに確保されている。そして、新たに確保されたキャッシュエリアには、ドライブ部109からリードデータがステージングされている。したがって、基本I/Oプログラム202aは、S1002を肯定判定し、S1008以降を実行する。図14の各ステップに対する説明は、図13のものと同じである。
基本I/Oプログラム202aがS1013又はS1014によって起動対象となったプログラムからの応答を受領すると、自系コントローラ100a及び他系コントローラ100bにおいて、DMA103によってリード対象のデータがキャッシュメモリ13からHOST_IF104に転送できる状態になっている。したがって、基本I/Oプログラムは、ホスト計算機へのリードデータ転送を可能にするために、ホスト_IFアクセスプログラム210を起動させる必要がある。そのために、基本I/Oプログラム202aがS1013又はS1014によって起動対象となったプログラムからの応答を受領すると、図15に示すように、図13のS1012以降の処理を実行する。図15のS1012以降の処理は図13のものと同じである。
基本I/Oプログラム202aが、S1013において起動対象となった自系コントローラ100aのHOST_IFアクセスプログラム210aから応答を受信するか、又は、S1014において起動対象となった他系コントローラ100bのHOST_IFアクセスプログラム210bからの応答を受信すると(図15:S1015)、リードデータがキャッシュメモリ13からHOST_IF104を経てリードI/Oの発行元ホスト計算機2に転送されたために、リードI/O処理を終了する。
実施形態2
第1の実施形態では、既述の優先処理を割込処理によって実現したが、第2の実施形態では、プロセッサにマルチコアのタイプのものを採用し、一部のコアを優先処理専用として設定し、当該コアがホストI/O処理を行わないようにすることによって優先処理が達成されるようにした。図16は第2の実施形態のMPUメモリ102aの構成である。第1の実施形態と異なるのは、ローカルメモリ11aに、複数のコアプロセッサのうちの専用コアプロセッサを判定するためのテーブル113aが追加されている点と、通信エリア14aにコア毎割込用通信エリア143a、および、コア毎通常通信エリア144aが追加されている点である。他系コントローラ100bのMPUメモリ102bも同様である。
第2の実施形態において、各コアは起動時に専用コア判定テーブル113aを参照することによって自身が専用コアであるか否かを判定し、専用コアでない通常コアと判定した場合のみ基本I/Oプログラム202a、構成管理プログラム201aを実行する。
図17に専用コア判定テーブル113の例を示す。専用コア判定テーブル113にはコアの数だけエントリがあり、各エントリはコアフィールド1130、コア種別フィールド1131、割り込み受付可否フィールド1132を持つ。コアフィールド1130にはコアを識別するための情報が格納され、コア種別フィールド1131には専用コアか通常コアを区別するための識別情報が格納され、割込受付可否フィールド1132には、通常コアに対する割込処理の受付の可否を示す情報が格納される。
専用コアは既述のとおり、優先処理に特化されているのに対して、通常コアは、優先処理の他に、ホストI/Oの処理と、管理端末3からの管理要求処理をも実行可能である。通常コア及び専用コアへの依頼情報の送信は、コア毎の通信エリアを利用する。専用コアは他系コントローラからの依頼の処理に割込要求を必要としないので、専用コアへの依頼は、コア毎通常通信エリア142aが利用される。図17に示したように、通常コアに対しては、割込受付の可否を設定できる。割込受付が否に設定された通常コアは、他系コントローラから割込要求を受付けないため、当該コアに対する割込用通信エリアを利用しない。したがって、この通常コアは既述の優先処理ではなく、既述の通常処理に対応する。割込受付が可に設定された通常コアは、他系コントローラから割込要求を受付けるために、既述の優先処理及び通常処理の両方に対応することができる。
既述の専用コア判定テーブル113において、コア種別、割込受付可否は、各コアの負荷によって動的に変更可能である。また、二つのプロセッサが夫々4つのコアを有する例を示し、かつ、各プロセッサに一つの専用コアがある例を示したが、これは一例である。専用コアと通常コアのバランスは、テーブルに記載されたものに限られない。専用コアと通常コアの切り替えは、構成管理プログラムが専用コア判定テーブル113を書き換えることによって可能となる。既述の専用コア判定テーブルにおいて、CTL0は第1のコントローラのMPU101aのことであり、CTL1は第2のコントローラのMPU101bのことである。
図18は、第2の実施形態における、MPUメモリ102のソフトウェア構成図である。第1の実施形態と異なるのは、専用コア数調整プログラム220が追加されている点である。このプログラムの詳細については後述する。
図19は第2の実施形態における依頼送信プログラム207aの処理フローである。第1の実施形態の依頼送信プログラム(図4)と異なるのはS1203とS1204の間にステップS1253〜S1256が加わっている点である。ホストI/Oを受信した通常コア(専用コアはホストI/Oを受信しない)は、依頼送信プログラム207を起動する。依頼送信プログラム207aはS1201〜S1203を経てS1253で専用コア判定テーブル113を参照し、他系コントローラ100bのMPU101bに専用コアが一つでもあるかどうかを判定する(S1254)。
依頼送信プログラム207aを実行する通常コアが、他系コントローラに専用コアがないことを判定すると、他系コントローラのMPUメモリ101bの通常コアの割込用通信エリア143bに依頼情報を書き込み、割込み要求を送信する(S1204)。
一方、依頼送信プログラム207aが専用コアの存在を判定するとS1257に進み、専用コアと設定されている他系コントローラのコアを一つ選択する(S1257)。専用コアと設定されているコアが複数ある場合はそのいずれかを、例えばラウンドロビン等で選択する。そして、他系コントローラ100bにおける、選択したコア用の通常通信エリア144bに依頼情報を書き込む(ステップS1256)。専用コアはホストI/O処理等非優先処理を行わないため、短時間で依頼情報の送信元に応答することがき、また、優先処理を割込処理によって実行する場合に比較して、実行中のプログラムを割込処理に切り替えなければならないことに基づくオーバーヘッドが生じないメリットを発揮する。
図20は、専用コア数調整プログラム220のフローチャートである。専用コア数調整プログラム200は、定期的、例えば1分毎に実行される。専用コア数調整プログラムは、プロセッサの各コアの負荷(稼働率)を継続してモニタし、通常コアのプロセッサ負荷が低い時は専用コアを設定して(或いは専用コアの比率を多くして)、依頼送信プログラム207が通常コアに対する割込要求によるオーバーヘッドが生じないようにすることができる。一方、調整プログラム220は、通常コアのプロセッサ負荷が高くなった時は専用コア設定のコアを無くすようにする(或いは専用コアの比率を少なくする。)。
専用コア数調整プログラム220は、S2600において、複数のコアの夫々について負荷情報を取得し、S2601で、通常コアの負荷の総合値から専用コアの負荷の総合値を引いた差分が閾値以上かどうかを判定する。閾値以上であれば専用コアを減らす(S2602)。
専用コア数を減じる手順は次のとおりである。専用コア数調整プログラム220aは自身が属する自系コントローラ100aの専用コア判定テーブル113aを変更することによって、自系コントローラ100a又は他系コントローラ100bの専用コア数を減じることができる。その際、専用コア数調整プログラム220aは、自系コントローラ100aの専用コア判定テーブルの更新より前に、他系コントローラ100bの専用コア判定テーブル113bを更新することが好ましい。
専用コア判定テーブル113は自系コントローラのMPU101aと他系コントローラのMPU101bの情報を含むために、自系コントローラと他系コントローラによって共有される共有情報であり、これに対する更新のためのアクセスは優先処理の対象となる。したがって、自系コントローラ100aからのアクセスは他系コントローラ100bの専用コアに対して行われるか、あるいは、通常コアの割込通信用エリア143bに対して行われる。自系コントローラ100aから他系コントローラ100bへのアクセスは、専用コア或いは通常コアのいずれでもよい。自系コントローラの専用コア数調整プログラム220aは他系コントローラ100bからの応答を待って、自系コントローラの専用コア判定テーブル113aを変更する。
他系コントローラ100bの専用コア判定テーブル113bの更新を自系コントローラ100aの専用コア判定テーブル113aの更新より優先させたのは、他系コントローラ100bから自系コントローラ100aの専用コアに依頼が前もって来ないようにするためである。なお、自系コントローラ100aは他系コントローラ100bからの応答を待って専用コア判定テーブル113aを更新したが、他系コントローラ100bからの応答を待つことなく、自系コントローラ100aのテーブル113aを更新してもよい。
一方、専用コア数調整プログラム220aがS2601を否定判定すると、専用コアの合計負荷から通常コアの合計負荷を引いた負荷の差が閾値以上かどうかを判定する(S2603)。閾値以上であれば専用コアを増やす(S2604)。先ず、専用コア数調整プログラム220aは自系コントローラ100aの専用コア判定テーブル113aを更新する。その際、専用コア数調整プログラム220aは、専用コアに属性を変更しようとしている通常コアがホストI/O等の処理中であることを想定して、一定時間経過して当該処理が経過するのを待って当該通常コアを専用コアに変更する。その後、自系コントローラ100aは、優先処理として他系コントローラ100bに専用コア判定テーブル113bの更新を依頼する。なお、専用コア数調整プログラム220aは、処理中の依頼処理を全て中断して、通常コアを専用コアに即時に切り替えるようにしてもよい。
第2の実施形態によれば、専用コアの負荷と通常コアの負荷とを比較して、専用コアの比率が動的に変更されるので、I/O処理の負荷が優先処理に比較して高い場合には通常コアの比率を上げてI/O処理を迅速化し、優先処理の負荷がI/O負荷に比べて高い場合には、専用コアの比率を上げて優先処理を迅速化した。これによって、第2の実施形態は、マルチコアに優先処理専用の専用コアを設定しても、常時、I/O処理と優先処理とを高次元で均衡させることができる。第2の実施形態は、専用コアの負荷が高い場合には、割込可否が可に設定された通常コアに共有情報へのアクセスを依頼すればよい。
実施形態3
第3の実施形態は、第2の実施形態の変形として、Simultaneous Multi−Threading(SMT)を用いることを特徴とする。SMTを用いることによって一つの物理コアをスレッドという仮想的な複数のコアとして扱うことができる。このスレッドを仮想コアと呼ぶ。本実施形態によれば、既述の専用コア判定テーブル113において、エントリが仮想コア数分用意されることになる。コアフィールドには仮想コアの識別番号が記録される。この仮想コアのうち1以上を専用コアとして設定できる点は第2の実施形態と同じである。
この実施形態は、SMTを用いることにより、普段は仮想コアをHALT状態(停止状態)にしておき、コントローラから他系コントローラの当該仮想コアに割り込み信号を発生することによって、当該仮想コアを専用コアとして起動させることができる。したがって、専用コア設定の仮想コアを空転させることにより他の仮想コア(通常コア)の処理能力を圧迫することを避けられるという利点がある。さらに、本実施形態は、複数の仮想コアを専用コア設定にした上でそのうちの一つのコア以外を停止させて待機させておき、停止していない方の専用コア設定の仮想コアが障害等で停止した場合に、待機させておいた仮想コアにコア間割り込みを送信して待機状態から復帰させることで高速に専用コア設定の仮想コアをフェイルオーバさせることができる。
実施形態4
次に、既述の第2実施形態の変形例としての第4の実施形態について説明する。この実施形態は、コントローラの依頼送信プログラム207aが他系コントローラ100bに依頼した処理が完了したと判定するための要件を定め、この要件を達成するための依頼方式を選択することを特徴とする。この特徴点のために、第2の実施形態に係るMPUメモリのローカルメモリ11(図16)に、当該要件を決定するためのテーブルとこの要件を達成するための依頼方式を選択するためのテーブルが追加されている。前者の例が依頼方式要件テーブルと称するものであり、後者の例が依頼方式利用可否テーブルと称するものである。
図21は依頼方式要件テーブル114の一例である。依頼方式要件テーブル114は、依頼送信プログラム207aによって指定される、他系コントローラ100bのアクセス先1140と、アクセス先に対するアクセス種別1141と、他系のコントローラのMPU101bがアクセス先にアクセス種別に係る処理を実行し、その処理の完了を依頼送信元のコントローラ100aに応答するまでの期待時間(期待応答時間)1142を記録するエントリを有している。
図22Aは依頼方式利用可否テーブル115の第1の例である。依頼方式利用可否テーブル115は、依頼送信プログラム207aが依頼情報を送信すべき、他系コントローラ100bのコアを規定する依頼先フィールド1153と、依頼送信プログラムからの通信タイプを規定する依頼方式フィールド1150と、依頼先コアが依頼を処理できるか否かを規定する利用可否フィールド1151と、依頼元コントローラが依頼情報を依頼先コントローラに送信してから依頼先コアが依頼情報を処理して依頼元コントローラに応答を返すまでの時間を規定した期待応答時間フィールド1152と、を有する。期待応答時間は各コアの負荷によって変動する。構成管理プログラムは各コアの負荷を継続的にモニタして、期待応答時間を必要に応じて更新する。
図22Bは依頼方式利用可能テーブル115の第2の例である。コア0、コア1が専用コアである。したがって、コア0またはコア1に送信される要求は割込み要求である必要はなく、通常処理の依頼でよい。通常、専用コアに対する負荷が低い時は、コア0またはコア1での期待応答時間は短く、通常、コア0またはコア1などの専用コアに通常処理の依頼を送信するほうが、コア2などの通常コアへ割込み要求を送信するより有利である。しかしながら、コア0、またはコア1などの専用コアの負荷が高くなった場合、コア2などの通常コアへ割込み要求を送信する方が、コア0またはコア1などの専用コアへ通常処理の依頼を送信するより期待応答時間が短くなることもある。
図23はこの実施形態における依頼送信プログラム207のフローチャートである。既述の図5、図19のフローチャートと異なるのは、ステップS1203以降がステップS1280からステップS1283と置き換えられていることである。ステップS1202の次のステップS1280では、依頼送信プログラム207は依頼方式要件テーブル114を参照して、アクセス先であるハードウェア1140と、アクセスの種別に対応する要件としての期待応答時間1142を取得する。
次いで、依頼送信プログラム207は、依頼方式利用可否テーブル115を参照し(ステップS1281)、要件1142(期待応答時間)を満たす、依頼先1153、依頼方式1150、利用可否1151の各属性の組み合わせを選択する(ステップS1282)。要件を満たすとは、依頼方式利用可否テーブル115において期待応答時間フィールド1152に含まれる期待応答時間が、ステップS1280で取得した当該アクセス種別に対する期待応答時間1142以下であることである。依頼送信プログラム207aは、依頼方式利用可否テーブル115に基づいて選択した依頼方式、すなわち、依頼先のコア1153と通信方式(割り込み通信か通常通信か)1150にしたがって、他系コントローラ100bに依頼のためのアクセスを行う(ステップS1283)。
専用コア数調整プログラム220はコア毎の負荷状況を判定することにより、依頼方式利用可否テーブル115を更新する。通常コアがホストI/O処理によって負荷が高い場合は、通常通信方式の期待応答時間を長く設定される。一方、その負荷が低い場合は、通常通信方式の期待応答時間が短く設定される。前者の場合では、通常通信方式の期待応答時間より割り込み通信方式の期待応答時間の方が短く、後者の場合ではこれが逆になる。通常通信方式での期待応答時間は例えば待ち行列モデル等によって決定される。
図21において、第1のコントローラ100aから第2のコントローラ100bの共有メモリ12bへのアクセス、即ち、リード、ライト(ノンポステッドライト、アトミック更新)の完了応答時間は10マイクロ秒であるため、これ以下で第1のコントローラ100aに応答できる方式は、図22A,Bよれば、第2のコントローラ100bのプロセッサ101bに対するコア非選択の通常通信方式によるか、或いは、コア1の通常通信方式である。専用コアの期待応答時間は通常コアより常に短いとは限らず、また、割込み方式に通信が通常方式による通信より常に短いとは限らない。コアの負荷や、I/O処理の負荷によってどのコアを用いてどの方式の通信によることが期待応答時間を満足できるかが異なってくる。コア非選択の通常通信方式では、依頼先のコアを指定せず,複数のコアのうちどれが要求を受け付けても良い、ことを意味する。通信エリアは,コア毎の通信エリアとコア共通の通信エリアとに別れており、コア毎のエリアに書き込まれた依頼はコア1の通常通信方式が設定される。共通のエリアに書きこまれた依頼はコア非選択の通常通信方式が設定される。コア非選択の通常通信方式が設定されると、I/O処理が完了したコアが要求を拾うため、コアを指定するよりも通常応答時間は短くなりやすい。この場合、コアが通信エリアから要求を読み出す、排他制御が必要である。
実施形態5
第4の実施形態の変形例としての第5実施形態について説明する。第5実施形態は、ユーザがI/O処理に対する性能要件を定め、これに応じて通信の期待応答時間を補正する例を示す。I/O処理に対する性能要件として、レスポンス時間(ホストがI/Oコマンドを発行してからストレージシステムから応答が返されるまでの所要時間)である場合を示す。
図24はボリューム毎に既述の性能要件を定めた、ボリューム性能要件テーブル116の構成例である。このボリューム性能要件テーブルは、MPUメモリ102のローカルメモリ11に追加される。ボリューム性能要件テーブル116はボリューム番号フィールド1161と、期待通信応答時間補正値フィールド1162と、を持つ複数のエントリからなる。ボリューム番号フィールド1161はストレージシステム内部でボリュームを識別するための番号を格納し、期待応答時間補正値フィールド1162は当該ボリュームへのI/O要求に伴う通信において、通信方式の選択に用いる要件を補正するためものである。
図25はユーザがボリュームのI/O性能要件を設定するための入力画面を示す。本画面は管理端末3に表示され、本画面を通してユーザがボリューム毎の性能要件を入力する。画面には性能要件定義のための性能要件入力用テーブル300が表示される。性能要件入力用テーブル300にはボリューム番号フィールド3001と期待I/Oレスポンス時間フィールド3002という二つの入力用フィールドを持ったエントリが表示される。
ユーザはそれぞれの欄に要件を定めるボリュームのボリューム番号3001と、このボリュームのI/Oレスポンスにおける期待応答時間を期待I/Oレスポンス時間3002に入力する。管理端末3は入力を受けると当該情報をストレージシステム4に出力する。ストレージの構成管理プログラム201は、ボリューム性能要件テーブル116に新しくエントリを追加し、追加されたエントリのボリューム番号フィールドに入力されたボリューム番号を入力し、さらに、期待通信応答時間補正値フィールドに、入力された期待I/Oレスポンス時間から求めた補正値を格納する。
補正値の求め方は、例えば、基準I/Oレスポンス時間を決めておき、基準I/Oレスポンス時間に対する期待I/Oレスポンス時間の比率を期待通信応答時間補正値としてもよい。こうすることで、期待I/Oレスポンス時間が短いボリュームは、期待I/Oレスポンス時間の長いボリュームに比べて通信応答時間の短い依頼方式を選択する。通信応答時間の短い依頼方式については、第4の実施形態において説明したとおりである。これによって、性能要件の異なるボリュームへのI/O要求が混在している場合に、性能要件が厳しいボリュームへのI/O処理が優先されて、全体として、各ボリュームの性能要件を満たすことができる。
期待通信応答時間補正の具体的な手順を図26に示す。図26は図23の変形例である。相違点として、まず、依頼送信プログラム207が呼び出される際に、どのボリュームへのI/O処理に伴う呼び出しであるかの情報が呼び出し元プログラムであるI/O基本プログラム202等から依頼送信プログラム207に渡される。この情報はボリューム番号を含む。これを対象ボリューム番号と呼ぶ。また、図23のフローに加えて、ステップ1280の前にステップS1290が追加されている。
ステップS1290では、ボリューム性能要件テーブル116を参照して、対象ボリューム番号に対応するエントリの期待通信応答時間補正値フィールド1162に格納された値を取得する。そしてこの値を、続くステップ1280で取得した期待応答時間値に乗じて補正する。補正された期待応答時間値を通信方式の要件として、続くステップ1281以降の処理を行うことにより、ボリューム毎の性能要件に応じて通信方式を選択することができる。これにより、I/Oレスポンス性能が要求されるボリュームのI/O処理に伴う通信には通信応答時間の期待値が小さい通信方式を選択することができ、ボリュームのI/O性能要件を満たすことができる。
なお、本実施形態ではボリューム毎のI/O性能要件に応じて決定した係数を積算する方法により期待応答時間を補正する例を示したが、例えばユーザによって入力されたボリューム毎のI/O性能要件が予め定められた閾値を下回るか否かによって予め定められた期待通信応答時間に補正するとしてもよい。また、本実施形態ではボリューム毎の性能要件を定めているが、例えばI/O発行元のホスト毎に性能要件を定めてもよい。また、I/O性能要件としてはレスポンス時間を用いるのでなく、スループット性能(単位時間あたりにホストに応答を返すI/Oコマンド数、またはデータ量)で定めてもよい。この場合は要求されるスループット性能の値が高いほどI/O処理に伴う通信の期待応答時間は短く設定する。
なお、本発明は既述の実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、既述の実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることも可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加、削除、置換をすることも可能である。また、既述の各構成、機能、各処理部、処理手段等は、それらの一部又は全部を、例えば、LSIで設計する等によりハードウェアで実現してもよい。また、各構成、機能等は、プロセッサが夫々の機能を実現するプログラムを解釈し、実行することよりソフトウエアで実現してもよい。また、制御線や接続線は説明上必要と考えられるものを示しており、製品上必ずしも全てのものを示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてよい。
なお、既述の実施形態では、コントローラのプロセッサからの依頼が書き込まれる通信エリアを、割込用通信エリアと通常通信用エリアに分けたが、こられ通信エリアを分けることなく共通にして、優先処理のための割り込み信号があったか否かで、優先処理又は非優先(通常処理)を切り替えるようにしてもよい。

Claims (11)

  1. 互いに接続された第1のコントローラと第2のコントローラとを備え、
    前記第1のコントローラは、第1のプロセッサと、第1の共有メモリとを含み、前記第2のコントローラは、第2のプロセッサと、第2の共有メモリとを含み
    前記第1のプロセッサは
    第1のプロセスの処理のために、優先処理である前記第2のプロセッサによる前記第2の共有メモリへの優先アクセスが必要な場合、前記第2のプロセッサに対する前記第2の共有メモリへのアクセスを第1の依頼内容とし、優先処理を必要とする前記第1の依頼内容を含む第1の依頼情報前記第2のコントローラに送信し、前記第2のプロセッサから前記第1の依頼情報に対する完了応答を受けてから前記第1のプロセスとは異なるプロセスを処理し、
    第2のプロセスの処理のために、前記第2のプロセッサによる優先処理を必要としないプロセスの処理が必要な場合、前記第2のプロセッサに対する前記優先処理を必要としないプロセスを第2の依頼内容とし、前記第2の依頼内容を含む第2の依頼情報を前記第2のコントローラに送信し、前記第2のプロセッサからの前記第2の依頼情報に対する完了応答を待たずに前記第2のプロセスとは異なるプロセスを処理し、
    前記第2のプロセッサは、
    前記第1の依頼内容を、前記第2のプロセッサが処理するプロセスよりも優先して処理し、前記第2の依頼内容を、任意のタイミングで処理する、
    ように構成されたシステム。
  2. 前記第1のプロセッサは、前記第1の依頼情報を前記第2のコントローラの第1の記憶領域に送信し、前記第2の依頼情報を前記第2のコントローラの第2の記憶領域に送信し、
    前記第2のプロセッサは、前記第1の依頼情報に含まれる前記第1の依頼内容を、前記第2の依頼情報に含まれる前記第2の依頼内容よりも優先して処理する、
    ように構成された請求項1記載のシステム。
  3. 前記第1のプロセッサは、前記第2のプロセッサが、前記第1の依頼内容を前記第2のプロセッサが処理するプロセスよりも優先して処理する指示を、前記第2のコントローラに送信する、
    ように構成された請求項1に記載のシステム。
  4. 前記第2の依頼内容は、前記第2のコントローラによるユーザデータ転送のためのハードウェアリソースの起動の依頼である、請求項1に記載のシステム。
  5. 前記第1のコントローラが前記システムに接続されたホスト計算機からI/Oを受領した際、前記第1のプロセッサは、前記第2の共有メモリに格納されたデータが更新されたか否かを判定し、前記第2の共有メモリに格納された前記データが更新されたことを判定すると、前記第2のコントローラに、前記第2の共有メモリの前記更新されたデータのリードを前記第1の依頼内容とする前記第1の依頼情報を送信する、
    ように構成された請求項1記載のシステム。
  6. 前記第1の依頼情報が複数ある場合、前記第1のプロセッサは、前記第2のプロセッサが処理する前記プロセスよりも、前記複数の第1の依頼情報に含まれる第1の依頼内容を優先的に処理する指示を前記第2のコントローラに送信し、
    前記第2のコントローラが前記指示を受信すると、前記第2のプロセッサは、前記複数の第1の依頼情報に含まれる前記第1の依頼内容を纏めて優先的に処理する
    ように構成された請求項1記載のシステム。
  7. 記第2のプロセッサは、第1のコアと第2のコアを含み、
    前記第1のコアは、前記システムに接続されたホスト計算機からのI/O処理、前記第1の依頼情報に含まれる前記第1の依頼内容、および、前記第2の依頼情報に含まれる前記第2の依頼内容いずれかの処理を行い、
    前記第2のコアは、前記第1の依頼情報に含まれる前記第1の依頼内容の処理を行う、
    うに構成された請求項1記載のシステム。
  8. 前記第2のプロセッサは前記第1のコアまたは前記第2のコアの負荷状態に応じて、前第1のコアと前記第2のコアの数の割合を変更する、
    ように構成された請求項7記載のシステム。
  9. 前記第1のプロセッサは、前記第2のコアの負荷が高い場合には、前記第1のコアに前記ホスト計算機からのI/O処理よりも前記第1の依頼情報に含まれる前記第1の依頼内容の処理を優先させる、
    ように構成された請求項7記載のシステム。
  10. 前記第2のプロセッサには複数の仮想コアが設定可能であり、前記第1のプロセッサからの要求によって、前記複数の仮想コアの一つ又は複数が前記第1のコアから前記第2のコアに変更される、ように構成された請求項7記載のシステム。
  11. 互いに接続された第1のコントローラと第2のコントローラとを備えるシステムを使用可能にする制御方法であって、前記第1のコントローラは、第1のプロセッサと、第1の共有メモリとを含み、前記第2のコントローラは、第2のプロセッサと、第2の共有メモリとを含み
    前記第1のプロセッサは、
    第1のプロセスの処理のために、優先処理である前記第2のプロセッサによる前記第2の共有メモリへの優先アクセスが必要な場合、前記第2のプロセッサに対する前記第2の共有メモリへのアクセスを第1の依頼内容とし、優先処理を必要とする前記第1の依頼内容を含む第1の依頼情報前記第2のコントローラに送信し、前記第2のプロセッサから前記第1の依頼情報に対する完了応答を受けてから前記第1のプロセスとは異なるプロセスを処理し、
    第2のプロセスの処理のために、前記第2のプロセッサによる優先処理を必要としないプロセスの処理が必要な場合、前記第2のプロセッサに対する前記優先処理を必要としないプロセスを第2の依頼内容とし、前記第2の依頼内容を含む第2の依頼情報を前記第2のコントローラに送信し、前記第2のプロセッサからの前記第2の依頼情報に対する完了応答を待たずに前記第2のプロセスとは異なるプロセスを処理し、
    前記第2のプロセッサは、
    前記第1の依頼内容を、前記第2のプロセッサが処理するプロセスよりも優先して処理し、前記第2の依頼内容を、任意のタイミングで処理する、制御方法。
JP2014555651A 2012-05-18 2012-05-18 計算機システム及びその制御方法 Active JP5909566B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/003289 WO2013171809A1 (en) 2012-05-18 2012-05-18 Computer system and control method thereof

Publications (2)

Publication Number Publication Date
JP2015520425A JP2015520425A (ja) 2015-07-16
JP5909566B2 true JP5909566B2 (ja) 2016-04-26

Family

ID=49582271

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014555651A Active JP5909566B2 (ja) 2012-05-18 2012-05-18 計算機システム及びその制御方法

Country Status (5)

Country Link
US (2) US9003081B2 (ja)
EP (1) EP2823389B1 (ja)
JP (1) JP5909566B2 (ja)
CN (1) CN104471523B (ja)
WO (1) WO2013171809A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10990305B2 (en) 2018-12-13 2021-04-27 Hitachi, Ltd. Storage apparatus and configuration management request processing method for storage apparatus

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101867336B1 (ko) * 2011-07-11 2018-06-15 삼성전자주식회사 다중 프로세서를 지원하는 인터럽트 발생을 위한 장치 및 방법
US9910816B2 (en) * 2013-07-22 2018-03-06 Futurewei Technologies, Inc. Scalable direct inter-node communication over peripheral component interconnect-express (PCIe)
WO2016139787A1 (ja) 2015-03-04 2016-09-09 株式会社日立製作所 ストレージシステム及びデータ書込み制御方法
WO2016203629A1 (ja) * 2015-06-19 2016-12-22 株式会社日立製作所 ストレージシステム及びキャッシュ制御方法
US11061851B2 (en) * 2016-07-28 2021-07-13 Hitachi, Ltd. Computer system, processing method, and driver program
EP3433751A4 (en) * 2016-08-22 2019-12-11 Hewlett-Packard Development Company, L.P. INFORMATION OF CONNECTED DEVICES
US10474545B1 (en) 2017-10-31 2019-11-12 EMC IP Holding Company LLC Storage system with distributed input-output sequencing
US10365980B1 (en) * 2017-10-31 2019-07-30 EMC IP Holding Company LLC Storage system with selectable cached and cacheless modes of operation for distributed storage virtualization
CN109117393A (zh) * 2018-08-06 2019-01-01 郑州云海信息技术有限公司 一种双路ntb通信方法、装置及系统
US11106607B1 (en) * 2020-03-31 2021-08-31 Dell Products L.P. NUMA-aware storage system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832304A (en) * 1995-03-15 1998-11-03 Unisys Corporation Memory queue with adjustable priority and conflict detection
US5960455A (en) 1996-12-30 1999-09-28 Unisys Corporation Scalable cross bar type storage controller
US6182177B1 (en) * 1997-06-13 2001-01-30 Intel Corporation Method and apparatus for maintaining one or more queues of elements such as commands using one or more token queues
US6157963A (en) * 1998-03-24 2000-12-05 Lsi Logic Corp. System controller with plurality of memory queues for prioritized scheduling of I/O requests from priority assigned clients
US6718347B1 (en) * 1999-01-05 2004-04-06 Emc Corporation Method and apparatus for maintaining coherence among copies of a database shared by multiple computers
US6397304B1 (en) 1999-06-16 2002-05-28 Intel Corporation Method and apparatus for improving system performance in multiprocessor systems
JP3719976B2 (ja) 2001-11-30 2005-11-24 株式会社東芝 二重化コントローラ構成ディスク記憶システム向けコントローラ、及び同コントローラが二重化されたディスク記憶システム
US7003610B2 (en) * 2002-09-20 2006-02-21 Lsi Logic Corporation System and method for handling shared resource writes arriving via non-maskable interrupts (NMI) in single thread non-mission critical systems with limited memory space
JP4419460B2 (ja) * 2003-08-04 2010-02-24 株式会社日立製作所 リモートコピーシステム
US7574538B1 (en) * 2004-06-29 2009-08-11 Emc Corporation Contiguous I/O command queuing within a data storage device
JP2008134775A (ja) * 2006-11-28 2008-06-12 Hitachi Ltd 記憶サブシステム及びこれを利用したリモートコピーシステム
JP5057755B2 (ja) * 2006-11-28 2012-10-24 株式会社日立製作所 記憶制御装置及びその制御方法
JP5106913B2 (ja) 2007-04-23 2012-12-26 株式会社日立製作所 ストレージシステム、ストレージシステム管理方法、及び計算機システム
US8090832B1 (en) * 2007-04-30 2012-01-03 Netapp, Inc. Method and apparatus for allocating network protocol operation resources
US8255914B1 (en) * 2008-09-25 2012-08-28 Emc Corporation Information retrieval techniques involving the use of prioritized object requests
US8131933B2 (en) * 2008-10-27 2012-03-06 Lsi Corporation Methods and systems for communication between storage controllers
US8417899B2 (en) 2010-01-21 2013-04-09 Oracle America, Inc. System and method for controlling access to shared storage device
US8566546B1 (en) * 2010-09-27 2013-10-22 Emc Corporation Techniques for enforcing capacity restrictions of an allocation policy
US8838927B2 (en) * 2011-05-27 2014-09-16 International Business Machines Corporation Systems, methods, and physical computer storage media to optimize data placement in multi-tiered storage systems
US8601473B1 (en) * 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10990305B2 (en) 2018-12-13 2021-04-27 Hitachi, Ltd. Storage apparatus and configuration management request processing method for storage apparatus

Also Published As

Publication number Publication date
CN104471523A (zh) 2015-03-25
WO2013171809A1 (en) 2013-11-21
US20150178229A1 (en) 2015-06-25
US9535864B2 (en) 2017-01-03
US9003081B2 (en) 2015-04-07
US20130311685A1 (en) 2013-11-21
CN104471523B (zh) 2017-04-05
EP2823389A1 (en) 2015-01-14
EP2823389B1 (en) 2017-10-04
JP2015520425A (ja) 2015-07-16

Similar Documents

Publication Publication Date Title
JP5909566B2 (ja) 計算機システム及びその制御方法
US10922135B2 (en) Dynamic multitasking for distributed storage systems by detecting events for triggering a context switch
JP5352132B2 (ja) 計算機システム及びそのi/o構成変更方法
JP5658197B2 (ja) 計算機システム、仮想化機構、及び計算機システムの制御方法
US7490185B2 (en) Data processing system, access control method, and access control device
JPH11296313A (ja) 記憶サブシステム
JP2004302713A (ja) 記憶システム及びその制御方法
JP2006285778A (ja) ストレージシステム及び記憶制御方法
US6330625B1 (en) System for initiating multiple read operation requests to multiple copies of a data item and identifying a first one of the requests as having the fastest response time
CN108733585B (zh) 缓存系统及相关方法
US7043603B2 (en) Storage device control unit and method of controlling the same
US10671453B1 (en) Data storage system employing two-level scheduling of processing cores
JP2014010540A (ja) 仮想サーバ環境のデータ移行制御装置、方法、システム
JP2005018509A (ja) 記憶システム、バックアップシステム及びバックアップ方法
JPWO2008149657A1 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
JPH0844649A (ja) データ処理装置
KR102262209B1 (ko) 더미 입출력 요청을 이용한 배리어 명령 전달 방법 및 그 장치
JP2005301880A (ja) 計算機システムにおけるデータ入出力処理方法、ストレージ装置、ホスト計算機、および計算機システム、
JP3349547B2 (ja) スケジューリングシステム
US7930438B2 (en) Interrogate processing for complex I/O link
KR102254501B1 (ko) 부분 순서 보장 기반의 입출력 스케줄러 및 그 방법
US20230359359A1 (en) Elastic request handling technique for optimizing workload performance
WO2021002054A1 (ja) 計算機システム及びプログラム実行方法
JP5594354B2 (ja) 制御装置およびストレージシステム
CN115774563A (zh) 一种客户端软件升级方法及装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160125

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160328

R150 Certificate of patent or registration of utility model

Ref document number: 5909566

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150