(57)【要約】【課題】確実にダンプデータを記録すること。【解決手段】ストレージシステムは、データを記憶する記憶装置へのデータの入出力を制御する複数の制御装置を備える。各制御装置は、記憶装置へのデータの入出力に関わる命令が入力されるインタフェース部と、インタフェース部から前記命令を受け取って実行する演算処理部とを有する。各演算処理部は、インタフェース部に異常が生じた場合、演算処理部を選択して当該インタフェース部のダンプデータの格納処理の実行を選択した演算処理部に依頼する。また、各演算処理部は、格納処理の実行中に選択した演算処理部の使用率が所定の閾値の範囲外になる場合、演算処理部を新たに選択して該ダンプデータの格納処理の実行を新たに選択した演算処理部に依頼する。【選択図】図１
2014010711.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する記憶装置へのデータの入出力を制御する複数の制御装置を備えたストレージシステムにおいて、
各制御装置は、
前記記憶装置へのデータの入出力に関わる命令が入力されるインタフェース部と、前記インタフェース部から前記命令を受け取って実行する演算処理部とを有し、
各演算処理部は、
前記インタフェース部に異常が生じた場合、演算処理部を選択して当該インタフェース部のダンプデータの格納処理の実行を前記選択した演算処理部に依頼するとともに、前記格納処理の実行中に前記選択した演算処理部の使用率が所定の閾値の範囲外になる場合、演算処理部を新たに選択して該ダンプデータの格納処理の実行を前記新たに選択した演算処理部に依頼する
ことを特徴とするストレージシステム。
【請求項２】
各演算処理部は、
前記インタフェース部に異常が生じた場合、自身を選択して当該インタフェース部のダンプデータの格納処理を実行するとともに、前記格納処理の実行中に自身の使用率が所定の閾値の範囲外になる場合、演算処理部を新たに選択して該ダンプデータの格納処理の実行を前記新たに選択した演算処理部に依頼する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項３】
各演算処理部は、更に、
前記格納処理の実行中に前記選択した演算処理部の使用率が所定の閾値の範囲外になる場合、該演算処理部により格納されるダンプデータのうち、新たに選択する前記演算処理部により格納されていないダンプデータを、該新たに選択する演算処理部にコピーさせることを特徴とする請求項１または２に記載のストレージシステム。
【請求項４】
使用率が所定の閾値の範囲外になる演算処理部による前記コピーと新たに選択された演算処理部による前記格納処理とを並列的に実行することを特徴とする請求項３に記載のストレージシステム。
【請求項５】
各演算処理部は、
前記複数の制御装置が有する演算処理部それぞれの使用率を監視し、該使用率に基づいて算出するダンプデータの格納処理の時間が所定の時間より短く、且つ前記命令の数から算出する格納処理の時間が短い演算処理部を選択して当該インタフェース部のダンプデータの格納処理の実行を前記選択した演算処理部に依頼することを特徴とする請求項１〜４のいずれか一つに記載のストレージシステム。
【請求項６】
記憶装置へのデータの入出力に関わる命令が入力されるインタフェース部と、該インタフェース部から前記命令を受け取って実行する演算処理部とを備えた制御装置を複数有するストレージシステムの制御方法において、
各演算処理部が、
前記インタフェース部に異常が生じた場合、演算処理部を選択して当該インタフェース部のダンプデータの格納処理の実行を前記選択した演算処理部に依頼するとともに、前記格納処理の実行中に前記選択した演算処理部の使用率が所定の閾値の範囲外になる場合、演算処理部を新たに選択して該ダンプデータの格納処理の実行を前記新たに選択した演算処理部に依頼する
処理を含んだことを特徴とするストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムおよびストレージシステムの制御方法に関する。
【背景技術】
【０００２】
ストレージシステムでは、コントローラモジュール（Controller  Module：以下ＣＭと記す）が複数のディスク装置へのデータ制御を実施する。例えば、ＣＭは、ホストコンピュータとのインタフェースであるチャンネルアダプタ（Channel  Adapter：以下ＣＡと記す）を介して、ホストコンピュータからディスク装置に対するＩ／Ｏ（Input/Output）コマンドを受け付ける。そして、ＣＭは、受け付けたＩ／Ｏコマンドに基づいて、ディスク装置へのデータの入出力を制御する。
【０００３】
ＣＡの中には、内部のファイルやメモリの内容をダンプデータ（障害情報）として記録するダンプ機能を有するものが存在する。ダンプ機能を有するＣＡに異常が発生すると、ＣＭ内のＣＰＵ（Central  Processing  Unit）は、異常が発生したＣＡからダンプデータを吸い上げてシステム内のＢＵＤ（Bootup  and  Utility  Device）と呼ばれる記憶装置に格納する。なお、ＣＰＵがＣＡからダンプデータを吸い上げてからＢＵＤに格納が完了するまでの時間のことを「吸い上げ実行時間」と称し、ＣＡからダンプデータを吸い上げてからＢＵＤに格納する処理のことを「吸い上げ処理」と称する。
【０００４】
また、吸い上げ処理には、所定の規定時間が設定される。このようなことから、ストレージシステムでは、吸い上げ処理の開始前に「吸い上げ実行時間」を予測し、規定時間内で処理が終了するか否かを判定する場合がある。ここで、ストレージシステムは、予測した「吸い上げ実行時間」が規定時間内である場合、ＣＡから吸い上げたダンプデータは、確実にＢＵＤに記録可能であると判定する。
【０００５】
このようにしてＣＡからダンプデータが吸い上げられた後に、異常が発生したＣＡは、ＣＭから切り離される。また、ＢＵＤに格納されたダンプデータは、障害情報を含んでおり、ＣＡに生じた異常の解析や修復に利用される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−３３４６６８号公報
【特許文献２】特開２０００−１４８５４４号公報
【特許文献３】特開平１１−１１９９１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来の技術では、確実にダンプデータを記録できない場合がある。例えば、「吸い上げ実行時間」は、ＣＰＵの使用率に応じて変動するので、ＣＰＵの使用率が増加することで「吸い上げ実行時間」は長くなる。
【０００８】
このため、吸い上げ処理の開始前に予測した「吸い上げ実行時間」が規定時間内であっても、ＣＰＵが吸い上げ処理の実行中に、ＣＰＵの使用率が増加する場合には、実際の「吸い上げ実行時間」は、規定時間を超える可能性がある。この場合、ＣＰＵは、ＣＡから吸い上げたダンプデータをＢＵＤに格納する処理を所定の規定時間内に完了することができない。この結果、ストレージシステムは、ＣＡから吸い上げたダンプデータの一部をＢＵＤに格納できない。
【０００９】
１つの側面では、本発明は、確実にダンプデータを記録することができるストレージシステムおよびストレージシステムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示するストレージシステムは、一つの態様において、データを記憶する記憶装置へのデータの入出力を制御する複数の制御装置を備える。各制御装置は、記憶装置へのデータの入出力に関わる命令が入力されるインタフェース部と、インタフェース部から命令を受け取って実行する演算処理部とを有する。各演算処理部は、インタフェース部に異常が生じた場合、演算処理部を選択して当該インタフェース部のダンプデータの格納処理の実行を選択した演算処理部に依頼するとともに、以下の処理を実行する。すなわち、演算処理部は、格納処理の実行中に選択した演算処理部の使用率が所定の閾値の範囲外になる場合、演算処理部を新たに選択して該ダンプデータの格納処理の実行を新たに選択した演算処理部に依頼する。
【発明の効果】
【００１１】
１実施形態におけるストレージシステムによれば、確実にダンプデータを記録することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係るストレージシステムの構成を示す機能ブロック図である。
【図２】図２は、実施例２に係るストレージシステムの構成を示す機能ブロック図である。
【図３】図３は、実施例２に係る吸い上げ制御テーブルのデータ構造の一例を示す図である。
【図４Ａ】図４Ａは、ダンプデータの格納処理の処理動作の一例を示す図である。
【図４Ｂ】図４Ｂは、ダンプデータの格納処理の処理動作の一例を示す図である。
【図４Ｃ】図４Ｃは、ダンプデータの格納処理の処理動作の一例を示す図である。
【図４Ｄ】図４Ｄは、ダンプデータの格納処理の処理動作の一例を示す図である。
【図４Ｅ】図４Ｅは、ダンプデータの格納処理の処理動作の一例を示す図である。
【図５Ａ】図５Ａは、圧縮したＣＡダンプデータの断片が各ＢＵＤに点在する一例を示す図である。
【図５Ｂ】図５Ｂは、ダンプデータの吸い上げ処理とダンプデータのコピー処理とを並列的に実行し、使用できるＣＡダンプ域を吸い上げ処理の途中に増やす一例を示す図である。
【図５Ｃ】図５Ｃは、格納先の制御部をＣＭ＃５のメイン制御部からＣＭ＃６のメイン制御部に切替えた後に、ダンプデータの格納処理と並列的にＣＭ＃５のＢＵＤに格納されたダンプデータをＣＭ＃６のＢＵＤと結合させる一例を示す図である。
【図６Ａ】図６Ａは、ストレージシステムによるＣＡダンプの吸い上げ処理を示すシーケンス図である。
【図６Ｂ】図６Ｂは、ストレージシステムによるＣＡダンプの吸い上げ処理を示すシーケンス図である。
【図７Ａ】図７Ａは、実施例２に係る吸い上げ先決定処理の処理手順を示すフローチャートである。
【図７Ｂ】図７Ｂは、実施例２に係る吸い上げ先決定処理の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するストレージシステムおよびストレージシステムの制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１４】
［実施例１に係るストレージシステムの構成］
図１は、実施例１に係るストレージシステム２の構成を示す機能ブロック図である。図１に示すように、実施例１に係るストレージシステム２は、コントローラモジュール（Controller  Module：以下ＣＭと記す）３と、ディスク４と、フロントエンドルータ（Front-End  Router：以下ＦＲＴと記す）５とを有する。また、実施例１に係るストレージシステム２は、バックエンドルータ（Back-End  Router：以下ＢＲＴと記す）６と、ドライブエンクロージャー（Drive  Enclosure：以下ＤＥと記す）７とを有する。なお、ストレージシステム２が有するＣＭの数は、２以上であれば図１に示した数に限定されるものではない。また、ストレージシステム２が有するディスク４の数は、図１に示した数に限定されるものではない。
【００１５】
また、実施例１に係るストレージシステム２は、上位装置であるホストコンピュータ１と接続する。そして、ストレージシステム２は、ホストコンピュータ１からディスク４に対するＩ／Ｏ（Input/Output）コマンドを受け付け、受け付けたＩ／Ｏコマンドを制御する。なお、ストレージシステム２と接続するホストコンピュータ１の数は、図１に示した数に限定されるものではない。
【００１６】
ＣＭ３は、ディスク４へのデータの入出力を制御する装置である。図１は、ＣＭ３が３つである場合を示す。また、これら各ＣＭそれぞれを区別する場合には、図１に示すように、ＣＭ＃０およびＣＭ＃１と適宜記載する。
【００１７】
ディスク４は、データを記憶する記憶装置であり、例えばＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）等に対応する。ＦＲＴ５は、ＣＭ３間を接続する。なお、ＦＲＴ５は、各ＣＭ３間の通信を行うパスを４パス有する。ＢＲＴ６は、ＣＭ３とディスク４との間を接続する。ＤＥ７は、ディスク４を搭載する筐体である。
【００１８】
［ＣＭの機能構成］
各ＣＭ３は、複数のチャンネルアダプタ（Channel  Adapter：以下ＣＡと記す）３１とＩ／Ｏコントローラ（Input/Output  Controller：以下ＩＯＣと記す）３２とを有する。また、各ＣＭ３は、ＢＵＤ（Bootup  and  Utility  Device）３３とメイン制御部３４とサブ制御部３５とＣＭ間通信ドライバ３６とを有する。なお、メイン制御部３４とサブ制御部３５とを区別しない場合には、制御部と記載する。また、ＣＡと当該ＣＡが存在するＣＭ間通信を行うパスは１パスである。また、各ＣＭ３が有する制御部の数は、図１に示した数に限定されるものではない。例えば、各ＣＭ３は、制御部を一つ有するようにしてもよい。
【００１９】
ＣＡ３１は、ホストコンピュータ１と通信接続する通信インタフェースである。例えば、ＣＡ３１は、ディスク４に記憶されるデータの入出力に関わるコマンドであるＩ／Ｏコマンドをホストコンピュータ１から受け付ける。なお、ＣＡ３１は、ＣＭ３内に複数存在し、図１では、４台存在する場合を示している。これら各ＣＡ３１を区別する場合、ＣＡ３１−１（ＣＡ＃１）、ＣＡ３１−２（ＣＡ＃２）、ＣＡ３１−３（ＣＡ＃３）およびＣＡ３１−４（ＣＡ＃４）と記載する。
【００２０】
また、これらＣＡ３１は、内部のファイルやメモリの内容をダンプデータとして記録するダンプ機能を有する。また、ＣＡ３１が保持するダンプデータは、ＣＡ３１に障害が発生した場合、メイン制御部３４により吸い上げられ、ストレージシステム２内のＢＵＤ３３に格納される。なお、以下の記載では、ＣＡ３１が保持するダンプデータのことを「ＣＡダンプ」と称する。また、ＣＭ３またはＣＭ３が有するＣＡ３１などの各部に障害が発生して切り離される処理を、「デグレード処理」という。
【００２１】
ＩＯＣ３２は、ディスク４と通信接続する通信インタフェースである。ＢＵＤ３３は、ＣＡ３１に障害が発生した場合に、メイン制御部３４によりＣＡ３１から吸い上げられたダンプデータを記憶する記憶装置である。このＢＵＤ３３に格納されたダンプデータは、後に、障害が発生したＣＡ３１の障害の解析のために利用される。
【００２２】
メイン制御部３４は、ＣＡ３１と接続し、自身のＣＭ３における処理を分散して実行する場合のメインの制御部である。以下では、このメイン制御部３４は、ＣＰＵ（Central  Processing  Unit）であるものとして説明するが、メイン制御部３４は、ＭＰＵ（Micro  Processing  Unit）などの電子回路であってもよい。また、メイン制御部３４に含まれる各機能部は、例えば、ＣＭ３を制御するＣＦＷ（Controller  Module  Firmware）によってそれぞれ実現される。
【００２３】
また、メイン制御部３４は、自身と接続するＣＡ３１に障害が発生した場合に、ＣＡ３１が保持するダンプデータの吸い上げ処理を実行する。例えば、メイン制御部３４は、ＣＡ３１から吸い上げたダンプデータを図示しない記憶部に保持させ、記憶部でダンプデータを圧縮してからＢＵＤ３３に格納する。なお、ＣＡ３１からダンプデータを吸い上げてからＢＵＤ３３に格納する処理のことを「吸い上げ処理」と称する。
【００２４】
また、メイン制御部３４は、格納処理の実行中に自身の使用率が所定の閾値の範囲外になる場合、他のＣＭ３が有するメイン制御部３４またはサブ制御部３５を選択し、選択したメイン制御部３４またはサブ制御部３５にダンプデータの格納処理の実行を依頼する。
【００２５】
一例をあげると、ＣＭ＃０のメイン制御部３４は、ＣＭ＃０のＣＡ３１において異常が発生した場合、ＣＭ＃０のＢＵＤ３３にＣＡ３１から吸い上げたダンプデータを格納する。また、ＣＭ＃０のメイン制御部３４は、格納処理の実行中に自身の使用率が所定の閾値の範囲外になる場合、ＣＭ＃１のメイン制御部３４に、ＣＭ＃０のＣＡ３１から吸い上げたダンプデータの格納処理の実行を依頼する。
【００２６】
サブ制御部３５は、ＣＡ３１と接続し、自身のＣＭ３における処理を分散して実行する場合のサブの制御部である。なお、以下では、このサブ制御部３５は、ＣＰＵであるものとして説明するが、サブ制御部３５は、ＭＰＵなどの電子回路であってもよい。また、サブ制御部３５に含まれる各機能部は、例えば、ＣＭ３を制御するＣＦＷによってそれぞれ実現される。
【００２７】
ＣＭ間通信ドライバ３６は、ＦＲＴ５を介して他のＣＭ３と通信接続する通信インタフェースである。
【００２８】
このように、実施例１に係るストレージシステム２において、ＣＭ３は、自身が有するＣＡ３１から吸い上げたダンプデータの格納処理の実行中に自身の使用率が所定の閾値の範囲外になる場合、他の制御部にダンプデータの格納処理の実行を依頼する。このため、ＣＭ３は、格納処理の実行中に自身の使用率が所定の閾値の範囲外になる場合でも、ＣＡ３１から吸い上げたダンプデータを確実に記録できる。
【実施例２】
【００２９】
実施例１では、異常が発生したＣＡ３１と接続するメイン制御部３４が、ダンプデータの吸い上げ処理を実行するとともに他の制御部にダンプデータの吸い上げ処理を依頼する場合について説明した。ところで、異常が発生したＣＡと接続するメイン制御部３４において、ダンプデータの吸い上げ処理を開始する時点で、ＣＰＵ使用率やＩ／Ｏ負荷が高い場合がある。このような場合、メイン制御部３４は、吸い上げたダンプデータを最後までＢＵＤ３３に格納することができない可能性がある。このようなことから、あるＣＡに異常が発生した場合、ＣＰＵ使用率やＩ／Ｏ負荷の低い制御部をストレージシステム内から選択し、選択した制御部に格納処理を実行させてもよいものである。
【００３０】
そこで、実施例２では、ストレージシステム内に設定したマスターＣＭが、ＣＡに異常が発生した場合、ＣＰＵ使用率やＩ／Ｏ負荷の低い制御部を選択し、選択した制御部に格納処理を実行させる例を説明する。
【００３１】
［実施例２に係るストレージシステムの構成］
図２は、実施例２に係るストレージシステム２Ａの構成を示す機能ブロック図である。図２に示すように、ストレージシステム２Ａは、ＣＭ３Ａと、ＣＭ３Ｂと、ディスク４と、ＦＲＴ５と、ＢＲＴ６と、ＤＥ７とを有する。また、ストレージシステム２Ａは、上位装置であるホストコンピュータ１と接続する。なお、実施例２に係るストレージシステム２Ａにおいて、図１に示したストレージシステム２の構成と同様の機能を有する各部については、同一の符号を付与し、詳細な説明を省略する。また、図２に示す例では、ストレージシステム２Ａが有するＣＭの数はＣＭ３Ａが１であり、ＣＭ３Ｂが７であり、計８とするが、３以上であれば図２に示した数に限定されるものではない。なお、７つのＣＭ３Ｂのうち４つのみを図示する。また、ストレージシステム２Ａが有するディスク４の数は、図２に示した数に限定されるものではない。
【００３２】
ここで、例えば、ＣＭ３ＡをマスターＣＭとし、ＣＭ３ＢをスレーブＣＭとする。なお、マスターＣＭとは、ＣＡに異常が発生した場合、格納処理の実行を依頼するメイン制御部あるいはサブ制御部をストレージシステム２Ａ内から選択する役割を果たすＣＭである。また、説明の便宜上、ＣＭ３ＡをＣＭ＃０と適宜記載する。また、ＣＭ３Ｂそれぞれを区別する場合には、図２に示すように、ＣＭ＃１、ＣＭ＃５、ＣＭ＃６およびＣＭ＃７と適宜記載する。
【００３３】
［マスターＣＭの機能構成］
ＣＭ３Ａは、ディスク４へのデータの入出力を制御する装置であり、複数のＣＡ３１とＩＯＣ３２とＢＵＤ３３とメイン制御部３４Ａとサブ制御部３５ＡとＣＭ間通信ドライバ３６と記憶部３７Ａとを有する。なお、実施例２に係るＣＭ３Ａにおいて、図１に示したＣＭ３の構成と同様の機能を有する各部については、同一の符号を付与し、詳細な説明を省略する。また、ＣＭ３Ａが有する制御部の数は、図２に示した数に限定されるものではない。例えば、ＣＭ３Ａは、制御部を一つ有するようにしてもよい。
【００３４】
メイン制御部３４Ａは、自己のＣＭ３Ａにおける処理を分散して実行する場合のメインの制御部であり、吸い上げ処理部５１と、吸い上げ先決定部５２と、情報取得部５３とを有する。なお、以下では、このメイン制御部３４Ａは、ＣＰＵであるものとして説明するが、メイン制御部３４Ａは、ＭＰＵなどの電子回路であってもよい。また、メイン制御部３４Ａに含まれる各機能部は、例えば、ＣＭ３Ａを制御するＣＦＷによってそれぞれ実現される。
【００３５】
吸い上げ処理部５１は、自制御部と接続するＣＡ３１の異常を検知すると、異常を検知したＣＡ３１のダンプデータの吸い上げ先をマスターＣＭ３Ａの吸い上げ先決定部５２に決定させる。例えば、吸い上げ処理部５１は、マスターＣＭ３Ａの吸い上げ先決定部５２に対し、ＣＭ間通信ドライバ３６を介して、吸い上げ先を取得したい旨の要求を送信する。このとき、吸い上げ処理部５１は、ダンプデータのサイズをマスターＣＭ３Ａの吸い上げ先決定部５２に転送する。
【００３６】
そして、吸い上げ処理部５１は、マスターＣＭ３Ａの吸い上げ先決定部５２に決定させた吸い上げ先に対して、異常を検知したＣＡ３１のダンプデータの吸い上げを依頼する。
【００３７】
また、吸い上げ処理部５１は、他の吸い上げ処理部５１からダンプデータの吸い上げを依頼された場合、異常が発生したＣＡ３１のダンプデータの吸い上げ処理を実行する。例えば、吸い上げ処理部５１は、異常が発生したＣＡ３１のダンプデータを取得し、自身と接続する記憶部３７Ａに保持させる。そして、吸い上げ処理部５１は、記憶部３７Ａに保持させたダンプデータを圧縮し、圧縮したダンプデータをＢＵＤ３３に格納させる。
【００３８】
また、吸い上げ処理部５１は、格納処理の実行中に選択した制御部の使用率が所定の閾値の範囲外になる場合、以下の処理を実行する。すなわち、吸い上げ処理部５１は、使用率が所定の閾値の範囲外になる制御部により格納されるダンプデータのうち、新たに選択する制御部により格納されていないダンプデータを、該新たに選択する制御部にコピーさせる。なお、使用率が所定の閾値の範囲外になる制御部により格納されるダンプデータのうち、新たに選択された制御部により格納されていないダンプデータを、新たに選択された制御部に格納させる処理を「コピー処理」と称する。
【００３９】
吸い上げ先決定部５２は、メイン制御部３４Ａ、メイン制御部３４Ｂまたはサブ制御部３５Ａの吸い上げ処理部５１から吸い上げ先の決定を依頼された場合、以下の処理を実行する。すなわち、吸い上げ先決定部５２は、複数のＣＭが有する制御部それぞれの使用率を監視し、該使用率に基づいて算出するダンプデータの格納処理の時間が所定の時間より短く、且つＩ／Ｏコマンドの数から算出する格納処理の時間が短い制御部を選択する。
【００４０】
例えば、吸い上げ先決定部５２は、異常が検知されたＣＡ３１のダンプデータの吸い上げ時間が所定の規定時間より短い制御部に吸い上げ先の候補を絞る。さらに、吸い上げ先決定部５２は、絞った吸い上げ先の候補のうち、処理中のＩ／Ｏコマンドの数から換算される処理時間が短い制御部を吸い上げ先に決定する。
【００４１】
吸い上げ先決定部５２が所定の規定時間内に確実にダンプデータが吸い上げ可能か否かを予測する処理について説明する。例えば、吸い上げ先決定部５２は、ＣＡのダンプデータのサイズから各制御部がダンプデータの吸い上げ処理にかかる予測時間を「ＣＡダンプ吸い上げ時間」として算出し、算出した予測時間を吸い上げ制御テーブル３７１に格納する。吸い上げ先決定部５２は、「ＣＡダンプ吸い上げ時間」を、以下の式（１）に基づいて算出する。
ＣＡダンプ吸い上げ時間＝｛（ＣＭ／ＣＡ間通信時間）＋（ＣＭ／ＣＭ間通信時間）＋（データ圧縮時間）＋（ＢＵＤ格納時間）｝×（データサイズ）・・・式（１）
【００４２】
ここで、データサイズとは、異常が発生したＣＡのダンプデータのデータサイズを示す。ＣＭ／ＣＡ間通信時間とは、異常が発生したＣＡおよび当該ＣＡが存在するＣＭ間で１メガバイト（ＭＢ：ＭＢｙｔｅｓ）のデータが通信される場合の通信時間を示す。ＣＭ／ＣＭ間通信時間とは、異常が発生したＣＡが存在するＣＭから吸い上げ先のＣＭへ１ＭＢのデータを通信する場合の通信時間を示し、吸い上げ先が異常の発生したＣＡを有するＣＭの外部である場合に使用される。データ圧縮時間とは、１ＭＢのデータを圧縮する場合にかかる時間を示す。ＢＵＤ格納時間とは、１ＭＢの圧縮データを格納する場合に要する時間を示す。
【００４３】
さらに、吸い上げ先決定部５２は、各制御部の使用率を各ＣＭのＣＰＵ使用率情報３７２から取得する。そして、吸い上げ先決定部５２は、算出した各制御部のＣＡダンプ吸い上げ時間を用いて、各制御部の使用率に対応したダンプデータの吸い上げ処理に要する予測時間を「ＣＡダンプ吸い上げ実行時間」としてを算出する。ここで、吸い上げ先決定部５２は、「ＣＡダンプ吸い上げ実行時間」を、以下の式（２）に基づいて算出する。
「ＣＡダンプ吸い上げ実行時間」＝（ＣＡダンプ吸い上げ時間）÷｛１−（制御部の使用率）｝・・・式（２）
【００４４】
そして、吸い上げ先決定部５２は、算出した各制御部の「ＣＡダンプ吸い上げ実行時間」を吸い上げ制御テーブル３７１に格納する。そして、吸い上げ先決定部５２は、吸い上げ制御テーブル３７１に記憶した各制御部の「ＣＡダンプ吸い上げ実行時間」と吸い上げに許される規定時間とを比較し、規定時間内に吸い上げが完了可能な吸い上げ先の候補を絞る。ここで、吸い上げ先決定部５２は、「実行中フラグ」がオンではない制御部を吸い上げ先の候補に選択する。
【００４５】
次に、吸い上げ先決定部５２が吸い上げ可能と予測した吸い上げ先の候補のうち、入出力処理時間が最短の制御部を決定する処理について説明する。例えば、吸い上げ先決定部５２は、各制御部で処理中のＩ／Ｏコマンドの数を各ＣＭのコマンド数情報３７３から取得する。そして、吸い上げ先決定部５２は、取得した制御部毎のＩ／Ｏコマンド数から換算される制御部毎の処理時間である「Ｉ／Ｏ処理時間」を算出する。吸い上げ先決定部５２は、ＣＭ間通信を用いないストレートアクセスおよびＣＭ間通信を用いるクロスアクセスの各Ｉ／Ｏコマンドの数から、以下の式（３）に基づいて、各制御部の「Ｉ／Ｏ処理時間」を算出する。
「Ｉ／Ｏ処理時間」＝（クロスアクセスのＩ／Ｏコマンド数）×（クロスアクセスのＩ／Ｏコマンド処理時間）＋（ストレートアクセスのＩ／Ｏコマンド数）×（ストレートアクセスのＩ／Ｏコマンド処理時間）・・・式（３）
【００４６】
ここで、クロスアクセスのＩ／Ｏコマンド数とは、クロスアクセスについて処理中のＩ／Ｏコマンドの数を示す。クロスアクセスのＩ／Ｏコマンド数には、ＣＭ間通信によって送信されるＩ／Ｏコマンドの数だけでなく、ＣＭ間通信によって受信されるＩ／Ｏコマンドの数も含まれる。クロスアクセスのＩ／Ｏコマンドの処理時間とは、１個のクロスアクセスのＩ／Ｏコマンドが処理する場合の処理時間を示す。ストレートアクセスのＩ／Ｏコマンド数とは、ストレートアクセスについて処理中のＩ／Ｏコマンドの数を示す。ストレートアクセスのＩ／Ｏコマンド処理時間とは、1個のストレートアクセスのＩ／Ｏコマンドが処理する場合の処理時間を示す。
【００４７】
そして、吸い上げ先決定部５２は、算出した各制御部のＩ／Ｏ処理時間を吸い上げ制御テーブル３７１に格納する。そして、吸い上げ先決定部５２は、先行して絞った吸い上げ先の候補のうち、吸い上げ制御テーブル３７１に記憶した各制御部のＩ／Ｏ処理時間が短い制御部から順に吸い上げ先を２つ決定する。そして、吸い上げ先決定部５２は、決定した吸い上げ先を、要求元のＣＭに通知する。この結果、要求元のＣＭは、異常を検知したＣＡ３１のダンプデータの吸い上げを、決定された吸い上げ先に依頼できる。
【００４８】
なお、吸い上げ先決定部５２は、異常を検知したＣＡ３１のダンプデータの吸い上げ時間について、吸い上げに許される規定時間より短い制御部が１個も存在しない場合がある。かかる場合、吸い上げ先決定部５２は、Ｉ／Ｏ処理時間が最も短い制御部に吸い上げ先を決定するようにすれば良い。これにより、吸い上げ先決定部５２は、決定した吸い上げ先で吸い上げに許される規定時間までダンプデータを吸い上げさせることができ、吸い上げられたダンプデータを用いて異常に関する調査を行わせることが可能となる。
【００４９】
また、吸い上げ先決定部５２は、複数のＣＭが有する制御部それぞれの使用率を監視し、該使用率に基づいて算出するダンプデータの格納処理の時間が所定の時間より長くなる場合、以下の処理を実行する。すなわち、吸い上げ先決定部５２は、使用率に基づいて算出するダンプデータの格納処理の時間が所定の時間より短く、且つＩ／Ｏコマンドの数から算出する格納処理の時間が短い制御部を新たに選択する。
【００５０】
情報取得部５３は、制御部の使用率を取得し、取得した値を後述する記憶部３７Ａが記憶するＣＰＵ使用率情報３７２に記憶させる。また、情報取得部５３は、Ｉ／Ｏコマンド数を取得し、取得した値を後述する記憶部３７Ａが記憶するコマンド数情報３７３に記憶させる。
【００５１】
サブ制御部３５Ａは、自己のＣＭ３Ａにおける処理を分散して実行する場合のサブの制御部であり、吸い上げ処理部５１と、情報取得部５３とを有する。なお、以下では、このサブ制御部３５Ａは、ＣＰＵであるものとして説明するが、サブ制御部３５Ａは、ＭＰＵなどの電子回路であってもよい。また、サブ制御部３５Ａに含まれる各機能部は、例えば、ＣＭ３Ａを制御するＣＦＷによってそれぞれ実現される。
【００５２】
記憶部３７Ａは、メイン制御部３４Ａまたはサブ制御部３５Ａが処理に用いる各種データを記憶する。例えば、記憶部３７Ａは、吸い上げ制御テーブル３７１と、ＣＰＵ使用率情報３７２と、コマンド数情報３７３とを記憶する。
【００５３】
吸い上げ制御テーブル３７１は、制御部毎に、吸い上げ処理にかかる予測時間や処理中の入出力コマンドの数から換算される処理時間を対応付けて記憶する。かかる吸い上げ制御テーブル３７１は、例えば吸い上げ先決定部５２により作成され、吸い上げ先を決定する場合に用いられる。なお、吸い上げ制御テーブル３７１の詳細は、後述する。
【００５４】
ＣＰＵ使用率情報３７２は、自ＣＭ内の各制御部の使用率を含む情報を管理する。コマンド数情報３７３は、自ＣＭ内の各制御部の処理中の入出力コマンドの数を含む情報を管理する。
【００５５】
［スレーブＣＭの機能構成］
ＣＭ３Ｂは、ディスク４へのデータの入出力を制御する装置であり、複数のＣＡ３１とＩＯＣ３２とＢＵＤ３３とメイン制御部３４Ｂとサブ制御部３５ＡとＣＭ間通信ドライバ３６と記憶部３７Ｂとを有する。なお、実施例２に係るＣＭ３Ｂにおいて、図２に示したＣＭ３Ａの構成と同様の機能を有する各部については、同一の符号を付与し、詳細な説明を省略する。また、ＣＭ３Ｂが有する制御部の数は、図２に示した数に限定されるものではない。例えば、ＣＭ３Ｂは、制御部を一つ有するようにしてもよい。
【００５６】
メイン制御部３４Ｂは、自己のＣＭ３Ｂにおける処理を分散して実行する場合のサブの制御部であり、吸い上げ処理部５１と、情報取得部５３とを有する。なお、以下では、このメイン制御部３４Ｂは、ＣＰＵであるものとして説明するが、メイン制御部３４Ｂは、ＭＰＵなどの電子回路であってもよい。また、メイン制御部３４Ｂに含まれる各機能部は、例えば、ＣＭ３Ｂを制御するＣＦＷによってそれぞれ実現される。
【００５７】
記憶部３７Ｂは、メイン制御部３４Ｂまたはサブ制御部３５Ａが処理に用いる各種データを記憶する。例えば、記憶部３７Ｂは、ＣＰＵ使用率情報３７２と、コマンド数情報３７３とを記憶する。
【００５８】
［吸い上げ制御テーブルのデータ構造］
次に、吸い上げ制御テーブル３７１のデータ構造について、図３を参照して説明する。図３は、実施例２に係る吸い上げ制御テーブルのデータ構造の一例を示す図である。図３に示すように、吸い上げ制御テーブル３７１は、実行中フラグ３７１ｂ、吸い上げ対象ＣＡ３７１ｃ、ＣＡダンプ吸い上げ時間３７１ｄ、ＣＰＵ使用率３７１ｅおよびＣＡダンプ吸い上げ実行時間３７１ｆをＣＰＵ３７１ａに対応付けて記憶する。さらに、吸い上げ制御テーブル３７１は、Ｉ／Ｏコマンド数３７１ｇおよびＩ／Ｏ処理時間３７１ｈをＣＰＵ３７１ａに対応付けて記憶する。
【００５９】
ＣＰＵ３７１ａは、制御部をＣＰＵとした場合の各制御部に対応したＣＰＵを示す。実行中フラグ３７１ｂは、吸い上げ処理を実行中であるか否かを示すフラグである。例えば、実行中である場合「ＯＮ」が設定され、実行中でない場合「ＯＦＦ」が設定される。吸い上げ対象ＣＡ３７１ｂは、吸い上げ処理を実行中である場合に吸い上げ対象のＣＡを示す。ＣＡダンプ吸い上げ時間３７１ｄは、ＣＡのダンプデータのサイズから各ＣＰＵがダンプデータの吸い上げ処理にかかる予測時間を示す。ＣＰＵ使用率３７１ｅは、各ＣＰＵの使用率を示す。ＣＡダンプ吸い上げ実行時間３７１ｆは、各ＣＰＵの使用率に対応した吸い上げ処理を実行する予測時間を示す。Ｉ／Ｏコマンド数３７１ｇは、各ＣＰＵで処理中のＩ／Ｏコマンドの数を示す。例えば、クロスアクセスおよびストレートアクセスのそれぞれのＩ／Ｏコマンド数が設定される。Ｉ／Ｏ処理時間３７１ｈは、Ｉ／Ｏコマンド数から換算されるＣＰＵ毎の処理時間を示す。
【００６０】
吸い上げ制御テーブル３７１の一例として、ＣＰＵ３７１ａが「ＣＭ＃０のメインＣＰＵ」である場合、実行中フラグ３７１ｂとして「ＯＦＦ」、吸い上げ対象ＣＡ３７１ｃとして「−」、ＣＡダンプ吸い上げ時間３７１ｄとして「５０」秒を記憶している。さらに、ＣＰＵ使用率３７１ｅを「０．８」、ＣＡダンプ吸い上げ実行時間３７１ｆとして「２５０」秒、Ｉ／Ｏコマンド数３７１ｇとして「クロス１００／ストレート１００」、Ｉ／Ｏ処理時間３７１ｈとして「２」秒を記憶している。また、ＣＰＵ３７１ａが「ＣＭ＃７のサブＣＰＵ」である場合、吸い上げ対象ＣＡ３７１ｃとして「ＣＭ＃１−ＣＡ＃０」を記憶している。すなわち、図３の例では、ＣＭ＃７のサブＣＰＵがＣＭ＃１にあるＣＡ＃０のダンプデータの吸い上げを実行している。
【００６１】
［ストレージシステムによる処理動作］
次に、図４Ａ〜図４Ｅおよび図５Ａ〜５Ｃを用いて、ストレージシステムによる処理動作を説明する。ここでは、図４Ａ〜図４Ｅを用いて、ダンプデータの格納処理の処理動作を説明し、図５Ａ〜５Ｃを用いて、コピー処理の処理動作を説明する。
【００６２】
（ダンプデータ格納処理）
図４Ａ〜図４Ｅは、ダンプデータの格納処理の処理動作の一例を示す図である。図４Ａに示すように、ＣＭ＃１のＣＡ＃１にデグレードが発生した場合、マスターＣＭであるＣＭ＃０において、吸い上げ先決定部５２は、吸い上げ先の制御部を選択する。図４Ａに示す例では、吸い上げ先決定部５２は、ＣＭ＃５のメイン制御部３４Ｂを選択する場合を示す。
【００６３】
ＣＭ＃１のメイン制御部３４Ｂにおいて、吸い上げ処理部５１は、ＣＭ＃５のメイン制御部３４Ｂにダンプデータを転送する。また、ＣＭ＃５のメイン制御部３４Ｂは、ダンプデータの圧縮とダンプデータのＢＵＤ３３への格納とをパラレルに実施する。ここで、ＣＭ＃５のメイン制御部３４Ｂがダンプデータの圧縮とダンプデータのＢＵＤ３３への格納とを実行中にメイン制御部３４Ｂの使用率が所定の閾値を超えた場合、ＣＭ＃０において、吸い上げ先決定部５２は、吸い上げ先の制御部を新たに選択する。ここでは、ＣＭ＃０において、吸い上げ先決定部５２は、格納先の制御部をＣＭ＃５のメイン制御部３４ＢからＣＭ＃６のメイン制御部３４Ｂに切替える例を示す。
【００６４】
例えば、図４Ｂに示すように、ＣＭ＃０において、吸い上げ先決定部５２は、ＣＭ＃５のメイン制御部３４Ｂの使用率が所定の閾値を超えた場合、ＣＭ＃６のメイン制御部３４Ｂを新たに選択する。そして、ＣＭ＃１のメイン制御部３４Ｂにおいて、吸い上げ処理部５１は、ＣＭ＃６のメイン制御部３４Ｂにダンプデータを転送する。また、ＣＭ＃６のメイン制御部３４Ｂは、ダンプデータの圧縮とダンプデータのＢＵＤ３３への格納とをパラレルに実施する。
【００６５】
また、図４Ｃを用いて、格納先の制御部をＣＭ＃５のメイン制御部３４ＢからＣＭ＃６のメイン制御部３４Ｂに切替えた後に、ＣＭ＃５のＢＵＤ３３およびＣＭ＃６のＢＵＤ３３に格納されるダンプデータを説明する。図４Ｃに示す例では、ＣＭ＃５のＢＵＤ３３には、ＣＭ＃５のメイン制御部３４Ｂの使用率が所定の閾値を超えるまでに吸い上げられたダンプデータ１００ａが格納される。また、ＣＭ＃６のＢＵＤ３３には、ＣＭ＃５のメイン制御部３４Ｂの使用率が所定の閾値を超えた後に吸い上げられたダンプデータ１００ｂが格納される。このように、ＣＭ＃６のＢＵＤ３３には、ＣＭ＃５のメイン制御部３４Ｂの使用率が所定の閾値を超えるまでに吸い上げられたダンプデータが欠けて格納される。
【００６６】
このため、図４Ｄに示すように、ストレージシステム２Ａでは、ダンプデータの吸い上げ処理の完了後、ＣＭ＃５のメイン制御部３４Ｂは、ＢＵＤ３３に格納済みのダンプデータをＣＭ＃６のメイン制御部３４Ｂに転送する。ＣＭ＃５のＢＵＤ３３に格納されたＣＡダンプの先頭は圧縮されておりサイズも小さく、ＣＡダンプデータ吸い上げよりも短時間で完了させることが可能である。言い換えると、格納済みのダンプデータをコピーする時間は、ＣＡダンプを格納する時間よりも短い。なお、ＣＡダンプ格納時間が１００ｍｓ／ＭＢオーダーであるのに対し、格納ダンプのコピー処理は１ｍｓ／ＭＢオーダーである。
【００６７】
この結果、図４Ｅに示すように、ＣＭ＃６のＢＵＤ３３には、ＣＭ＃５のＢＵＤ３３に格納されるダンプデータ１００ａと、ＣＭ＃５のメイン制御部３４Ｂの使用率が所定の閾値を超えた後に吸い上げられたダンプデータ１００ｂとが格納される。
【００６８】
（コピー処理）
図４Ｄ〜図４Ｅでは、ダンプデータの吸い上げ処理の完了後、ダンプデータのコピーを実行する場合を説明した。ところで、ストレージシステム２Ａにおいて、格納先の制御部の切替えが複数回起こる場合、圧縮したＣＡダンプデータの断片が各ＢＵＤ３３に点在することになる。図５Ａは、圧縮したＣＡダンプデータの断片が各ＢＵＤ３３に点在する一例を示す図である。
【００６９】
図５Ａに示すように、格納先の制御部がＣＭ＃５、ＣＭ＃６、ＣＭ＃３、そしてＣＭ＃４の順で切替わった場合、各ＣＭのＢＵＤ３３には、ＣＡダンプデータの断片２００ａ〜２００ｄが点在する。この点在した断片データを結合する前に他のＣＡのデグレードが発生すると、使用できるＣＡダンプ域が少なくなり、ＣＡダンプを格納できない状況に陥ることがある。
【００７０】
このようなことから、ストレージシステム２Ａは、ダンプデータの吸い上げ処理とダンプデータのコピー処理とを並列的に実行し、使用できるＣＡダンプ域を吸い上げ処理の途中に増やす。図５Ｂは、ダンプデータの吸い上げ処理とダンプデータのコピー処理とを並列的に実行し、使用できるＣＡダンプ域を吸い上げ処理の途中に増やす一例を示す図である。
【００７１】
図５Ｂに示す例では、格納先の制御部をＣＭ＃５のメイン制御部３４ＢからＣＭ＃６のメイン制御部３４Ｂに切替えた後に、ＣＭ＃６のメイン制御部３４Ｂは、ダンプデータの格納処理と並列的にＣＭ＃５から転送されたダンプデータのコピー処理を実行する。
【００７２】
図５Ｃは、格納先の制御部をＣＭ＃５のメイン制御部３４ＢからＣＭ＃６のメイン制御部３４Ｂに切替えた後に、ダンプデータの格納処理と並列的にＣＭ＃５のＢＵＤ３３に格納されたダンプデータをＣＭ＃６のＢＵＤと結合させる一例を示す図である。図５Ｃは、ＣＭ＃５のＢＵＤ３３に格納済みであるダンプデータ３００ａと３００ｂのうち３００ａをＣＭ＃６のＢＵＤ３３に転送するのと並列して、ＣＭ＃６がＢＵＤ３３にダンプデータ３００ｃを格納する場合を示す。これにより、ストレージシステム２Ａは、格納先の制御部の切り替えが複数発生した場合でも、ＣＡダンプを格納できない状況を早期に解消できる。
【００７３】
［ストレージシステムによる処理の処理手順］
次に、図６Ａ〜図６Ｂおよび図７Ａ〜図７Ｂを用いて、ストレージシステムによる処理の処理手順を説明する。図６Ａ〜図６Ｂを用いて、ストレージシステムによるＣＡダンプの吸い上げ処理の処理手順を説明し、図７Ａ〜図７Ｂを用いて、吸い上げ先決定処理の手順を説明する。なお、以下の説明では、各ＣＭが有するメイン制御部のことをＣＰＵ＃０と記載し、各ＣＭが有するサブ制御部のことをＣＰＵ＃１と記載する。
【００７４】
（ストレージシステムによるＣＡダンプの吸い上げ処理）
図６Ａおよび図６Ｂは、ストレージシステム２ＡによるＣＡダンプの吸い上げ処理を示すシーケンス図である。なお、図６Ａおよび図６Ｂは、ＣＭ＃１のＣＰＵ＃０において、ＣＡ＃１のデグレードが発生し、マスターＣＭであるＣＭ＃０のＣＰＵ＃０が、ＣＭ＃５のＣＰＵ＃１を格納先として選択する場合を示す。さらに、図６Ａおよび図６Ｂは、ＣＭ＃５のＣＰＵ＃１の処理負荷が増加し、マスターＣＭであるＣＭ＃０のＣＰＵ＃０が、ＣＭ＃６のＣＰＵ＃０を新たな格納先として選択する場合を示す。
【００７５】
図６Ａに示すように、ＣＭ＃１のＣＰＵ＃０において、ＣＡ＃１のデグレードが発生した場合、ＣＭ＃１のＣＰＵ＃０は、ＣＡ＃１のダンプデータのサイズを取得し（ステップＳ１０１）、吸い上げ先の取得をマスターＣＭに要求する（ステップＳ１０２）。
【００７６】
ＣＭ＃０のＣＰＵ＃０は、ＣＰＵ負荷とＩ／Ｏコマンド数とをストレージシステム２Ａ内の各ＣＰＵから取得する（ステップＳ１０３）。そして、ＣＭ＃０のＣＰＵ＃０は、吸い上げ制御テーブルを更新し（ステップＳ１０４）、格納先ＣＰＵを選択し、ＣＭ＃１のＣＰＵ＃０に通知する（ステップＳ１０５）。また、ＣＭ＃０のＣＰＵ＃０は、監視処理起動を予約する（ステップＳ１０６）。なお、ここでは、ＣＭ＃０のＣＰＵ＃０は、ＣＭ＃５のＣＰＵ＃１格納先ＣＰＵとして選択するものとして説明する。
【００７７】
ＣＭ＃１のＣＰＵ＃０は、ＣＡ＃１のダンプデータの格納をＣＭ＃５のＣＰＵ＃１に依頼する（ステップＳ１０７）。続いて、ＣＭ＃１のＣＰＵ＃０は、ＣＡ＃１のダンプデータを取得し（ステップＳ１０８）、取得したＣＡ＃１のダンプデータをＣＭ＃５のＣＰＵ＃１に転送する（ステップＳ１０９）。
【００７８】
ＣＭ＃５のＣＰＵ＃１は、ＣＭ＃１のＣＰＵ＃０から受信したＣＡ＃１のダンプデータを圧縮し、ＢＵＤ３３に格納する（ステップＳ１１０）。また、ＣＭ＃５のＣＰＵ＃１は、格納が完了したことをＣＭ＃１のＣＰＵ＃０に通知する（ステップＳ１１１）。
【００７９】
ここで、図６Ａは、格納が完了したことを通知されたＣＭ＃１のＣＰＵ＃０が、ＣＡ＃１のダンプデータに続きがあると判定する場合を示す。ＣＭ＃１のＣＰＵ＃０は、ＣＡ＃１のダンプデータを取得し（ステップＳ１１２）、取得したＣＡ＃１のダンプデータをＣＭ＃５のＣＰＵ＃１に転送する（ステップＳ１１３）。
【００８０】
ＣＭ＃５のＣＰＵ＃１は、ＣＭ＃１のＣＰＵ＃０から受信したＣＡ＃１のダンプデータを圧縮し、ＢＵＤ３３に格納する（ステップＳ１１４）。また、ＣＭ＃５のＣＰＵ＃１は、格納が完了したことをＣＭ＃１のＣＰＵ＃０に通知する（ステップＳ１１５）。
【００８１】
また、ＣＭ＃０のＣＰＵ＃０は、ＣＰＵ負荷とＩ／Ｏコマンド数とをストレージシステム２Ａ内の各ＣＰＵから取得する（ステップＳ１１６）。そして、ＣＭ＃０のＣＰＵ＃０は、格納先ＣＰＵを切替えるか否かを判定する（ステップＳ１１７）。なお、ここでは、ＣＭ＃０のＣＰＵ＃０は、格納先ＣＰＵを切替えないと判定するものとして説明する。この場合、ＣＭ＃０のＣＰＵ＃０は、所定期間待機し（ステップＳ１１８）、ＣＰＵ負荷とＩ／Ｏコマンド数とをストレージシステム２Ａ内の各ＣＰＵから取得する（ステップＳ１１９）。
【００８２】
そして、ＣＭ＃０のＣＰＵ＃０は、格納先ＣＰＵを切替えるか否かを判定する（ステップＳ１２０）。なお、ここでは、ＣＭ＃０のＣＰＵ＃０は、格納先ＣＰＵを切替えると判定するものとして説明する。この場合、ＣＭ＃０のＣＰＵ＃０は、切替えるＣＰＵを選択して、ＣＭ＃１のＣＰＵ＃０に通知する（ステップＳ１２１）。なお、ここでは、ＣＭ＃０のＣＰＵ＃０は、切替えるＣＰＵとして、ＣＭ＃６のＣＰＵ＃０を選択するものとして説明する。
【００８３】
続いて、図６Ｂに示すように、ＣＭ＃１のＣＰＵ＃０は、ＣＡ＃１のダンプデータの格納をＣＭ＃６のＣＰＵ＃０に依頼する（ステップＳ１２２）。続いて、ＣＭ＃１のＣＰＵ＃０は、ＣＡ＃１のダンプデータのコピーをＣＭ＃５のＣＰＵ＃１に依頼する（ステップＳ１２３）。すなわち、ＣＭ＃１のＣＰＵ＃０は、ＣＭ＃５のＣＰＵ＃１が格納したＣＡ＃１のダンプデータをＣＭ＃６のＣＰＵ＃０に転送し、ＣＭ＃６のＣＰＵ＃０に格納させる。
【００８４】
ＣＭ＃５のＣＰＵ＃１は、ＣＭ＃６のＣＰＵ＃０１にコピーデータを転送する（ステップＳ１２４）。そして、ＣＭ＃６のＣＰＵ＃０は、受信したコピーデータをＢＵＤ３３に格納する（ステップＳ１２５）。ＣＭ＃５のＣＰＵ＃１は、コピーが終了したか否かを判定し（ステップＳ１２６）、コピーが終了したと判定する場合（ステップＳ１２６、Ｙｅｓ）、コピー終了をＣＭ＃６のＣＰＵ＃０に通知する（ステップＳ１２７）。なお、ＣＭ＃５のＣＰＵ＃１は、コピーが終了していないと判定する場合（ステップＳ１２６、Ｎｏ）、ステップＳ１２４に移行する。
【００８５】
ＣＭ＃１のＣＰＵ＃０は、ＣＡ＃１のダンプデータを取得し（ステップＳ１２８）、取得したＣＡ＃１のダンプデータをＣＭ＃６のＣＰＵ＃０に転送する（ステップＳ１２９）。
【００８６】
ＣＭ＃６のＣＰＵ＃０は、ＣＭ＃１のＣＰＵ＃０から受信したＣＡ＃１のダンプデータを圧縮し、ＢＵＤ３３に格納する（ステップＳ１３０）。また、ＣＭ＃６のＣＰＵ＃０は、格納が完了したことをＣＭ＃１のＣＰＵ＃０に通知する（ステップＳ１３１）。
【００８７】
格納が完了したことを通知されたＣＭ＃１のＣＰＵ＃０は、格納処理を終了するか否かを判定する（ステップＳ１３２）。言い換えると、ＣＭ＃１のＣＰＵ＃０は、ＣＡ＃１のダンプデータに続きがあるか否かを判定する。ここで、ＣＭ＃１のＣＰＵ＃０は、格納処理を終了すると判定する場合（ステップＳ１３２、Ｙｅｓ）、吸い上げ処理の終了をＣＭ＃０のＣＰＵ＃０に通知する（ステップＳ１３３）。なお、ＣＭ＃１のＣＰＵ＃０は、格納処理を終了しないと判定する場合（ステップＳ１３２、Ｎｏ）、ステップＳ１２８に移行する。
【００８８】
吸い上げ処理の終了を通知されたＣＭ＃０のＣＰＵ＃０は、吸い上げ制御テーブルを更新する（ステップＳ１３４）。そして、ＣＭ＃０のＣＰＵ＃０は、監視処理を停止する（ステップＳ１３５）。なお、ＣＭ＃０のＣＰＵ＃０は、格納先ＣＰＵを切替えた後も、監視処理を繰り返し実行する（ステップＳ１１６〜ステップＳ１１８）。
【００８９】
（吸い上げ先決定処理の手順）
図７Ａおよび図７Ｂは、実施例２に係る吸い上げ先決定処理の処理手順を示すフローチャートである。なお、吸い上げ先の対象となる各ＣＰＵには、あらかじめインデックスが振られているものとする。例えば、ＣＭ＃０のメインＣＰＵに「０」、ＣＭ＃０のサブＣＰＵに「１」、ＣＭ＃１のメインＣＰＵに「２」、ＣＭ＃１のサブＣＰＵに「３」がそれぞれ振られている。
【００９０】
例えば、異常が発生したＣＡのダンプデータのサイズを含む吸い上げ先ＣＰＵ取得コマンドを受信した吸い上げ先決定部５２は、ダンプデータのサイズから標準の吸い上げ時間（ＣＡダンプ吸い上げ時間）を算出する（ステップＳ２０１）。ＣＡダンプ吸い上げ時間は、式（１）によって算出される。そして、吸い上げ先決定部５２は、算出したＣＡダンプ吸い上げ時間を吸い上げ制御テーブル３７１に格納する。
【００９１】
そして、吸い上げ先決定部５２は、各ＣＰＵの使用率とＩ／Ｏコマンド数を各ＣＰＵから取得する（ステップＳ２０２）。各ＣＰＵの使用率は、各ＣＭのＣＰＵ使用率情報３７２に記憶されている。各ＣＰＵのＩ／Ｏコマンド数は、各ＣＭのコマンド数情報３７３に記憶されている。
【００９２】
そして、吸い上げ先決定部５２は、標準の吸い上げ時間および各ＣＰＵの使用率から各ＣＰＵの吸い上げ実行時間（ＣＡダンプ吸い上げ実行時間）を算出する（ステップＳ２０３）。ＣＡダンプ吸い上げ実行時間は、式（２）によって算出される。そして、吸い上げ先決定部５２は、算出した各ＣＰＵのＣＡダンプ吸い上げ実行時間を吸い上げ制御テーブル３７１に格納する。
【００９３】
さらに、吸い上げ先決定部５２は、Ｉ／Ｏコマンド数から各ＣＰＵのＩ／Ｏ処理時間を算出する（ステップＳ２０４）。そして、吸い上げ先決定部５２は、算出した各ＣＰＵのＩ／Ｏ処理時間を吸い上げ制御テーブル３７１に格納する。
【００９４】
続いて、吸い上げ先決定部５２は、候補ＣＰＵを初期値（例えば、０ｘＦＦ）に設定する（ステップＳ２０５）。なお、候補ＣＰＵとは、吸い上げ先ＣＰＵの候補を示す変数であり、候補となるＣＰＵに振られたインデックスの値が設定される。また、吸い上げ先決定部５２は、格納時間最短ＣＰＵを初期値（例えば、０ｘＦＦ）に設定する（ステップＳ２０６）。なお、格納時間最短ＣＰＵとは、ダンプデータの格納時間が最短のＣＰＵを示す変数であり、格納時間が最短のＣＰＵに振られたインデックスの値が設定される。
【００９５】
そして、吸い上げ先決定部５２は、Ｉｎｄｅｘに吸い上げ先の対象となるＣＰＵのインデックスの値０を設定し、確認ＣＰＵにＩｎｄｅｘに設定された値を設定する（ステップＳ２０７）。なお、Ｉｎｄｅｘとは、変数であり、各ＣＰＵに振られたインデックスの値が設定される。また、確認ＣＰＵとは、吸い上げ先ＣＰＵとなるか否かを確認するＣＰＵを示す変数であり、ＣＰＵに振られたインデックスの値が設定される。
【００９６】
続いて、吸い上げ先決定部５２は、Ｉｎｄｅｘに設定された値が吸い上げ先の対象となるＣＰＵの最大数と等しいか否かを判定する（ステップＳ２０８）。
【００９７】
一方、Ｉｎｄｅｘに設定された値がＣＰＵの最大数と等しくないと判定した場合（ステップＳ２０８、Ｎｏ）、吸い上げ先決定部５２は、ステップＳ２１４に移行する。
【００９８】
ステップＳ２１４では、吸い上げ先決定部５２は、吸い上げ制御テーブル３７１に記憶された実行中フラグに基づいて、確認ＣＰＵの実行中フラグがＯＮであるか否かを判定する（ステップＳ２１４）。確認ＣＰＵの実行中フラグがＯＮであると判定した場合（ステップＳ２１４、Ｙｅｓ）、吸い上げ先決定部５２は、次のＣＰＵを確認すべく、ステップＳ２２２に移行する。
【００９９】
確認ＣＰＵの実行中フラグがＯＮでないと判定した場合（ステップＳ２１４、Ｎｏ）、吸い上げ先決定部５２は、格納時間最短ＣＰＵが初期値であるか否かを判定する（ステップＳ２１５）。格納時間最短ＣＰＵが初期値であると判定した場合（ステップＳ２１５、Ｙｅｓ）、吸い上げ先決定部５２は、格納時間最短ＣＰＵに確認ＣＰＵを設定すべく、ステップＳ２１７に移行する。
【０１００】
格納時間最短ＣＰＵが初期値でないと判定した場合（ステップＳ２１５、Ｎｏ）、吸い上げ先決定部５２は、確認ＣＰＵのＣＡ吸い上げ実行時間が格納時間最短ＣＰＵのＣＡ吸い上げ実行時間以下であるか否かを判定する（ステップＳ２１６）。確認ＣＰＵのＣＡ吸い上げ実行時間が格納時間最短ＣＰＵのＣＡ吸い上げ実行時間以下であると判定した場合（ステップＳ２１６、Ｙｅｓ）、吸い上げ先決定部５２は、格納時間最短ＣＰＵに確認ＣＰＵを設定すべく、ステップＳ２１７に移行する。
【０１０１】
ステップＳ２１７では、吸い上げ先決定部５２は、格納時間最短ＣＰＵに確認ＣＰＵを設定する（ステップＳ２１７）。すなわち、吸い上げ先決定部５２は、確認したＣＰＵの中で格納時間が最短のＣＰＵとして現在確認中の確認ＣＰＵを設定する。
【０１０２】
一方、確認ＣＰＵが格納時間最短ＣＰＵのＣＡ吸い上げ実行時間以下でない場合（ステップＳ２１６、Ｎｏ）、吸い上げ先決定部５２は、確認ＣＰＵのＣＡ吸い上げ実行時間が吸い上げ完了規定時間以下であるか否かを判定する（ステップＳ２１８）。ここで、吸い上げ完了規定時間とは、あらかじめ定められた吸い上げに許される規定時間を示す。確認ＣＰＵのＣＡ吸い上げ実行時間が吸い上げ完了規定時間より大きいと判定した場合（ステップＳ２１８、Ｎｏ）、吸い上げ先決定部５２は、次のＣＰＵを確認すべく、ステップＳ２２２に移行する。
【０１０３】
確認ＣＰＵのＣＡ吸い上げ実行時間が吸い上げ完了規定時間以下であると判定した場合（ステップＳ２１８、Ｙｅｓ）、吸い上げ先決定部５２は、候補ＣＰＵが初期値であるか否かを判定する（ステップＳ２１９）。候補ＣＰＵが初期値でないと判定した場合（ステップＳ２１９、Ｎｏ）、吸い上げ先決定部５２は、確認ＣＰＵのＩ／Ｏ処理時間が候補ＣＰＵのＩ／Ｏ処理時間以下であるか否かを判定する（ステップＳ２２０）。ここで、確認ＣＰＵのＩ／Ｏ処理時間が候補ＣＰＵのＩ／Ｏ処理時間より大きいと判定した場合（ステップＳ２２０、Ｎｏ）、吸い上げ先決定部５２は、次のＣＰＵを確認すべく、ステップＳ２２２に移行する。
【０１０４】
候補ＣＰＵが初期値である場合（ステップＳ２１９、Ｙｅｓ）または確認ＣＰＵのＩ／Ｏ処理時間が候補ＣＰＵのＩ／Ｏ処理時間以下である場合（ステップＳ２２０、Ｙｅｓ）、吸い上げ先決定部５２は、ステップＳ２２１に移行する。ステップＳ２２１では、吸い上げ先決定部５２は、候補ＣＰＵに確認ＣＰＵを設定する（ステップＳ２２１）。すなわち、吸い上げ先決定部５２は、確認したＣＰＵの中で、ＣＡ吸い上げ実行時間が吸い上げ完了規定時間より短く、且つＩ／Ｏ処理時間が最短のＣＰＵとして、現在確認中の確認ＣＰＵを設定する。
【０１０５】
ステップＳ２２２では、吸い上げ先決定部５２は、Ｉｎｄｅｘを１加算し、確認ＣＰＵをＩｎｄｅｘに更新する（ステップＳ２２２）。そして、吸い上げ先決定部５２は、ステップＳ２０８に移行する。
【０１０６】
続いて、ステップＳ２０８では、Ｉｎｄｅｘに設定された値が吸い上げ先の対象となるＣＰＵの最大数と等しいと判定した場合（ステップＳ２０８、Ｙｅｓ）、吸い上げ先決定部５２は、候補ＣＰＵが初期値であるか否かを判定する（ステップＳ２０９）。候補ＣＰＵが初期値でないと判定した場合（ステップＳ２０９、Ｎｏ）、吸い上げ先決定部５２は、候補ＣＰＵを吸い上げ先のＣＰＵに決定し（ステップＳ２１０）、吸い上げ先決定処理を終了する。
【０１０７】
候補ＣＰＵが初期値であると判定した場合（ステップＳ２０９、Ｙｅｓ）、吸い上げ先決定部５２は、格納時間最短ＣＰＵが初期値であるか否かを判定する（ステップＳ２１１）。つまり、ＣＡ吸い上げ実行時間が吸い上げ完了規定時間より短くなるＣＰＵが１個も存在しなかった場合である。ここで、格納時間最短ＣＰＵが初期値でないと判定した場合（ステップＳ２１１、Ｎｏ）、吸い上げ先決定部５２は、格納時間最短ＣＰＵを吸い上げ先のＣＰＵに決定し（ステップＳ２１２）、吸い上げ先決定処理を終了する。
【０１０８】
一方、格納時間最短ＣＰＵが初期値であると判定した場合（ステップＳ２１１、Ｙｅｓ）、吸い上げ先決定部５２は、吸い上げ先のＣＰＵとして候補となるＣＰＵは存在しないと決定し（ステップＳ２１３）、吸い上げ先決定処理を終了する。
【０１０９】
［実施例２の効果］
上述してきたように、実施例２に係るストレージシステム２Ａは、各ＣＰＵで処理しているＩ／Ｏコマンド数を利用することにより、Ｉ／Ｏコマンドを最も処理していないＣＰＵを選択して、ＣＡダンプの吸い上げを実施する。すなわち、実施例２に係るストレージシステム２Ａは、吸い上げＣＭと格納ＣＭとを分離させる。この結果、実施例２に係るストレージシステム２Ａは、ＣＡのダンプデータを吸い上げる処理がストレージシステム２Ａの性能に及ぼす影響を小さくすることが可能となり、ＣＡダンプの吸い上げが完了できる可能性が高くなる。
【０１１０】
また、実施例２に係るストレージシステム２Ａにおいて、吸い上げたダンプデータの格納処理の実行中に吸い上げ処理を実行中の制御部の使用率が所定の閾値の範囲外になる場合、他の制御部にダンプデータの格納処理の実行を依頼する。このため、ストレージシステム２Ａは、格納処理の実行中に自身の使用率が所定の閾値の範囲外になる場合でも、ＣＡ３１から吸い上げたダンプデータを確実に記録できる。
【０１１１】
また、ストレージシステム２Ａは、吸い上げ処理を完了後、各ＣＭのＢＵＤ３３に格納された圧縮ダンプデータの断片を結合する。この結合処理は特に時間監視されていないため、余裕を持って実行することが可能である。ここで、ストレージシステム２Ａは、最も大きな圧縮ダンプデータを保持している領域を持つＢＵＤを、結合処理時のＣＡダンプ結合先ＢＵＤ３３に選択するようにしてもよい。
【０１１２】
格納ＣＰＵの切り替えが複数起こると圧縮ＣＡダンプデータの断片が各ＢＵＤ３３に点在することになる。ストレージシステム２Ａは、この点在した断片データを結合する前に他のＣＡデグレードが発生すると、使用できるＣＡダンプ域が少なくなり、ＣＡダンプ格納ができない状況に陥ることがある。そこで、ストレージシステム２Ａは、格納ＣＭのＣＰＵの切り替えが発生した場合に、新格納ＣＭのＣＰＵへのＣＡダンプ吸い上げ処理とダンプ結合処理の並列動作を行う。マスターＣＭ３Ａの処理は煩雑になるが、切替え前のＢＵＤ３３に格納されたＣＡダンプの先頭は圧縮されておりサイズも小さいので、各ＣＭ３Ｂは、ＣＡダンプデータ格納よりも短時間でダンプ結合処理を完了させることが可能である。これにより、ストレージシステム２Ａは、使用できるＣＡダンプ域を吸い上げ途中に増やすことができる。この結果、ストレージシステム２Ａは、複数のＣＰＵ切り替えが発生した場合でも、ＣＡダンプ格納ができない状況を早期に解消できる。
【０１１３】
また、ストレージシステム２Ａは、以下の３つの条件を全て満たす場合に、格納先の制御部を切り替えるようにしてもよい。例えば、格納先の制御部の負荷が大きくなり、規定時間内にCAダンプを吸い上げることができない。また、制御部の負荷が小さくなり、残りのＣＡダンプを最後まで吸い上げることができる低負荷な制御部が他に存在する。そして、切替え回数が最大切り替え回数に達していない。ここで、「最大切り替え回数」は、例えば３回とする。この場合、ストレージシステム２Ａが有する８つのＢＵＤの半数の４領域まで使用することになる。このような３つの条件を満たす場合、ストレージシステム２Ａは、ＣＡダンプを最後まで吸い上げることができる。なお、「最大切り替え回数」は、変更可能である。
【０１１４】
なお、実施例２に係るストレージシステム２Ａにおいて、ＣＭ３Ｂにも吸い上げ先決定部５２を備えるようにしてもよい。なお、この場合、ＣＭ３Ｂの記憶部３７Ｂには、吸い上げ制御テーブル３７１が保持される。
【実施例３】
【０１１５】
ところで、本発明は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例３では、本発明に含まれる他の実施例について説明する。
【０１１６】
（システム構成等）
本実施例において説明した各処理のうち自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。
【０１１７】
また、実施例１に係るストレージシステム２において、メイン制御部３４は、ＣＡ３１に異常が発生した場合、ストレージシステム２内の制御部の使用率と、Ｉ／Ｏコマンド数とに基づいて、ＣＡから吸い上げたダンプデータの格納先を選択するようにしてもよい。
【０１１８】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更してもよい。また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されていることを要しない。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１１９】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１２０】
（付記１）データを記憶する記憶装置へのデータの入出力を制御する複数の制御装置を備えたストレージシステムにおいて、
各制御装置は、
前記記憶装置へのデータの入出力に関わる命令が入力されるインタフェース部と、前記インタフェース部から前記命令を受け取って実行する演算処理部とを有し、
各演算処理部は、
前記インタフェース部に異常が生じた場合、演算処理部を選択して当該インタフェース部のダンプデータの格納処理の実行を前記選択した演算処理部に依頼するとともに、前記格納処理の実行中に前記選択した演算処理部の使用率が所定の閾値の範囲外になる場合、演算処理部を新たに選択して該ダンプデータの格納処理の実行を前記新たに選択した演算処理部に依頼する
ことを特徴とするストレージシステム。
【０１２１】
（付記２）各演算処理部は、
前記インタフェース部に異常が生じた場合、自身を選択して当該インタフェース部のダンプデータの格納処理を実行するとともに、前記格納処理の実行中に自身の使用率が所定の閾値の範囲外になる場合、演算処理部を新たに選択して該ダンプデータの格納処理の実行を前記新たに選択した演算処理部に依頼する
ことを特徴とする付記１に記載のストレージシステム。
【０１２２】
（付記３）各演算処理部は、更に、
前記格納処理の実行中に前記選択した演算処理部の使用率が所定の閾値の範囲外になる場合、該演算処理部により格納されるダンプデータのうち、新たに選択する前記演算処理部により格納されていないダンプデータを、該新たに選択する演算処理部にコピーさせることを特徴とする付記１または２に記載のストレージシステム。
【０１２３】
（付記４）使用率が所定の閾値の範囲外になる演算処理部による前記コピーと新たに選択された演算処理部による前記格納処理とを並列的に実行することを特徴とする付記３に記載のストレージシステム。
【０１２４】
（付記５）各演算処理部は、
前記複数の制御装置が有する演算処理部それぞれの使用率を監視し、該使用率に基づいて算出するダンプデータの格納処理の時間が所定の時間より短く、且つ前記命令の数から算出する格納処理の時間が短い演算処理部を選択して当該インタフェース部のダンプデータの格納処理の実行を前記選択した演算処理部に依頼することを特徴とする付記１〜４のいずれか一つに記載のストレージシステム。
【０１２５】
（付記６）記憶装置へのデータの入出力に関わる命令が入力されるインタフェース部と、該インタフェース部から前記命令を受け取って実行する演算処理部とを備えた制御装置を複数有するストレージシステムの制御方法において、
各演算処理部が、
前記インタフェース部に異常が生じた場合、演算処理部を選択して当該インタフェース部のダンプデータの格納処理の実行を前記選択した演算処理部に依頼するとともに、前記格納処理の実行中に前記選択した演算処理部の使用率が所定の閾値の範囲外になる場合、演算処理部を新たに選択して該ダンプデータの格納処理の実行を前記新たに選択した演算処理部に依頼する
処理を含んだことを特徴とするストレージシステムの制御方法。
【０１２６】
（付記７）各演算処理部が、
前記インタフェース部に異常が生じた場合、自身を選択して当該インタフェース部のダンプデータの格納処理を実行するとともに、前記格納処理の実行中に自身の使用率が所定の閾値の範囲外になる場合、演算処理部を新たに選択して該ダンプデータの格納処理の実行を前記新たに選択した演算処理部に依頼する
処理を含んだことを特徴とする付記６に記載のストレージシステムの制御方法。
【０１２７】
（付記８）各演算処理部が、更に、
前記格納処理の実行中に前記選択した演算処理部の使用率が所定の閾値の範囲外になる場合、該演算処理部により格納されるダンプデータのうち、新たに選択される前記演算処理部により格納されていないダンプデータを、該新たに選択される演算処理部にコピーさせることを特徴とする付記６または７に記載のストレージシステムの制御方法。
【０１２８】
（付記９）前記ストレージシステムの制御方法において、
使用率が所定の閾値の範囲外になる演算処理部による前記コピーと新たに選択された演算処理部による前記格納処理とを並列的に実行することを特徴とする付記８に記載のストレージシステムの制御方法。
【０１２９】
（付記１０）各演算処理部が、
前記複数の制御装置が有する演算処理部それぞれの使用率を監視し、該使用率に基づいて算出するダンプデータの格納処理の時間が所定の時間より短く、且つ前記命令の数から算出する格納処理の時間が短い演算処理部を選択して当該インタフェース部のダンプデータの格納処理の実行を前記選択した演算処理部に依頼することを特徴とする付記６〜９のいずれか一つに記載のストレージシステムの制御方法。
【符号の説明】
【０１３０】
１  ホストコンピュータ
２、２Ａ  ストレージシステム
３、３Ａ、３Ｂ  ＣＭ
４  ディスク
５  ＦＲＴ
６  ＢＲＴ
７  ＤＥ
３１  ＣＡ
３２  ＩＯＣ
３３  ＢＵＤ
３４、３４Ａ、３４Ｂ  メイン制御部
３５、３５Ａ  サブ制御部
３６  ＣＭ間通信ドライバ
３７Ａ、３７Ｂ  記憶部
５１  吸い上げ処理部
５２  吸い上げ先決定部
５３  情報取得部
３７１  吸い上げ制御テーブル
３７２  ＣＰＵ使用率情報
３７３  コマンド数情報
【図１】
2014010711.tif 000003
【図２】
2014010711.tif 000004
【図３】
2014010711.tif 000005
【図４Ａ】
2014010711.tif 000006
【図４Ｂ】
2014010711.tif 000007
【図４Ｃ】
2014010711.tif 000008
【図４Ｄ】
2014010711.tif 000009
【図４Ｅ】
2014010711.tif 000010
【図５Ａ】
2014010711.tif 000011
【図５Ｂ】
2014010711.tif 000012
【図５Ｃ】
2014010711.tif 000013
【図６Ａ】
2014010711.tif 000014
【図６Ｂ】
2014010711.tif 000015
【図７Ａ】
2014010711.tif 000016
【図７Ｂ】
2014010711.tif 000017