(57)【要約】【課題】ストレージシステムにリソースを増強しなくても性能ボトルネックが緩和されるようにする。【解決手段】一方の種類のリソースの負荷がより高くなると他方の種類のリソースの負荷がより低くなる関係性のある異なる種類のリソースである第一種のリソース及び第二種のリソースとがストレージシステムにあり、そのストレージシステムに、処理制御部を備える。処理制御部は、第一種のリソースと第二種のリソースのうち一方の種類のリソースの負荷が高く他方の種類のリソースの負荷に余裕がある場合には、他方の種類のリソースの負荷がより高くなるような処理が実行されるようにする。【選択図】図１
2008186108.tif 000002
【特許請求の範囲】
【請求項１】
上位装置から送信されたＩ／Ｏ要求を受信し処理するストレージシステムであって、
一方の種類のリソースの負荷がより高くなると他方の種類のリソースの負荷がより低くなる関係性のある異なる種類のリソースである第一種のリソース及び第二種のリソースと、
前記第一種のリソースと前記第二種のリソースのうち一方の種類のリソースの負荷が高く他方の種類のリソースの負荷に余裕がある場合には、前記他方の種類のリソースの負荷がより高くなるような処理が実行されるようにする処理制御部と
を備えるストレージシステム。
【請求項２】
前記第一種のリソースにかかる負荷が高く前記第二種のリソースにかかる負荷が低い第一の制御方式と、前記第一種のリソースにかかる負荷が前記第一の制御方式の場合よりも低く前記第二種のリソースにかかる負荷が前記第一の制御方式の場合よりも高い第二の制御方式とのうちの指定された制御方式に従う処理を実行する制御方式実行部を更に備え、
前記他方の種類のリソースの負荷がより高くなるような処理が実行されるようにするとは、該他方の種類のリソースが前記第一種のリソースであるならば、前記第一の制御方式を指定することであり、該他方の種類のリソースが前記第二種のリソースであるならば、前記第二の制御方式を指定することである、
請求項１記載のストレージシステム。
【請求項３】
前記第一の制御方式は、前記第一種のリソースに第一の特定の処理を実行させることで前記第二種のリソースの負荷を補助する制御方式であり、
前記第二の制御方式は、前記第一種のリソースに前記第一の特定の処理よりもかかる負荷が小さい第二の特定の処理を実行させることで前記第二種のリソースの負荷を前記第一の制御方式が実行される場合よりも高くする制御方式である、
請求項２記載のストレージシステム。
【請求項４】
前記第二種のリソースは、複数の記憶装置の各々であり、
前記第一種のリソースは、前記受信したＩ／Ｏ要求を解析することにより特定された、前記複数の記憶装置のうちの一以上の記憶装置の各々に対して、Ｉ／Ｏコマンドを生成して発行する、プロセッサである、
請求項３記載のストレージシステム。
【請求項５】
前記第一の特定の処理は、前記プロセッサが、前記複数の記憶装置の各々に対して、複数のＩ／Ｏコマンドをそれの生成順序と異なる順序に並び替えて発行する処理である、
請求項４記載のストレージシステム。
【請求項６】
前記複数の記憶装置の各々が、未完了のＩ／Ｏコマンドを一つ記憶することができるが複数個記憶することができないタイプの記憶装置である、
請求項５記載のストレージシステム。
【請求項７】
前記第二の特定の処理は、前記プロセッサが、前記複数の記憶装置の各々に対して、複数のＩ／Ｏコマンドを生成順序通りに発行する処理である、
請求項４記載のストレージシステム。
【請求項８】
前記関係性の無い第三種のリソースと、
前記第一種のリソース、前記第二種のリソース及び前記第三種のリソースの各々の負荷を測定する負荷測定部と
を更に備え、
前記処理制御部は、前記第一種のリソースと前記第二種のリソースとのうち一方の種類のリソースの測定された負荷が高く他方の種類のリソースの測定された負荷に余裕がある場合であっても、前記第三種のリソースの測定された負荷が高ければ、前記他方の種類のリソースの測定された負荷がより高くなるような処理が実行されるようにはしない、
請求項１記載のストレージシステム。
【請求項９】
前記第二種のリソースは、複数の記憶装置の各々であり、
前記第一種のリソースは、前記受信したＩ／Ｏ要求を解析することにより特定された、前記複数の記憶装置のうちの一以上の記憶装置の各々に対して、Ｉ／Ｏコマンドを生成して発行する、プロセッサであり、
前記第三種のリソースは、前記上位装置に対する通信インターフェース装置と、前記プロセッサが接続されている第一の通信経路と、前記複数の記憶装置の各々が接続されている第二の通信経路とのうちの少なくとも一つである、
請求項７記載のストレージシステム。
【請求項１０】
前記第一種のリソース及び前記第二種のリソースの各々の負荷を測定する負荷測定部を更に備え、
前記処理制御部は、前記第一種のリソースと前記第二種のリソースのうち一方の種類のリソースの測定された負荷が高く他方の種類のリソースの測定された負荷に余裕がある場合には、前記他方の種類のリソースの測定された負荷がより高くなるような処理が実行されるようにする、
請求項１記載のストレージシステム。
【請求項１１】
前記第一種のリソースは、プロセッサであり、
前記第二種のリソースは、前記プロセッサからＩ／Ｏコマンドを受信する複数の記憶装置の各々であり、
前記負荷測定部は、前記複数の記憶装置の各々の記憶装置の負荷を、該負荷を測定するための時間長である測定時間と、該測定時間における、該記憶装置に未完了のＩ／Ｏコマンドが存在する一以上の時間長である一以上の動作時間の合計とに基づいて測定する、
請求項１０記載のストレージシステム。
【請求項１２】
前記第一種のリソースは、プロセッサであり、
前記第二種のリソースは、前記プロセッサからＩ／Ｏコマンドを受信する複数の記憶装置の各々であり、
前記負荷測定部は、前記複数の記憶装置の各々の記憶装置の負荷を、該記憶装置に発行される各Ｉ／Ｏコマンドについての時間長であって、前記プロセッサが該記憶装置にＩ／Ｏコマンドを発行してから完了報告を該Ｉ／Ｏコマンドの応答として該記憶装置から受信するまでの時間長、に基づいて測定する、
請求項１０記載のストレージシステム。
【請求項１３】
前記第一種のリソースは、プロセッサであり、
前記第二種のリソースは、前記プロセッサからＩ／Ｏコマンドを受信する複数の記憶装置の各々であり、
前記負荷測定部は、前記複数の記憶装置の各々の記憶装置の負荷を、該負荷を測定するための時間長である測定時間の間に該記憶装置に存在した未完了のＩ／Ｏコマンドの数に基づいて測定し、
前記測定時間の間に存在した未完了のＩ／Ｏコマンドの数とは、前記測定時間における複数の単位時間にそれぞれ存在した複数の未完了Ｉ／Ｏコマンド数の合計である、
請求項１０記載のストレージシステム。
【請求項１４】
前記第一種のリソースは、プロセッサであり、
前記第二種のリソースは、前記プロセッサからＩ／Ｏコマンドを受信する複数の記憶装置の各々であり、
前記負荷測定部は、複数の負荷測定方法の中から選択した負荷測定方法で前記複数の記憶装置の各々の負荷を測定し、
前記複数の負荷測定方法には、第一乃至第三の負荷測定方法のうちの少なくとも二つの負荷測定方法があり、
前記第一の負荷測定方法は、前記複数の記憶装置の各々の記憶装置の負荷を、該負荷を測定するための時間長である測定時間と、該測定時間における、該記憶装置に未完了のＩ／Ｏコマンドが存在する一以上の時間長である一以上の動作時間の合計とに基づいて測定する方法であり、
前記第二の負荷測定方法は、前記複数の記憶装置の各々の記憶装置の負荷を、該記憶装置に発行される各Ｉ／Ｏコマンドについての時間長であって、前記プロセッサが該記憶装置にＩ／Ｏコマンドを発行してから完了報告を該Ｉ／Ｏコマンドの応答として該記憶装置から受信するまでの時間長、に基づいて測定する方法であり、
前記第三の負荷測定方法は、前記複数の記憶装置の各々の記憶装置の負荷を、該負荷を測定するための時間長である測定時間の間に該記憶装置に存在した未完了のＩ／Ｏコマンドの数に基づいて測定する方法であり、前記測定時間の間に存在した未完了のＩ／Ｏコマンドの数とは、前記測定時間における複数の単位時間にそれぞれ存在した複数の未完了Ｉ／Ｏコマンド数の合計である、
請求項１０記載のストレージシステム。
【請求項１５】
前記負荷測定部は、前記プロセッサの測定された負荷に応じて、前記複数の負荷測定方法のうちのいずれかを選択する、
請求項１４記載のストレージシステム。
【請求項１６】
前記第一種のリソースと前記第二種のリソースのうち一方の種類のリソースの測定された負荷が高く他方の種類のリソースの負荷に余裕がある場合とは、現在の時刻が所定の時間帯に属する場合である、
請求項１記載のストレージシステム。
【請求項１７】
前記関係性の無い第三種のリソースと、
前記第一種のリソース、前記第二種のリソース及び前記第三種のリソースの各々の負荷を測定する負荷測定部と、
前記第一種のリソースに第一の特定の処理を実行させることで前記第二種のリソースの負荷を補助する第一の制御方式と、前記第一種のリソースに前記第一の特定の処理よりもかかる負荷が小さい第二の特定の処理を実行させることで前記第二種のリソースの負荷を前記第一の制御方式が実行される場合よりも高くする第二の制御方式とのうちの指定された制御方式に従う処理を実行する制御方式実行部と
を更に備え、
前記第二種のリソースは、複数のＳＡＴＡハードディスクドライブの各々であり、
前記第一種のリソースは、前記受信したＩ／Ｏ要求を解析することにより特定された、前記複数のＳＡＴＡハードディスクドライブのうちの一以上のＳＡＴＡハードディスクドライブの各々に対して、Ｉ／Ｏコマンドを生成して発行する、プロセッサであり、
前記第三種のリソースは、前記上位装置に対する通信インターフェース装置と、前記プロセッサが接続されている第一の通信経路と、前記複数のＳＡＴＡハードディスクドライブの各々が接続されている第二の通信経路とのうちの少なくとも一つであり、
前記第一の特定の処理は、前記プロセッサが、前記複数のＳＡＴＡハードディスクドライブの各々に対して、複数のＩ／Ｏコマンドをそれの生成順序と異なる順序に並び替えて発行する処理であり、
前記第二の特定の処理は、前記プロセッサが、前記複数のＳＡＴＡハードディスクドライブの各々に対して、複数のＩ／Ｏコマンドを生成順序通りに発行する処理であり、
前記処理制御部は、前記プロセッサと前記ＳＡＴＡハードディスクドライブとのうち一方の種類のリソースの測定された負荷が高く他方の種類のリソースの測定された負荷に余裕がある場合であっても、前記第三種のリソースの測定された負荷が高ければ、前記他方の種類のリソースの測定された負荷がより高くなるような処理が実行されるようにはしない、
請求項１記載のストレージシステム。
【請求項１８】
上位装置から送信されたＩ／Ｏ要求を受信し処理するストレージシステム内での負荷分散方法であって、
一方の種類のリソースの負荷がより高くなると他方の種類のリソースの負荷がより低くなる関係性のある異なる種類のリソースである第一種のリソース及び第二種のリソースとのうち、前記第一種のリソースと前記第二種のリソースのうち一方の種類のリソースの負荷が高く他方の種類のリソースの負荷に余裕がある場合には、前記他方の種類のリソースの負荷がより高くなるような処理を実行する、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム内の負荷分散に関する。
【背景技術】
【０００２】
一般に、ストレージシステムの用途は様々である。例えば、昼間には、トランザクション処理に利用され、夜間には、バックアップ処理に利用されることがある。利用される処理の種類が異なると、上位装置からストレージシステムに対するＩ／Ｏ特性が異なる。例えば、トランザクション処理では、単位時間当たりに受信するＩ／Ｏ要求の数が多く、バックアップ処理では、トランザクション処理に比して、単位時間当たりに受信するＩ／Ｏ要求の数が少ない。
【０００３】
Ｉ／Ｏ特性が異なると、ストレージシステム内で負荷の高くなるリソースの種類が異なる。高負荷のリソースが性能ボトルネックとなることで、ストレージシステムの性能（以下、「システム性能」と言うことがある）が制限されてしまう。ここで、「システム性能」とは、例えば、ＩＯＰＳ（上位装置から１秒当たりに受信したＩ／Ｏ要求の数）、及び／又は、応答時間長（上位装置がＩ／Ｏ要求を発行してから、該Ｉ／Ｏ要求に対する応答をストレージシステムから上位装置が受信するまでの時間長）である。
【０００４】
例えば、特許文献１では、ストレージシステムの各リソースの性能評価を行い、ユーザに性能ボトルネックを提示するシステムが提案されている。
【特許文献１】特開２００４−１７８１６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ストレージシステムの性能を向上するためには、性能ボトルネックの解消が重要である。一般的に、性能ボトルネックの解消とは、性能ボトルネックとなるリソースを増強することを意味する。例えば、記憶装置が性能ボトルネックとなっている場合には、記憶装置の台数を増加するといった措置が採られる。
【０００６】
しかし、前述の通り、Ｉ／Ｏ特性が異なれば、性能ボトルネックとなりやすいリソースの種類が異なる。このため、各Ｉ／Ｏ特性パターン毎にボトルネックとなりやすい種類のリソースをそれぞれ増強し、どのようなＩ／Ｏ特性パターンにおいても性能ボトルネックが生じないような大きな構成を構築する必要がある。一般的に、リソースの増強にはコストがかかるため、前述の構成ではコスト高なシステムとなってしまう。また、通常、増強されたリソースは、性能ボトルネックとならない場合には使用されることがないので、無駄である。
【０００７】
従って、本発明の目的は、ストレージシステムにリソースを増強しなくても性能ボトルネックが緩和されるようにすることにある。
【０００８】
本発明の他の目的は、後述の説明から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一方の種類のリソースの負荷がより高くなると他方の種類のリソースの負荷がより低くなる関係性のある異なる種類のリソースである第一種のリソース及び第二種のリソースとがストレージシステムにあり、そのストレージシステムに、処理制御部を備える。処理制御部は、第一種のリソースと第二種のリソースのうち一方の種類のリソースの負荷が高く他方の種類のリソースの負荷に余裕がある場合には、他方の種類のリソースの負荷がより高くなるような処理が実行されるようにする。
【発明を実施するための最良の形態】
【００１０】
本発明の実施の形態の概要を説明する。
【００１１】
ストレージシステムに、一方の種類のリソースの負荷がより高くなると他方の種類のリソースの負荷がより低くなる関係性のある異なる種類のリソースである第一種のリソース及び第二種のリソースと、第一種のリソースと第二種のリソースのうち一方の種類のリソースの負荷が高く他方の種類のリソースの負荷に余裕がある場合には、該他方の種類のリソースの負荷がより高くなるような処理が実行されるようにする処理制御部とが備えられる。
【００１２】
第二種のリソースは、例えば、複数の記憶装置の各々である。各記憶装置としては、ハードディスクドライブやフラッシュメモリデバイスなど種々の記憶装置を採用することができる。ハードディスクドライブとしては、ＦＣ（Fibre Channel）、ＳＣＳＩ（Small Computer System Interface）、ＳＡＳ（Serial Attached SCSI）、ＳＡＴＡ（Serial ATA）などに従う通信Ｉ／Ｆを備えたハードディスクドライブを備えることができる。
【００１３】
第一種のリソースは、例えば、プロセッサである。プロセッサは、上位装置から受信したＩ／Ｏ要求を解析することにより特定された、複数の記憶装置のうちの一以上の記憶装置の各々に対して、Ｉ／Ｏコマンドを生成して発行する。
【００１４】
一つの実施形態では、ストレージシステムに、制御方式実行部を更に備えることができる。制御方式実行部は、第一種のリソースにかかる負荷が高く第二種のリソースにかかる負荷が低い第一の制御方式と、第一種のリソースにかかる負荷が第一の制御方式の場合よりも低く第二種のリソースにかかる負荷が第一の制御方式の場合よりも高い第二の制御方式とのうちの指定された制御方式に従う処理を実行することができる。この場合、前述した「他方の種類のリソースの負荷がより高くなるような処理が実行されるようにする」とは、該他方の種類のリソースが第一種のリソースであるならば、第一の制御方式を指定することであり、該他方の種類のリソースが第二種のリソースであるならば、第二の制御方式を指定することである。ここで、第一の制御方式は、第一種のリソースに第一の特定の処理を実行させることで前記第二種のリソースの負荷を補助する制御方式とすることができる。第二の制御方式は、第一種のリソースに第一の特定の処理よりもかかる負荷が小さい第二の特定の処理を実行させることで第二種のリソースの負荷を第一の制御方式が実行される場合よりも高くする制御方とすることができる。第一の特定の処理としては、プロセッサが、複数の記憶装置の各々に対して、複数のＩ／Ｏコマンドをそれの生成順序と異なる順序に並び替えて発行する処理とすることができる。これは、例えば、記憶装置が、未完了のＩ／Ｏコマンドを一つ記憶することができるが複数個記憶することができないタイプの記憶装置である場合に特に有用であると考えられる。第二の特定の処理としては、プロセッサが、複数の記憶装置の各々に対して、複数のＩ／Ｏコマンドを生成順序通りに発行する処理とすることができる。
【００１５】
一つの実施形態では、ストレージシステムには、第一種のリソース及び第二種のリソースが互いに有する上述した関係性に属しない第三種のリソースもある。ストレージシステムには、第一種のリソース、第二種のリソース及び第三種のリソースの各々の負荷を測定する負荷測定部を更に備えることができる。処理制御部は、第一種のリソースと第二種のリソースとのうち一方の種類のリソースの測定された負荷が高く（例えば、該測定された負荷が該種類に対応する第一の閾値を越えており）他方の種類のリソースの測定された負荷に余裕がある（例えば、該測定された負荷が該種類に対応する第一の閾値又は第二の閾値（その第一の閾値よりも小さい閾値）より低い）場合であっても、第三種のリソースの測定された負荷が高ければ（例えば、その測定された負荷が第三種に対応した第一の閾値よりも高ければ）、他方の種類のリソースの測定された負荷がより高くなるような処理が実行されるようにはしないようにすることができる。第三種のリソースとしては、例えば、上位装置に対する通信インターフェース装置（例えば後述のホスト入出力制御部）と、プロセッサが接続されている第一の通信経路（例えば後述の内部バス）と、複数の記憶装置の各々が接続されている第二の通信経路（例えば後述のディスクバス）とのうちの少なくとも一つとすることができる。
【００１６】
一つの実施形態では、負荷測定部は、第一の負荷測定方法により、記憶装置の負荷を測定することができる。第一の負荷測定方法は、該負荷を測定するための時間長である測定時間と、該測定時間における、該記憶装置に未完了のＩ／Ｏコマンドが存在する一以上の時間長である一以上の動作時間の合計とに基づいて測定する方法である。
【００１７】
一つの実施形態では、負荷測定部は、第二の負荷測定方法により、記憶装置の負荷を測定することができる。第二の負荷測定方法は、該記憶装置に発行される各Ｉ／Ｏコマンドについての時間長であって、プロセッサが該記憶装置にＩ／Ｏコマンドを発行してから完了報告を該Ｉ／Ｏコマンドの応答として該記憶装置から受信するまでの時間長に基づいて測定する方法である。
【００１８】
一つの実施形態では、負荷測定部は、第三の負荷測定方法により、記憶装置の負荷を測定することができる。第三の負荷測定方法とは、該負荷を測定するための時間長である測定時間の間に該記憶装置に存在した未完了のＩ／Ｏコマンドの数に基づいて測定する方法である。測定時間の間に存在した未完了のＩ／Ｏコマンドの数とは、測定時間における複数の単位時間にそれぞれ存在した複数の未完了Ｉ／Ｏコマンド数の合計である。
【００１９】
一つの実施形態では、負荷測定部は、前述した第一乃至第三の負荷測定方法のうちの少なくとも二つで構成される複数の負荷測定方法の中から、プロセッサの負荷に応じて、一つの負荷測定方法を選択して実行することができる。ここでは、例えば、プロセッサの負荷が高い場合には、第一の負荷測定方法を選択し、プロセッサの負荷が低い場合には、第二或いは第三の負荷測定方法を選択することができる。
【００２０】
一つの実施形態では、前述した「第一種のリソースと第二種のリソースのうち一方の種類のリソースの測定された負荷が高く他方の種類のリソースの負荷に余裕がある場合」とは、現在の時刻が所定の時間帯に属する場合、とすることができる。
【００２１】
上述した各部は、ハードウェア、コンピュータプログラム又はそれらの組み合わせ（例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること）により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
【００２２】
以下、本発明の幾つかの実施形態を詳細に説明する。
【００２３】
＜第一の実施形態＞。
【００２４】
図１は、本発明の第一の実施形態に係る計算機システムの構成の一例と、その計算機システムに備えられるストレージシステムの内部構成の一例とを示した図である。
【００２５】
ストレージシステム１０２に対し、ホスト１０１や管理ホスト１０３が要求を発行することができる。
【００２６】
ホスト１０１は、ストレージシステム１０２に対してＩ／Ｏ要求を発行する計算機である。Ｉ／Ｏ要求は、ファイルレベルのＩ／Ｏ要求であっても良いし、ブロックレベルのＩ／Ｏ要求であっても良い。従って、ストレージシステム１０２は、ファイルレベルのＩ／Ｏ要求を受信して処理する機能を有していても良いし、ブロックレベルのＩ／Ｏ要求を受信して処理する機能を有していても良い。Ｉ／Ｏ要求に従う処理が実行されることにより、Ｉ／Ｏ要求に従うライト対象データが該Ｉ／Ｏ要求の解析により特定されたディスク６０１に書込まれたり、Ｉ／Ｏ要求の解析により特定されたディスク６０１からリード対象データが読み出されたりする。
【００２７】
管理ホスト１０３は、ストレージシステム１０２を管理するための計算機である。管理ホスト１０３が、ストレージシステム１０２に所望の要求を出すことにより、ストレージシステム１０２から所望の情報を取得することができる。また、管理ホスト１０３は、ストレージシステム１０２に対して種々の設定を行うことができる。
【００２８】
ストレージシステム１０２は、ストレージ制御部１０４と、ディスク群１０６と、これらを接続するバス１０５とによって構成される。
【００２９】
ストレージ制御部１０４は、例えば、一又は複数の回路基板で構成されたコントローラである。ストレージ制御部１０４は、ホスト入出力制御部１１１と、データ転送制御部１１２と、ディスク入出力制御部１１３と、キャッシュメモリ１１４と、ＣＰＵ１１５と、メモリ１１７と、管理Ｉ／Ｆと１１８と、それらの各々が接続される内部バス１１６とを備える。
【００３０】
ホスト入出力制御部１１１は、ホスト１０１若しくはネットワークに対するインターフェース装置であって、例えば、ファイバチャネルプロトコルやｉＳＣＳＩによって、ホスト１０１等との間でデータや制御信号を送受信する。その際、ホスト入出力制御部１１１は、ストレージシステム１０２の外部にある装置との通信のためのプロトコルと、ストレージシステム１０２の内部にある装置との通信のためのプロトコルと相互に変換する。
【００３１】
データ転送制御部１１２は、例えばＬＳＩ（Large Scale Integration）であり、ＣＰＵ１１５、ホスト入出力制御部１１１、ディスク入出力制御部１１３及びキャッシュメモリ１１４の間でデータを転送する。データ転送制御部１１２は、転送されるデータに対して保証コードを付加してもよい。
【００３２】
ディスク入出力制御部１１３は、各ディスク群１０６を構成する各ディスク６０１に対するインターフェース装置であって、各ディスク６０１との間でデータや制御信号を送受信する。その際、ディスク入出力制御部１１３は、ストレージ制御部１０４の外部にある装置（ディスク６０１）のプロトコルと、ストレージ制御部１０４の内部にある装置のプロトコルと相互に変換する。
【００３３】
キャッシュメモリ１１４は、ホスト入出力制御部１１１とディスク入出力制御部１１３との間で送受信されるデータ（ホスト１０１からのライト要求に従ってディスク群１０６に書かれるデータ、或いは、ホスト１０１からのリード要求に従ってディスク群１０６から読み出されたデータ）を一時的に記憶する。データ転送制御部１１２が、ホスト１０１によって、ディスク群１０６に読み書きされるデータをホスト・ディスク入出力制御部１１１、１１３間で転送し、さらに、そのデータをキャッシュメモリ１１４に転送する。
【００３４】
すなわち、キャッシュメモリ１１４は、リードキャッシュとしての役割と、ライトキャッシュとしての役割の二つの役割がある。リードキャッシュの場合、すなわち、ディスク群１０６からリードされたデータがキャッシュメモリ１１４に格納される場合、再び同一のデータに対するリード要求が発生したならば、該リード要求に従うデータは、ディスク群１０６からではなくキャッシュメモリ１１４から読めば良い。また、ホスト１０１から将来的にリードされると予測されるデータを予めキャッシュメモリ１１４に読み込んでおく事により、実際に当該データのリードが発生した場合には、当該データをキャッシュメモリ１１４から読めば良い。リードキャッシュによれば、リード要求についての応答時間を短縮することができる。一方、ライトキャッシュの場合、すなわち、ホスト１０１からのデータをキャッシュメモリ１１４に格納する場合、そのデータをキャッシュメモリ１１４に格納した時点でライト完了（ホスト１０１からのライト要求に対する応答）をホスト１０１に報告することができる。これにより、ライト要求についての応答時間を短縮することができる。また、ホスト１０１からのライト要求とは非同期に、複数のライトデータをまとめた状態からディスク群１０６への書込みを行うことによって、性能向上が可能となる。
【００３５】
なお、ホスト１０１からのＩ／Ｏ要求に従うアクセス先は、複数のディスク群１０６のうちのいずれのかのディスク群１０６となるが、その理由は、以下の通りである。すなわち、本実施形態では、ディスク群１０６は、例えば、複数のディスクで構成されたＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループであり、ＲＡＩＤグループの記憶空間を基に一又は複数のＬＵ（Logical Unit）が形成される。Ｉ／Ｏ要求の解析により、アクセス先となるＬＵが特定され、該ＬＵに対してアクセスが行われる。このため、ホスト１０１からのＩ／Ｏ要求に従うアクセス先は、複数のディスク群１０６のうちのいずれのかのディスク群１０６となる（具体的には、例えば、ディスク群１０６のうちの、アクセス先となるＬＵに関わるディスクとなる）。本実施形態の説明で言う「ディスク」とは、ディスク型の記憶装置（例えば、ハードディスクドライブ、ＤＶＤドライブなど）の略である。ディスクに代えて、他種の記憶装置、例えば、フラッシュメモリが採用されても良い。
【００３６】
メモリ１１７には、各種コンピュータプログラム及び各種情報が記憶されており、ＣＰＵ１１５が各種コンピュータプログラムを呼び出して実行することによって各種処理が行われる。以下、ＣＰＵ１１５がコンピュータプログラムを読み込んで実行することにより行われる処理の主体を、説明を分かりやすくするために、ＣＰＵではなくコンピュータプログラムとする場合がある。
【００３７】
管理Ｉ／Ｆ１１８は、ストレージシステム１０２に対して発行される、構成変更や構成取得等の管理コマンドの受領に使用される。図１では、管理Ｉ／Ｆ１１８とホスト入出力インターフェース（制御部）１１１は別々のデバイスとなっているが、同一であってもよい。
【００３８】
また、管理ホスト１０３とホスト１０１とが一体となっていてもよい（つまり一つの計算機で構成されても良い）。さらに、図１では、ホスト１０１、ストレージシステム１０２及び管理ホスト１０３の各々は複数台存在しても良い。また、ストレージシステム１０２とホスト１０１及び／又は管理ホスト１０３は、ネットワーク（例えばＳＡＮ（Storage Area Network）或いはＬＡＮ（Local Area Network））を構築する構成であってもよい。
【００３９】
図２は、メモリ１１７に記憶される各種コンピュータプログラム及び情報を示す。
【００４０】
メモリ１１７に記憶されるコンピュータプログラムとして、例えば、オペレーティングシステム２０１、ディスクアレイ制御プログラム２０２、データ転送制御部制御プログラム２０３、入出力制御部制御プログラム２０４、性能情報測定プログラム２１１、性能情報解析プログラム２１２、制御方式変更プログラム２２１がある。また、メモリ１１７に記憶される情報として、例えば、性能情報テーブル３０１がある。
【００４１】
オペレーティングシステム２０１は、各コンピュータプログラム２０２、２０３、２０４、２１１、２１２及び２２１のスケジューリング等を行う。
【００４２】
ディスクアレイ制御プログラム２０２は、例えば、ホスト１０１からのＩ／Ｏ要求を解析し、アクセス先となるディスク群１０６を特定し、特定したディスク群１０６に対して、データ転送制御部制御プログラム２０３及び入出力制御部制御プログラム２０４を経由し、Ｉ／Ｏコマンドを発行する。また、ディスクアレイ制御プログラム２０２は、複数種類の制御方式の中から選択された制御方式に従って、ホスト１０１からのＩ／Ｏ要求を処理する。複数種類の制御方式としては、ＣＰＵの負荷を下げてディスク６０１の負荷を上げるＣＰＵ補助制御方式と、ＣＰＵの負荷を上げてディスク６０１の負荷を下げるディスク補助制御方式との２種類がある。ＣＰＵ補助制御方式が選択された場合、ディスクアレイ制御プログラム２０２は、ホスト１０１からのＩ／Ｏ要求に従う処理のために生成された、ディスク６０１に対する複数のＩ／Ｏコマンドを格別並び替えることなく送信する。具体的には、例えば、ディスクアレイ制御プログラム２０２は、Ｉ／Ｏコマンドを生成する都度に、該Ｉ／Ｏコマンドをディスク６０１に送信する。つまり、複数のＩ／Ｏコマンドが生成された順序でそれぞれ送信される。一方、ディスク補助制御方式が選択された場合、ディスク制御プログラム２０２は、ホスト１０１からのＩ／Ｏ要求に従う処理のために生成された、ディスク６０１に対する複数のＩ／Ｏコマンドのそれぞれの発行順序を、それら複数のＩ／Ｏコマンドのそれぞれのアクセス先アドレス（例えばＬＢＡ（論理ブロックアドレス）或いはＣＨＳ（ヘッド、シリンダ、セクタ））に基づいて並び替え、並び替えた順序で、それら複数のＩ／Ｏコマンドをそれぞれ送信する。
【００４３】
データ転送制御部制御プログラム２０３は、データ転送制御部１１２のドライバであり、各制御部１１１、１１３間のデータ転送を制御する。
【００４４】
入出力制御部制御プログラム２０４は、ホスト入出力制御部１１１及びディスク入出力制御部１１３のドライバであり、各制御部１１１、１１３の動作を制御する。
【００４５】
性能情報測定プログラム２１１は、ストレージシステム１０２内に存在する所定の各リソースの性能情報を測定し、測定した性能情報を性能情報テーブル３０１に記録する。
【００４６】
性能情報解析プログラム２１２は、メモリ１１７上の性能情報テーブル３０１を解析し、性能ボトルネックとなっているリソースの特定等を行う。
【００４７】
制御方式変更プログラム２２１は、ディスクアレイ制御プログラム２０２の挙動を変更する。具体的には、例えば、制御方式変更プログラム２２１は、前述した複数種類の制御方式の中から、ディスクアレイ制御プログラム２０２に実行させる制御方式を選択する。
【００４８】
性能情報テーブル３０１に記録される性能情報は、ストレージシステム１０２内の各リソースについて、どの程度の性能が出ていてどの程度の負荷がかかっているかに関する情報である。
【００４９】
図３は、性能情報テーブル３０１の構造の一例を示した図である。
【００５０】
性能情報テーブル３０１には、一以上の時点でそれぞれ測定された、各リソースの性能情報が記録される。図示の性能情報テーブル３０１は、一以上の時点における或る時点で記録された性能情報を示す。なお、リソースについて、ディスク１（１）、ディスク２（１）、…、のカッコ内の番号は、ディスク群１０６の識別番号を表し、カッコ外の番号は、ディスク６０１の識別番号を表す。つまり、この性能情報テーブル３０１から、どのディスク６０１がどのディスク群１０６に属するディスクであるかがわかる。
【００５１】
所定の各リソースについて、性能情報が測定されるが、測定される性能情報として、性能と使用率とのセットがある。
【００５２】
リソースの性能としては、例えば、単位時間当たりの処理量を採用することができる。一方、リソースの使用率としては、例えば、そのリソースが完全にそのリソースの性能を出し切った場合の処理量を１００％とした場合の処理量の割合とすることができる。もし、性能を出し切った処理量を定義するのが困難な種類のリソースがあれば、その種のリソースに関しては、使用率について、何らかの定義を行う必要がある。
【００５３】
具体的には、例えば、ホストＩ／Ｆ（ホスト入出力制御部）１１１、内部バス１１６及びディスクバス１０５の各々の使用率は、使用可能な最大限の帯域（最大帯域）を１００％とした場合、使用されている帯域（転送速度）がどれぐらいかであるかに相当する。また、ＣＰＵの使用率に関しては、有益な処理を行っていない時間を測定し、全体時間に対する割合を求めた数値が、ＣＰＵのアイドル率となり、この値を１００％から減算した数値が、ＣＰＵの使用率となる。ディスクの使用率に関しては、１００％時の性能を規定する事が困難なため、使用率の算出方法を定義する必要がある。
【００５４】
図４は、ディスクの使用率を算出する方法の一例を示した図である。
【００５５】
この図は、時間経過に伴って、或るディスク（以下、便宜上“ディスクＡ”と呼ぶ）が受領している、未完了Ｉ／Ｏ数が変化する様子を示している。測定時間４０１は、ディスクＡの使用率を求めるために測定を実行した全体時間を表す。ディスク動作時間４０２は、測定時間４０１の間に、ディスクＡが受領したＩ／Ｏコマンドを処理するために動作していた時間である。Ｉ／Ｏ数４０３は、或る時点においてディスクＡが受領している未完了Ｉ／Ｏコマンドの数を示しており、これはストレージ制御部１０４からのＩ／Ｏコマンド発行によって増加し、ディスクＡによるＩ／Ｏコマンドの処理が完了することによって減少する。
【００５６】
図４で示す方法では、ディスクＡの使用率は、ディスク動作時間４０２を測定時間４０１で割った値となる。一般的に、ディスクＡのレスポンス時間を隠蔽し高性能を実現するために、ストレージ制御部１０４は、ディスクＡに発行したＩ／Ｏコマンドの終了（ディスクＡからの、完了という応答）を待たずに、複数のＩ／Ｏコマンドを発行する。このため、ディスクＡは、未完了のＩ／Ｏコマンドを複数個受領した状態となる。図４で示す方法によれば、これらの複数のＩ／Ｏコマンドを処理しているという状態は考慮されず、未完了のＩ／Ｏコマンドを１以上受領している状態が、ディスクＡが動作していると判断される。
【００５７】
図５は、本実施形態における性能情報解析処理を示したフローチャートである。
【００５８】
まず、性能情報解析処理が開始される（ステップ５０１）。この性能情報解析処理は、ホスト１０１から発行されたＩ／Ｏ要求の受信の有無とは無関係に動作可能なため、タイマなどによって起動されてよい。
【００５９】
次に、性能情報測定プログラム２１１が、性能情報を測定する必要があるかどうかを判断する（ステップ５０２）。具体的には、例えば、現在のストレージシステム１０２が、性能情報を取得する第一のモードであるか、或いは、性能情報に基づく制御方式変更を行う第二のモードであるかが判断される。性能情報の取得自体にオーバヘッドが生じるため、上記のようなモードによる判断が実行される。それに代えて、例えば、最近作成された性能情報テーブル３０１に記録されている、所定種類のリソースの使用率が所定値を超えている場合には、より負荷が高くなってしまうことを防ぐべく、性能情報を取得しないと判断しても良い。
【００６０】
ステップ５０２にて、性能情報を測定する必要がないと判断された場合は（例えば、第二のモードであると判断された場合は）、ステップ５２１へ進み、処理が終了する。一方、ステップ５０２にて、性能情報を測定する必要があると判断された場合は（例えば、第一のモードであると判断された場合）、ステップ５０３へ進む。
【００６１】
ステップ５０３にて、性能情報測定プログラム２１１が、各リソースの性能情報を測定し、測定した性能情報を性能情報テーブル３０１に記録する。具体的には、例えば、性能情報測定プログラム２１１は、各リソース毎に、性能を測定し、測定した性能を用いて、該当するリソースに適した方法で使用率を算出し、測定した性能と算出された使用率とのセットを、性能情報テーブル３０１に記録する。すなわち、実際に測定されるのは性能であるが、測定された性能を用いて使用率が算出されるので、実質的には、性能と使用率の両方、つまり性能情報が測定されることになる。また、性能情報を記録しているのは、ステップ５０３の実行時点の極めて短時間の一時的な性能状況のみで全体の状況を判断してしまう事が無いように、ある程度の期間の性能状況を保存しておくためである。また、ディスク使用率を算出するためには、各ディスク毎に、未完了Ｉ／Ｏコマンド数などを把握する必要があるが、それを実現するための方法として、例えば、性能情報測定プログラム２１１が、ディスクアレイ制御プログラム２０２の動作を監視し、監視の結果に関する情報（例えば、どのディスクについてどの時点で未完了Ｉ／Ｏコマンド数が幾つであるか）をメモリ１１７に記録する方法を採用することができる。
【００６２】
次に、性能情報解析プログラム２１２が、性能ネック状況を判断する（ステップ５０４）。具体的には、例えば、性能情報解析プログラム２１２は、前述のステップ５０３において記録した最新の性能情報セット（各リソースの性能情報）と、過去の一以上の性能情報セットとから、性能ボトルネックとなっているリソースの有無や、性能ボトルネックとなっていないリソースの有無（そのようなリソースがあればどの程度の余裕があるか）を判断する。より具体的には、例えば、複数のリソースにそれぞれ対応した複数の第一の使用率閾値及び複数の第二の使用率閾値が用意されている。どのリソースについても、第一の使用率閾値より第二の使用率閾値が小さい。性能情報解析プログラム２１２により、各リソースについて、そのリソースの使用率（例えば最近の使用率）と、そのリソースに対応する第一の使用率閾値とが比較され、且つ、そのリソースの使用率と、そのリソースに対応する第二の使用率閾値とが比較され、各比較の結果を表す情報（以下、性能ネック判断結果情報）が、メモリ１１７に記録される。性能ネック判断結果情報には、例えば、各リソース毎に、使用率が第一の使用率閾値を上回っているか否か、使用率が第二の使用率閾値を下回っているか否か、使用率と第一の使用率閾値との差分、及び、使用率と第二の使用率閾値との差分が含まれる。性能ボトルネックとなっているリソースは、例えば、使用率が第一の使用率閾値を超えているリソースである。性能ボトルネックとなっていないリソースは、第一の使用率閾値及び第二の使用率閾値の一方を下回っているリソースである。性能ボトルネックとなっていないリソースにどの程度の余裕があるかは、使用率と第一の使用率閾値及び／又は第二の使用率閾値との差分である。
【００６３】
次に、制御方式変更プログラム２２１が、制御方式を変更するどうかを判定する（ステップ５１１）。具体的には、例えば、図８に示すように、制御方式変更プログラム２２１は、制御方式の変更に効果があるかどうかを判断し（ステップ８０１）、あると判断した場合に（ステップ８０１でＹｅｓ）、制御方式の変更の必要があるかどうかを判断し（ステップ８０２）、あると判断した場合に（ステップ８０２でＹｅｓ）、制御方式を変更する、との判断になる。逆に、ステップ８０１及びステップ８０２のうちの少なくとも一つでＮｏの場合には、制御方式を変更しない、との判断になる。
【００６４】
ステップ８０１では、例えば、制御方式変更プログラム２２１は、性能ネック判断結果情報を参照し、ＣＰＵ１１５と各ディスク以外の種類のリソースであって、Ｉ／Ｏ要求の受信や処理に関わるリソース（以下、特定リソース）についての性能ボトルネック状況をチェックする。特定リソースとしては、例えば、ホスト入出力制御部１１１（ホストＩ／Ｆ）、内部バス１１６及びディスクバス１１３のうちの少なくとも一つである。これら一以上の特定リソースのうちの少なくとも一つ（例えば、全ての特定リソース）が、使用率が第一の使用率閾値を超えているリソースであれば、制御方式を変更しても効果が無い、との判断になる。なぜなら、特定リソースの使用率が第一の使用率閾値を超えているということは、制御方式の変更が行われても、特定リソースが性能ボトルネックとなってシステム性能が向上しない可能性が高いためである。
【００６５】
ステップ８０２では、例えば、制御方式変更プログラム２２１は、以下の処理を行うことができる。すなわち、制御変更方式変更プログラム２２１は、性能ネック判断結果情報を参照し、ＣＰＵと複数のディスクの各々について、使用率が第一の使用率閾値を超えているか否か、使用率が第二の使用率閾値を下回っているか否かを判断する。そして、例えば、現在のケースが、ＣＰＵの使用率が第一のＣＰＵ使用率閾値（ＣＰＵに対応した第一の使用率閾値）を上回っていて、一以上のディスクの使用率が第二のディスク使用率閾値（ディスクに対応した第二の使用率閾値）を下回っていて、ＣＰＵ補助制御方式が選択されていないケース（以下、ＣＰＵ非補助ケース）であれば、制御方式を変更する必要がある、と判断されてよい。また、例えば、現在のケースが、ＣＰＵの使用率が第二のＣＰＵ使用率閾値を下回っていて、一以上のディスクの使用率が第一のディスク使用率閾値を上回っていて、ディスク補助制御方式が選択されていないケース（以下、ディスク非補助ケース）であれば、制御方式を変更する必要がある、と判断されてよい。
【００６６】
ここで、「一以上のディスク」とは、ディスク一つだけが対象となっても良いし、複数のディスクが対象となっても良いことを意味する。ディスクの数は所定個数とすることができる。複数のディスクは、例えば、所定個数のディスク群１０６を構成する全てのディスクであっても良い。
【００６７】
また、ＣＰＵ非補助ケース及びディスク非補助ケースの少なくとも一方のケースにおいて、更に、制御方式変更プログラム２２１により、制御方式を変更することでシステム性能が向上するか否かが判断され、向上するとの判断になった場合に、制御方式を変更する必要がある、と判断されてよい。例えば、ＣＰＵ補助制御方式やディスク補助制御方式の各々について、ＣＰＵ使用率及びディスク使用率のそれぞれの目標値が定められており、変更後の制御方式における各目標値になるような制御が行なわれた場合にシステム性能が向上するか否かが、所定の方法で判断されても良い。例えば、ＣＰＵ使用率とディスク使用率との組み合わせが複数個あり、それら複数個の組み合わせにそれぞれ対応した複数のシステム性能期待値（期待されるシステム性能）が登録された情報（以下、システム性能関係情報）がメモリ１１７に記憶されていて、制御方式変更プログラム２２１は、変更後の制御方式でのＣＰＵ使用率及びディスク使用率のそれぞれの目標値に対応したシステム性能期待値をシステム性能関係情報から特定し、特定されたシステム性能期待値が、現在のシステム性能を上回っているか否かで、システム性能が向上するか否かを判断しても良い。これに代えて、他の方法で、システム性能が向上するか否かが判断されても良い。
【００６８】
具体例としては、例えば、制御方式変更プログラム２２１は、現状が、ＣＰＵ補助制御方式が採用されており、ＣＰＵ使用率が４０％（第二の使用率閾値未満）であり、ドライブ使用率が９０％（第一の使用率閾値を超えた値）という状況だった場合、制御方式をＣＰＵ補助制御方式からディスク補助制御方式に変更することにより（例えば、ディスク補助制御方式でのＣＰＵ使用率の目標値が７０％であるためにＣＰＵ使用率を３０％上げ、ディスク補助制御方式でのディスク使用率の目標値が７０％であるためにドライブ使用率を２０％下げることにより）、システム全体の性能を向上する事が可能であったような場合に（ＣＰＵ使用率７０％とディスク使用率７０％との組み合わせに対応したシステム性能期待値が現状のシステム性能を上回っている場合に）、制御方式を変更する必要がある、と判断する。
【００６９】
ステップ５１１において、制御方式を変更すると判断された場合は、ステップ５２１へ進み、処理が終了となる。一方、ステップ５１１において、制御方式を変更しないと判断された場合は、ステップ５１２に進む。
【００７０】
ステップ５１２では、制御方式変更プログラム２２１が、ディスクアレイ制御プログラム２０２が行う制御方式を変更する。これにより、その後、ディスクアレイ制御プログラム２０２は、変更後の制御方式に従う制御を実行する。
【００７１】
以上、上述した第一の実施形態によれば、ストレージシステム１０２が、複数の制御方式のうちの選択された制御方式に従う制御ができるように構成されていて、互いに使用率が関連し合う二種類のリソースであるＣＰＵ１１５とディスク６０１とについて、一方が性能ボトルネックとなっていて他方が使用率に余裕がある場合には、選択される制御方式が、一方の使用率の度合いを低くし他方の使用率の度合いを強くする制御方式に切り替えられる。これにより、リソースを増強することなく性能ボトルネックを緩和することが期待できる。
【００７２】
また、上述した第一の実施形態によれば、ディスク補助制御方式が選択された場合、ＣＰＵ１１５によって、ディスク６０１に発行されるＩ／Ｏコマンドの発行順序の並び替えが行われる。これは、ディスク６０１が、ディスク６０１内で蓄積できる未完了Ｉ／Ｏコマンドの数が１であるタイプのディスク、具体的には、例えば、ＳＡＴＡタイプのディスクである場合に有用であると考えられる。
【００７３】
＜第二の実施形態＞。
【００７４】
以下、本発明の第二の実施形態について説明する。その際、第一の実施形態との相違点を主に説明し、第一の実施形態との共通点については説明を省略或いは簡略する（これは、後の第三の実施形態以降についても同様である）。
【００７５】
この第二の実施形態では、ディスクの使用率を求める方法が第一の実施形態と異なる。
【００７６】
図６は、本発明の第二の実施形態におけるディスク使用率算出方法の例を示した図である。
【００７７】
性能情報測定プログラム２１１が、ディスク６０１に対して或るコマンド１を発行した時刻であるコマンド１発行時刻６１１と、ディスク６０１からのコマンド１の完了報告を受領した時刻であるコマンド１完了時刻６１２をメモリ１１７に記録し、コマンド１完了時刻６１２からコマンド１発行時刻６１１を減算したものをコマンド１応答時間６１３としてメモリ１１７に記録する。コマンド２、コマンド３についても同様にして、各コマンドの応答時間が記録される。本実施形態においては、これらのコマンド応答時間によって、ディスク使用率の多少が判断される。ディスク使用率として、厳密に数値を定義するためには、１００％という状態を定義する必要があるが、この方法では、ディスクの故障及びＩ／Ｏコマンド多重での動作を考慮すると、最大時間が定義困難であるため、応答時間の合計の多少もしくは、平均応答時間の多少によって、ディスク使用率の大小を判断する。上述の通り、この方法により求まるディスク使用率は、或る状態を１００％と定義した場合の使用率ではないため、基準は状況によって異なるが、例えば、平均応答時間が５０ｍｓ（ミリ秒）となっていた場合は高負荷と判断するなどとする。すなわち、本実施形態では、ディスク使用率を厳密に値として算出するのではなく、ディスク使用率の大小が判断され、その判断は、応答時間合計或いは平均応答時間が所定の閾値を上回っているか下回っているかにより、行われる。
【００７８】
＜第三の実施形態＞。
【００７９】
この第三の実施形態では、ディスクの使用率を求める方法が第一の実施形態と異なる。
【００８０】
図７は、本発明の第三の実施形態におけるディスク使用率算出方法の例を示した図である。
【００８１】
性能情報測定プログラム２１１が、測定時間７０１の間に、或るディスク６０１に対して発行され、未完了のＩ／Ｏコマンド数７０２を単位時間７０３毎にメモリ１１７に記録する。性能情報測定プログラム２１１が、この未完了Ｉ／Ｏコマンド数７０２の最大数に対する、未完了Ｉ／Ｏコマンド数７０２の合計値を、ディスク使用率として算出する。図７では、未完了Ｉ／Ｏコマンド数７０２の合計値は、４０となる。この数値の最大数は、ディスク６０１が一度に受領可能なＩ／Ｏコマンド数×測定時間７０１÷単位時間７０３であり、この状態を１００％の使用率とみなす。例えば、同時に受領可能なコマンド数が１０だった場合、図７における最大数は２００となり、ディスク使用率は４０÷２００＝２０％となる。ただし、一般的なディスクは、Ｉ／Ｏ数が数個という状態であっても、十分に高負荷な状態となり、それ以上のスループットを出す事が困難になる事が多い。よって、上記の定義によるディスク使用率を使用する第三の実施形態においては、高負荷と判断するディスク使用率の基準を低くして制御方式の変更有無の判断することができる。
【００８２】
＜第四の実施形態＞。
【００８３】
この第四の実施形態では、ディスク使用率算出方法が選択的に採用される。
【００８４】
図９は、算出方法制御テーブルの構成例を示す。
【００８５】
算出方法制御テーブル９５１が、メモリ１１７に記録される。或いは、ディスクアレイ制御プログラム２０２に組み込まれていても良い。第一のディスク使用率算出方法は、図４を参照して説明した方法である。第二のディスク使用率算出方法は、図６を参照して説明した方法である。第三のディスク使用率算出方法は、図７を参照して説明した方法である。
【００８６】
このテーブル９５１によれば、ＣＰＵ使用率が“大”の場合に、第一のディスク使用率算出方法によりディスク使用率が算出され、ＣＰＵ使用率が“中”の場合に、第二のディスク使用率算出方法によりディスク使用率が算出され、ＣＰＵ使用率が“小”の場合に、第三のディスク使用率算出方法が算出される。具体的には、例えば、性能情報測定プログラム２１１が、定期的に又は不定期的に、性能情報テーブル３０１に記録されているＣＰＵ使用率（例えば最近のＣＰＵ使用率）をチェックし（或いは自分で測定し）、ＣＰＵ使用率がＣＰＵ使用率“大”の範疇にあれば、第一のディスク使用率算出方法を選択し、ＣＰＵ使用率がＣＰＵ使用率“中”の範疇にあれば、第二のディスク使用率算出方法を選択し、ＣＰＵ使用率がＣＰＵ使用率“小”の範疇にあれば、第三のディスク使用率算出方法を選択し、以後、例えばステップ５０３のときには、選択されたディスク使用率算出方法でディスク使用率を算出するようにする。
【００８７】
上述した第一〜第三のディスク使用率算出方法において、ＣＰＵにかかる負荷は、第一のディスク使用率算出方法が最も低く、第三のディスク使用率算出方法が最も高いと考えられる。一方、算出されるディスク使用率の正確性という点では、第三のディスク使用率算出方法が最も高いと考えられる。この第四の実施形態によれば、ＣＰＵ使用率が低い場合には、最も正確にディスク使用率が算出されるであろう第三のディスク使用率算出方法によりディスク使用率が算出され、何らかの原因によりＣＰＵ使用率が上昇し、第三のディスク使用率算出方法を実行するとＣＰＵが性能ボトルネックとなってしまうような場合には、第三のディスク使用率算出方法よりもＣＰＵにかかる負荷の低い他のディスク使用率算出方法が選択されて実行される。また、ＣＰＵ使用率が高い場合には、第一のディスク使用率算出方法が選択されて実行される。
【００８８】
以上、本発明の好適な幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、第四の実施形態では、少なくとも二つのディスク使用率算出方法の中から一つのディスク使用率算出方法がＣＰＵ使用率を基に決定されて良い。また、リソースの負荷を表す指標として、使用率に代えて他種の指標が採用されても良い。また、制御方式の切替は、現在時刻がどんな時間帯に属するかに応じて行われても良い。例えば、制御方式変更プログラム２２１は、現在時刻が、単位時間当たりに受信するＩ／Ｏ要求の数が多い時間帯（例えば、ストレージシステム１０２がトランザクション処理に利用される時間帯）（例えば午前９時〜午後９時）であれば、ＣＰＵ補助制御方式を選択し、現在時刻が、その時間帯よりも単位時間当たりに受信するＩ／Ｏ要求の数が少ない時間帯（例えば、ストレージシステム１０２がバックアップ処理に利用される時間帯）（例えば午後９時〜午前９時）であれば、ディスク補助制御方式を選択しても良い。
【図面の簡単な説明】
【００８９】
【図１】図１は、本発明の第一の実施形態に係る計算機システムの構成の一例と、その計算機システムに備えられるストレージシステムの内部構成の一例とを示した図である。
【図２】図２は、ストレージシステムのメモリに記憶される各種コンピュータプログラム及び情報を示す。
【図３】図３は、性能情報テーブルの構造の一例を示した図である。
【図４】図４は、第一のディスク使用率算出方法の説明図である。
【図５】図５は、性能情報解析処理を示したフローチャートである。
【図６】図６は、本発明の第二の実施形態における第二のディスク使用率算出方法の説明図である。
【図７】図７は、本発明の第三の実施形態における第三のディスク使用率算出方法の説明図である。
【図８】図８は、図５のステップ５１１の詳細の一例を示す。
【図９】図９は、本発明の第四の実施形態において用意される算出方法制御テーブルの構成例を示す。
【符号の説明】
【００９０】
１０１…ホスト、１０４…ストレージ制御部、３０１…性能情報テーブル、２２１…制御方式変更プログラム
【図１】
2008186108.tif 000003
【図２】
2008186108.tif 000004
【図３】
2008186108.tif 000005
【図４】
2008186108.tif 000006
【図５】
2008186108.tif 000007
【図６】
2008186108.tif 000008
【図７】
2008186108.tif 000009
【図８】
2008186108.tif 000010
【図９】
2008186108.tif 000011