(57)【要約】【課題】高速な記憶装置から低速な記憶装置へ移動させるデータの選択基準を適正化するための処理負荷を軽減する。【解決手段】制御部１ｂは、高負荷状態から低負荷状態に遷移した複数の第２の領域のうち、低負荷状態に遷移してから設定時間Ｔ１が経過したときに低負荷状態が継続している領域のデータを、高速な記憶装置３ａから低速な記憶装置３ｂへ移動させる。また、制御部１ｂは、第２の領域それぞれについて、低負荷状態に遷移してから設定時間Ｔ２（＞Ｔ１）が経過するまでのアクセス負荷状況を監視し、その監視結果に基づいて設定時間Ｔ１を更新する。さらに、制御部１ｂは、一定期間において低負荷状態に遷移した第２の領域のうち、データが記憶装置３ｂに移動した領域についてのデータ移動時間の平均値に基づいて、設定時間Ｔ２を更新する。【選択図】図１
2018156423.tif 000002
【特許請求の範囲】
【請求項１】
第１の設定時間と、前記第１の設定時間より長い第２の設定時間とを記憶する記憶部と、制御部とを有し、
前記制御部は、
論理記憶領域に含まれ、データが第１の記憶装置に記憶された複数の第１の領域の中から、アクセス負荷が高い高負荷状態からアクセス負荷が低い低負荷状態に遷移した複数の第２の領域を特定し、
前記複数の第２の領域のうち、前記低負荷状態に遷移してから前記第１の設定時間が経過したときに前記低負荷状態が継続している領域のデータを、前記第１の記憶装置から前記第１の記憶装置よりアクセス速度が低い第２の記憶装置に移動させ、
前記複数の第２の領域のそれぞれについて、前記低負荷状態に遷移してから前記第２の設定時間が経過するまでアクセス負荷状況を監視し、
前記アクセス負荷状況の監視結果に基づいて、前記第１の設定時間を更新し、
第１の期間において前記低負荷状態に遷移した前記第２の領域のうち、データが前記第２の記憶装置に移動した領域についてのデータ移動時間を平均した平均移動時間に基づいて、前記第２の設定時間を更新する、
情報処理装置。
【請求項２】
前記第２の設定時間の更新では、前記平均移動時間と１より大きい所定値とを乗算した乗算値によって、前記第２の設定時間を更新する、
請求項１記載の情報処理装置。
【請求項３】
前記第２の設定時間の更新では、前記複数の第２の領域の中から、前記第１の期間において前記低負荷状態から再度前記高負荷状態に遷移した１以上の第３の領域を特定し、前記１以上の第３の領域それぞれについての、前記低負荷状態に遷移してから前記高負荷状態に遷移するまでの時間を平均した平均遷移時間を算出し、前記平均遷移時間と前記乗算値のうち小さい方の値によって、前記第２の設定時間を更新する、
請求項２記載の情報処理装置。
【請求項４】
前記アクセス負荷状況の監視では、前記複数の第２の領域のうち、前記低負荷状態に遷移してから前記第２の設定時間が経過する前に再度前記高負荷状態に遷移した領域について、前記低負荷状態に遷移してから前記高負荷状態に遷移するまでの経過時間を管理情報に記録し、
前記第１の設定時間の更新では、第２の期間に前記管理情報に記録された前記経過時間に基づいて、前記第１の設定時間を更新する、
請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記第１の設定時間の更新では、前記第２の期間に前記管理情報に記録された前記経過時間の合計値を、前記複数の第２の領域のうち前記第２の期間に前記低負荷状態に遷移した領域の数によって除算し、その除算結果によって前記第１の設定時間を更新する、
請求項４記載の情報処理装置。
【請求項６】
前記管理情報への前記経過時間の記録では、前記複数の第２の領域の中から、前記第１の時間が経過した後前記第２の時間が経過する前までに再度前記高負荷状態に遷移した第４の領域と、前記第１の時間が経過するまでに再度前記高負荷状態に遷移した第５の領域とを特定し、前記第４の領域それぞれについての前記低負荷状態に遷移してから前記高負荷状態に遷移するまでの第１の経過時間と、前記第５の領域それぞれについての前記低負荷状態に遷移してから前記高負荷状態に遷移するまでの第２の経過時間とを、前記管理情報に記録し、
前記第１の設定時間の更新では、前記第２の期間に記録された前記第１の経過時間のうちの第１の最大値と、前記第２の期間に記録された前記第２の経過時間のうちの第２の最大値とを特定し、前記第１の最大値と前記第２の最大値のうち大きい方の値によって前記第１の設定時間を更新する、
請求項４記載の情報処理装置。
【請求項７】
コンピュータが、
論理記憶領域に含まれ、データが第１の記憶装置に記憶された複数の第１の領域の中から、アクセス負荷が高い高負荷状態からアクセス負荷が低い低負荷状態に遷移した複数の第２の領域を特定し、
前記複数の第２の領域のうち、前記低負荷状態に遷移してから第１の設定時間が経過したときに前記低負荷状態が継続している領域のデータを、前記第１の記憶装置から、前記第１の記憶装置よりアクセス速度が低い第２の記憶装置に移動させ、
前記複数の第２の領域のそれぞれについて、前記低負荷状態に遷移してから前記第１の設定時間より長い第２の設定時間が経過するまでアクセス負荷状況を監視し、
前記アクセス負荷状況の監視結果に基づいて、前記第１の設定時間を更新し、
第１の期間において前記低負荷状態に遷移した前記第２の領域のうち、データが前記第２の記憶装置に移動した領域についてのデータ移動時間を平均した移動時間平均値に基づいて、前記第２の設定時間を更新する、
ストレージ制御方法。
【請求項８】
コンピュータに、
論理記憶領域に含まれ、データが第１の記憶装置に記憶された複数の第１の領域の中から、アクセス負荷が高い高負荷状態からアクセス負荷が低い低負荷状態に遷移した複数の第２の領域を特定し、
前記複数の第２の領域のうち、前記低負荷状態に遷移してから第１の設定時間が経過したときに前記低負荷状態が継続している領域のデータを、前記第１の記憶装置から、前記第１の記憶装置よりアクセス速度が低い第２の記憶装置に移動させ、
前記複数の第２の領域のそれぞれについて、前記低負荷状態に遷移してから前記第１の設定時間より長い第２の設定時間が経過するまでアクセス負荷状況を監視し、
前記アクセス負荷状況の監視結果に基づいて、前記第１の設定時間を更新し、
第１の期間において前記低負荷状態に遷移した前記第２の領域のうち、データが前記第２の記憶装置に移動した領域についてのデータ移動時間を平均した移動時間平均値に基づいて、前記第２の設定時間を更新する、
処理を実行させるストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ストレージ制御方法およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
記憶装置については、一般的に、アクセス性能が高いほど容量当たりのコストが高い。そのため、要求されるアクセス性能や容量、コストの上限のバランスを考慮して、記憶装置の種別や機種が選択される。このような観点から、アクセス性能の異なる複数の記憶装置を有効利用することが考えられている。例えば、ストレージシステム内の記憶装置をアクセス性能に応じて階層化し、階層間でデータを移動するストレージ階層化技術が知られている。
【０００３】
ストレージ階層化技術を用いたシステムの例として、次のような階層ストレージ制御装置が提案されている。この階層ストレージ制御装置は、ボリュームの領域からアクセスが高負荷の領域を検出し、高負荷領域のデータを低速な記憶装置から高速な記憶装置へ移動させる。また、階層ストレージ制御装置は、高負荷と判定された領域において、一定時間高負荷でない状態が続くと高負荷が消滅したとみなし、その領域のデータを高速な記憶装置から低速な記憶装置へ移動させる。
【０００４】
また、例えば、次のような階層型ストレージも提案されている。この階層型ストレージは、あらかじめ特定のプロセスを実行するユーザＩＤを登録しておき、そのユーザＩＤからあるファイルにリコール操作があった後、このユーザＩＤからそのファイルへのアクセスが一定時間なかった場合に、そのファイルをマイグレートする。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１９１５０３号公報
【特許文献２】特開２０１６−７１６０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上記の階層ストレージ制御装置は、高負荷と判定された領域において、一定の判定時間だけ高負荷でない状態が続いた場合に、その領域のデータを低速な記憶装置へ移動させる。ここで、判定時間は固定的に設定されているが、例えば、アクセス負荷の状況に応じて判定時間を動的に変更することで、移動させるべきデータを適切に選択し、高速な記憶領域を有効に利用できると考えられる。
【０００７】
この場合、高負荷と判定された領域が高負荷でない状態に遷移してから、どれだけの期間アクセス負荷の状況を監視するかという点に課題がある。例えば、監視時間が長いほど、アクセス負荷の状況を正確に把握でき、上記の判定時間を適正化できる。その反面、監視処理の負荷が高くなり、この負荷がボリュームに対するアクセス性能に悪影響を与える可能性がある。
【０００８】
１つの側面では、本発明は、高速な記憶装置から低速な記憶装置へ移動させるデータの選択基準を適正化するための処理負荷を軽減した情報処理装置、ストレージ制御方法およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、記憶部と制御部を有する情報処理装置が提供される。記憶部は、第１の設定時間と、第１の設定時間より長い第２の設定時間とを記憶する。制御部は、論理記憶領域に含まれ、データが第１の記憶装置に記憶された複数の第１の領域の中から、アクセス負荷が高い高負荷状態からアクセス負荷が低い低負荷状態に遷移した複数の第２の領域を特定し、複数の第２の領域のうち、低負荷状態に遷移してから第１の設定時間が経過したときに低負荷状態が継続している領域のデータを、第１の記憶装置から第１の記憶装置よりアクセス速度が低い第２の記憶装置に移動させ、複数の第２の領域のそれぞれについて、低負荷状態に遷移してから第２の設定時間が経過するまでアクセス負荷状況を監視し、アクセス負荷状況の監視結果に基づいて、第１の設定時間を更新し、第１の期間において低負荷状態に遷移した第２の領域のうち、データが第２の記憶装置に移動した領域についてのデータ移動時間を平均した平均移動時間に基づいて、第２の設定時間を更新する。
【００１０】
また、１つの案では、上記の情報処理装置と同様の処理をコンピュータが実行するストレージ制御方法が提供される。
さらに、１つの案では、上記の情報処理装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
【発明の効果】
【００１１】
１つの側面では、高速な記憶装置から低速な記憶装置へ移動させるデータの選択基準を適正化するための処理負荷を軽減できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係る情報処理装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係る情報処理装置のハードウェア構成例を示す図である。
【図３】情報処理装置が有する処理機能の構成例を示すブロック図である。
【図４】階層テーブルのデータ構成例を示す図である。
【図５】ワークロード分析部の内部構成を示す図である。
【図６】不揮発ＤＩＭＭへのデータ移動処理について説明するための図である。
【図７】サブＬＵＮ群でのＩＯ発生パターンの例を示す図である。
【図８】第１管理テーブルのデータ構成例を示す図である。
【図９】第２管理テーブルのデータ構成例を示す図である。
【図１０】データ移動制御手順の例を示すフローチャートである。
【図１１】不揮発ＤＩＭＭへのデータ移動制御手順の例を示すフローチャートである。
【図１２】ＳＳＤへのデータ移動制御手順の例を示すフローチャートである。
【図１３】データがＳＳＤに移動したサブＬＵＮ群の監視処理手順の例を示すフローチャートである。
【図１４】Ｔａ更新処理手順の第１の例を示すフローチャートである。
【図１５】Ｔａ更新処理手順の第２の例を示すフローチャートである。
【図１６】Ｔｍａｘ更新処理手順の例を示すフローチャートである。
【図１７】データ移動制御部の処理手順の例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理装置の構成例および処理例を示す図である。情報処理装置１は、記憶部１ａと制御部１ｂを有する。
【００１４】
記憶部１ａは、情報処理装置１が備える記憶装置（図示せず）の記憶領域として実現される。記憶部１ａには、設定時間Ｔ１，Ｔ２が記憶される。ここで、設定時間Ｔ２は、設定時間Ｔ１より大きい値であるものとする。
【００１５】
制御部１ｂは、例えば、プロセッサ（図示せず）として実現される。制御部１ｂは、論理記憶領域２におけるアクセス負荷の状況に基づいて、論理記憶領域２に含まれるデータを記憶装置３ａ，３ｂのいずれかに配置する機能を備える。換言すると、制御部１ｂの制御により、論理記憶領域２に対応する物理領域として、記憶装置３ａ，３ｂのいずれかの記憶領域が割り当てられる。
【００１６】
ここで、記憶装置３ａのアクセス速度は、記憶装置３ｂより高速であるものとする。制御部１ｂは、基本的に、論理記憶領域２のデータのうち、アクセス負荷の高いデータを記憶装置３ａに配置し、アクセス負荷の低いデータを記憶装置３ｂに配置する。なお、記憶装置３ａは、情報処理装置１の内部に設けられていてもよいし、外部に設けられていてもよい。同様に、記憶装置３ｂは、情報処理装置１の内部に設けられていてもよいし、外部に設けられていてもよい。
【００１７】
以下、論理記憶領域２に含まれる領域Ｒ１〜Ｒ３（第１の領域）が、アクセス負荷が高い高負荷状態になり、領域Ｒ１〜Ｒ３に対応するデータが記憶装置３ａに移動されたものとする。
【００１８】
制御部１ｂは、領域Ｒ１〜Ｒ３の中から、アクセス負荷が低い低負荷状態に遷移した領域Ｒ２，Ｒ３（第２の領域）を特定する（ステップＳ１）。そして、制御部１ｂは、領域Ｒ２，Ｒ３のうち、低負荷状態に遷移してから設定時間Ｔ１が経過したときに低負荷状態が継続している領域のデータを、記憶装置３ａから記憶装置３ｂに移動させる（ステップＳ２）。
【００１９】
論理記憶領域２上のある領域が高負荷状態から低負荷状態に遷移した場合、その後に比較的短時間で再び高負荷状態に遷移する場合がある。このような事象の発生に備えて、ステップＳ２の処理では、その領域が低負荷状態に遷移しても、データはすぐに記憶装置３ｂに移動されずに、設定時間Ｔ１が経過するまでの一定時間、記憶装置３ａに保持される。これにより、記憶装置３ａ，３ｂの間での無駄なデータ移動が行われにくくなる。
【００２０】
例えば、図１に示すタイムチャート４は、高負荷状態に遷移して、対応するデータが記憶装置３ａに移動したある領域についての、その後のアクセス負荷状況の例を示す。このタイムチャート４において、低負荷状態に遷移した時刻ｔ１から、設定時間Ｔ１が経過する時刻ｔ２までの間に再び高負荷状態に遷移した場合には、データ移動が行われることなく、記憶装置３ａに対してアクセスが行われる。
【００２１】
また、制御部１ｂは、領域Ｒ２，Ｒ３のそれぞれについて、低負荷状態に遷移してから設定時間Ｔ２が経過するまでアクセス負荷状況を監視する（ステップＳ３）。この監視によれば、制御部１ｂは、例えば、設定時間Ｔ２が経過した時点を限度として、監視対象の領域が再び高負荷状態に遷移して、その領域のデータを記憶装置３ａへ移動させる必要が生じるまでの時間を検出することができる。例えば、タイムチャート４において、制御部１ｂは、設定時間Ｔ２が経過した時刻ｔ４までの間（例えば時刻ｔ３）に、監視対象の領域が再び高負荷状態に遷移した場合には、時刻ｔ１から時刻ｔ３までの時間を検出できる。
【００２２】
制御部１ｂは、以上のステップＳ１〜Ｓ３の処理を、記憶装置３ａに対して高負荷状態と判定された領域のデータが移動されるのに伴って、継続的に実行する。そして、制御部１ｂは、ある期間におけるステップＳ３によるアクセス負荷状況の監視結果に基づいて、設定時間Ｔ１を更新する（ステップＳ４）。これにより、アクセス負荷状況に応じて、設定時間Ｔ１を適正化することができる。設定時間Ｔ１の適正化により、記憶装置３ａから記憶装置３ｂへ移動するべきデータを、無駄なデータ移動ができるだけ実行されないように適切に選択することができる。
【００２３】
また、制御部１ｂは、ある期間において、対応するデータが記憶装置３ａに移動した後に低負荷状態に遷移した領域のうち、その後にデータが記憶装置３ｂに移動した領域についてのデータ移動にかかった時間の平均値（平均移動時間）を計算する。そして、制御部１ｂは、算出された平均移動時間に基づいて、設定時間Ｔ２を更新する（ステップＳ５）。
【００２４】
ここで、設定時間Ｔ２が長いほど、監視対象の領域が低負荷状態に遷移してからのアクセス負荷状況の監視時間が長くなるので、制御部１ｂは、アクセス負荷状況を正確に検出できる。そのため、設定時間Ｔ２が長いほど、アクセス負荷状況に基づいて算出される、更新後の設定時間Ｔ１の算出精度が高くなる。その反面、アクセス負荷状況の監視処理負荷が高くなり、その処理負荷が論理記憶領域２に対するアクセス性能に悪影響を与える可能性が出てくる。
【００２５】
これに対して、制御部１ｂは、以下のような観点から、データ移動にかかった時間を基準として設定時間Ｔ２を適正化する。設定時間Ｔ２が短くなるほど、設定時間Ｔ１も短くなることから、データが記憶装置３ａへ移動してから記憶装置３ｂに再移動するまでの最小間隔が短くなる。そのため、設定時間Ｔ２が短いほど、データ移動が頻繁に実行される可能性が高くなり、その結果として、論理記憶領域２へのアクセス性能が低下する場合がある。
【００２６】
データ移動が論理記憶領域２へのアクセス性能に与える影響を小さくするためには、論理記憶領域２へのアクセスの実行時間全体に対する、データ移動の実行時間の割合を小さくすることが望ましい。そこで、制御部１ｂは、例えば、設定時間Ｔ２を、監視対象領域のデータ移動の実行に必要な時間よりも十分に長い値に設定する。この方法によれば、監視対象領域のデータ移動までの最小時間である設定時間Ｔ１に対する、データ移動の実行時間の相対的な割合が小さくなる。その結果、論理記憶領域２へのアクセス性能に悪影響を与えるほどデータ移動の実行頻度が高くなる可能性が低下する。
【００２７】
これにより、制御部１ｂは、アクセス負荷状況の監視時間を、監視対象領域のデータ移動時間を基準として設定される範囲内に抑えることができる。設定時間Ｔ２が、データ移動の実行に必要な時間より十分に長い値に設定されることで、設定時間Ｔ１の算出精度を大きく低下させない範囲で監視時間を短縮することができる。その結果、記憶装置３ｂにデータを移動させる領域を選択するための判定基準を、低処理負荷で適正化できるようになる。
【００２８】
〔第２の実施の形態〕
図２は、第２の実施の形態に係る情報処理装置のハードウェア構成例を示す図である。図２に示す情報処理装置１００は、サーバ機能を備えるコンピュータである。図２に示すように、情報処理装置１００は、例えば、プロセッサ１０１、ＲＡＭ（Random Access Memory）１０２、ＨＤＤ（Hard Disk Drive）１０３、グラフィックインタフェース（Ｉ／Ｆ）１０４、入力インタフェース（Ｉ／Ｆ）１０５、読み取り装置１０６、ネットワークインタフェース（Ｉ／Ｆ）１０７、不揮発ＤＩＭＭ（Dual-Inline Memory Module）１０８およびＳＳＤ（Solid State Drive）１０９を有する。
【００２９】
プロセッサ１０１は、情報処理装置１００全体を制御する。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。また、プロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３０】
ＲＡＭ１０２は、情報処理装置１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００３１】
ＨＤＤ１０３は、情報処理装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤなどの他の種類の不揮発性記憶装置を使用することもできる。
【００３２】
グラフィックインタフェース１０４には、表示装置１０４ａが接続される。グラフィックインタフェース１０４は、プロセッサ１０１からの命令にしたがって、画像を表示装置１０４ａに表示させる。表示装置１０４ａとしては、例えば、液晶ディスプレイや有機ＥＬ（ElectroLuminescence）ディスプレイなどがある。
【００３３】
入力インタフェース１０５には、入力装置１０５ａが接続される。入力インタフェース１０５は、入力操作に応じて入力装置１０５ａから出力される信号をプロセッサ１０１に送信する。入力装置１０５ａとしては、例えば、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３４】
読み取り装置１０６には、可搬型記録媒体１０６ａが脱着される。読み取り装置１０６は、可搬型記録媒体１０６ａに記録されたデータを読み取ってプロセッサ１０１に送信する。可搬型記録媒体１０６ａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００３５】
ネットワークインタフェース１０７は、ネットワーク１０７ａを介して他の装置（図示せず）との間でデータの送受信を行う。
不揮発ＤＩＭＭ１０８およびＳＳＤ１０９も、情報処理装置１００の補助記憶装置の１つとして使用される。後述するように、不揮発ＤＩＭＭ１０８およびＳＳＤ１０９は、サーバ機能を実現するサーバアプリケーションからアクセスされる論理ボリュームの実記憶領域を実現する。
【００３６】
不揮発ＤＩＭＭ１０８は、ＤＩＭＭスロット１０８ａに装着される不揮発性メモリであり、例えば、ＮＶＲＡＭ（Non-Volatile Random Access Memory）である。ＳＳＤ１０９は、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ，ＰＣＩ：Peripheral Component Interconnect）スロット１０９ａに接続され、ＮＶＭ  Ｅｘｐｒｅｓｓ規格（ＮＶＭ：Non-Volatile Memory）にしたがってアクセスが制御される。ここで、不揮発ＤＩＭＭ１０８は、ＳＳＤ１０９と比較してアクセス速度が高い。
【００３７】
なお、ＤＩＭＭスロット１０８ａは、不揮発ＤＩＭＭ１０８と接続するためのインタフェースの一例であり、ＰＣＩｅスロット１０９ａは、ＳＳＤ１０９と接続するためのインタフェースの一例である。また、実際には、ＲＡＭ１０２もＤＩＭＭスロット１０８ａに接続されていてもよい。さらに、ＨＤＤ１０３もＰＣＩｅスロット１０９ａに接続されていてもよい。
【００３８】
以上のようなハードウェア構成によって、情報処理装置１００の処理機能を実現することができる。
図３は、情報処理装置が有する処理機能の構成例を示すブロック図である。情報処理装置１００は、サーバアプリケーション１１０、階層化管理部１２０、階層化制御部１３０、ドライバ１４１，１４２およびＩＯ（Input／Output）トレース部１５０を有する。
【００３９】
階層化制御部１３０、ドライバ１４１，１４２およびＩＯトレース部１５０は、ＯＳ空間１６１に属する。すなわち、階層化制御部１３０、ドライバ１４１，１４２およびＩＯトレース部１５０の処理は、プロセッサ１０１がＯＳプログラムを実行することで実現される。一方、サーバアプリケーション１１０および階層化管理部１２０は、ユーザ空間１６２に属する。すなわち、サーバアプリケーション１１０の処理と階層化管理部１２０の処理は、プロセッサ１０１がそれぞれ個別のアプリケーションプログラムを実行することで実現される。
【００４０】
サーバアプリケーション１１０は、ユーザに対して所定のサービスを提供するための処理を実行する。情報処理装置１００には、サーバアプリケーション１１０からのアクセス対象となる１以上の論理ボリュームが設定されている。本実施の形態では、論理ボリュームを「ＬＵＮ（Logical Unit Number）」と呼ぶ。サーバアプリケーション１１０は、階層化制御部１３０を介してＬＵＮに対するＩＯ処理を実行する。なお、以下の説明では、サーバアプリケーション１１０からのＬＵＮに対するＩＯを「ユーザＩＯ」と呼ぶ。
【００４１】
ＬＵＮに対応する物理記憶領域は、不揮発ＤＩＭＭ１０８およびＳＳＤ１０９によって実現される。ＬＵＮは、所定サイズ（例えば、１ＧＢ）の「サブＬＵＮ」に分割される。そして、サブＬＵＮを単位として、アクセス負荷に応じて不揮発ＤＩＭＭ１０８とＳＳＤ１０９のいずれかの記憶領域が割り当てられる「階層化制御」が行われる。すなわち、アクセス負荷が高いサブＬＵＮには、アクセス速度の高い不揮発ＤＩＭＭ１０８の記憶領域が割り当てられ、アクセス負荷が低いサブＬＵＮには、アクセス速度の低いＳＳＤ１０９の記憶領域が割り当てられる。
【００４２】
階層化管理部１２０は、データ収集部１２１、ワークロード分析部１２２および移動指示部１２３を有する。また、情報処理装置１００の記憶装置（例えば、ＲＡＭ１０２）には、収集情報データベース（ＤＢ）１２４が記憶され、階層化管理部１２０によって参照される。
【００４３】
データ収集部１２１は、ＬＵＮに対するユーザＩＯのトレースログをＩＯトレース部１５０から一定時間ごとに収集する。データ収集部１２１は、収集したトレースログに基づいて、サブＬＵＮごとのユーザＩＯの数を収集情報データベース１２４に登録する。収集情報データベース１２４には、データ収集部１２１による登録処理によって、サブＬＵＮを識別するＩＤと、一定時間におけるユーザＩＯの数と、収集された期間を示すタイムスタンプとを含むレコードが蓄積される。
【００４４】
ワークロード分析部１２２は、収集情報データベース１２４に基づいて、各サブＬＵＮにおけるアクセス負荷を判定し、各サブＬＵＮに対して不揮発ＤＩＭＭ１０８とＳＳＤ１０９のどちらの記憶領域を割り当てるかを判定する。ワークロード分析部１２２は、割り当て判定の結果、不揮発ＤＩＭＭ１０８とＳＳＤ１０９との間でデータを移動させるべきサブＬＵＮが存在する場合には、そのサブＬＵＮについてのデータ移動を移動指示部１２３に指示する。
【００４５】
移動指示部１２３は、ワークロード分析部１２２からの指示に応じて、不揮発ＤＩＭＭ１０８とＳＳＤ１０９との間のデータ移動を階層化制御部１３０に指示する。
階層化制御部１３０は、データ移動制御部１３１とユーザＩＯ制御部１３２とを有する。また、情報処理装置１００の記憶装置（例えば、ＲＡＭ１０２）には、階層テーブル１３３が記憶され、階層化制御部１３０に参照される。
【００４６】
階層テーブル１３３は、各サブＬＵＮのデータが不揮発ＤＩＭＭ１０８またはＳＳＤ１０９のどの領域に格納されているかを示す情報を保持する。
データ移動制御部１３１は、移動指示部１２３から、不揮発ＤＩＭＭ１０８とＳＳＤ１０９との間のデータ移動の指示を受ける。データ移動制御部１３１は、ドライバ１４１，１４２に対してＩＯ要求を発行することで、指示されたデータ移動処理を実行する。また、データ移動制御部１３１は、データ移動処理の実行に応じて階層テーブル１３３を更新する。
【００４７】
ユーザＩＯ制御部１３２は、階層テーブル１３３に基づいて、サーバアプリケーション１１０からのＬＵＮに対するＩＯ要求をドライバ１４１，１４２のいずれかに振り分ける。
【００４８】
ドライバ１４１は、階層化制御部１３０からのＩＯ要求に基づいて、不揮発ＤＩＭＭ１０８に対するＩＯを実行する。ドライバ１４２は、階層化制御部１３０からのＩＯ要求に基づいて、ＳＳＤ１０９に対するＩＯを実行する。
【００４９】
ＩＯトレース部１５０は、ＬＵＮに対するＩＯをトレースし、トレースログを記憶装置（例えば、ＲＡＭ１０２）に記録する。ＩＯトレース部１５０は、データ収集部１２１からの要求に応じて、一定時間ごとのユーザＩＯのトレース結果を出力する。
【００５０】
図４は、階層テーブルのデータ構成例を示す図である。階層テーブル１３３は、例えば、サブＬＵＮごとのレコードを有する。各レコードには、ＬＵＮオフセット、不揮発ＤＩＭＭオフセットおよびＳＳＤオフセットが登録される。
【００５１】
ＬＵＮオフセットは、ＬＵＮ上のサブＬＵＮの位置を示すオフセットである。例えば、ＬＵＮオフセットには、サブＬＵＮの先頭オフセットが登録される。不揮発ＤＩＭＭオフセットには、サブＬＵＮのデータが不揮発ＤＩＭＭ１０８に格納されている場合に、その格納位置を示す不揮発ＤＩＭＭ１０８上のオフセットが登録される。ＳＳＤオフセットには、サブＬＵＮのデータがＳＳＤ１０９に格納されている場合に、その格納位置を示すＳＳＤ１０９上のオフセットが登録される。
【００５２】
ユーザＩＯ制御部１３２は、サーバアプリケーション１１０からＬＵＮ上のオフセットが指定されたＩＯ要求を受けると、階層テーブル１３３のレコードのうち、指定されたＬＵＮが含まれるサブＬＵＮに対応するレコードを参照する。レコードに不揮発ＤＩＭＭ１０８のオフセットが登録されている場合、ユーザＩＯ制御部１３２は、そのオフセットから不揮発ＤＩＭＭ１０８上の該当データ領域のオフセットを計算し、算出されたオフセットを指定したＩＯ要求をドライバ１４１に出力する。一方、レコードにＳＳＤ１０９のオフセットが登録されている場合、ユーザＩＯ制御部１３２は、そのオフセットからＳＳＤ１０９上の該当データ領域のオフセットを計算し、算出されたオフセットを指定したＩＯ要求をドライバ１４２に出力する。
【００５３】
また、ＩＯ要求が書き込み要求であって、レコードに不揮発ＤＩＭＭ１０８とＳＳＤ１０９のいずれのオフセットも登録されていない場合、ユーザＩＯ制御部１３２は、ＳＳＤ１０９の空き領域をレコードに対応するサブＬＵＮに割り当てる。ユーザＩＯ制御部１３２は、割り当てた空き領域を示すオフセットをＳＳＤオフセットの項目に登録し、この領域におけるデータ書き込み先領域のオフセットを指定したＩＯ要求をドライバ１４２に出力する。
【００５４】
図５は、ワークロード分析部の内部構成を示す図である。ワークロード分析部１２２は、ＤＩＭＭ移動制御部１２２ａ、ＳＳＤ移動制御部１２２ｂおよびパラメータ更新部１２２ｃを有する。また、情報処理装置１００の記憶装置（例えば、ＲＡＭ１０２）には、収集情報データベース（ＤＢ）１２４に加えて、第１管理テーブル１２５と第２管理テーブル１２６とがさらに記憶され、ワークロード分析部１２２によって参照される。さらに、情報処理装置１００は、ワークロード分析部１２２によって参照されるパラメータ記憶部１２７を有する。
【００５５】
ＤＩＭＭ移動制御部１２２ａは、収集情報データベース１２４の情報に基づいて、一定時間内にユーザＩＯが集中したＬＵＮの領域を示す「ＩＯ集中領域」を判定し、その領域を示す情報を第１管理テーブル１２５に登録する。ＩＯ集中領域は、隣接する１以上のサブＬＵＮを含むサブＬＵＮ群として特定される。また、ＤＩＭＭ移動制御部１２２ａは、第１管理テーブル１２５に登録されたサブＬＵＮ群のうち、所定回数連続してＩＯ集中領域と判定されたサブＬＵＮ群のデータを、ＳＳＤ１０９から不揮発ＤＩＭＭ１０８へ移動させるように移動指示部１２３に指示する。
【００５６】
ＳＳＤ移動制御部１２２ｂは、データが不揮発ＤＩＭＭ１０８へ移動されたサブＬＵＮ群の中から、データをＳＳＤ１０９へ移動させるべきサブＬＵＮ群を判定し、このサブＬＵＮ群のデータ移動を移動指示部１２３に指示する。ＳＳＤ移動制御部１２２ｂは、ＳＳＤ１０９へデータを移動させたサブＬＵＮ群の情報を第２管理テーブル１２６に登録するとともに、このサブＬＵＮ群の情報を第１管理テーブル１２５から削除する。
【００５７】
パラメータ更新部１２２ｃは、ＳＳＤ移動制御部１２２ｂの処理において利用される制御パラメータを、ユーザＩＯの発生状況に応じて更新する。
パラメータ記憶部１２７には、ＳＳＤ移動制御部１２２ｂの処理において利用される制御パラメータが記憶される。具体的には、パラメータ記憶部１２７には、後述する判定時間Ｔａと監視時間Ｔｍａｘとが記憶される。なお、パラメータ記憶部１２７は、情報処理装置１００の記憶装置（例えば、ＲＡＭ１０２）の記憶領域によって実現される。
【００５８】
次に、ワークロード分析部１２２によるデータ移動制御についてさらに説明する。
＜ＳＳＤから不揮発ＤＩＭＭへのデータ移動制御＞
図６は、不揮発ＤＩＭＭへのデータ移動処理について説明するための図である。ＤＩＭＭ移動制御部１２２ａは、例として６０秒間隔で、収集情報データベース１２４の情報に基づいて、直近６０秒における各サブＬＵＮに対するユーザＩＯの数を判別する。そして、ＤＩＭＭ移動制御部１２２ａは、判別結果に基づいてＩＯ集中領域を判定する。
【００５９】
ＤＩＭＭ移動制御部１２２ａは、ＬＵＮ全体の容量の数％以下の範囲に、ＬＵＮに対する全ユーザＩＯのうち半分以上のユーザＩＯが集まったとき、その範囲にＩＯが集中したと判定する。具体的には、次のような手順で判定が行われる。なお、図６において、四角形はサブＬＵＮを示し、四角形に付された数字はサブＬＵＮを識別するＩＤを示す。
【００６０】
まず、時刻ＴＭ１において、ＤＩＭＭ移動制御部１２２ａは、収集情報データベース１２４を参照して、直近６０秒におけるサブＬＵＮ毎のユーザＩＯの数を判別する（ステップＳ１１）。次に、ＤＩＭＭ移動制御部１２２ａは、サブＬＵＮをユーザＩＯの数が多い順にソートし、先頭から所定個数のサブＬＵＮを特定する（ステップＳ１２）。図６の例では、ＬＵＮのサイズを３００ＧＢとし、サブＬＵＮのサイズを１ＧＢとする。そして、ステップＳ１２では、先頭から２０個のサブＬＵＮが特定されるものとする。
【００６１】
次に、ＤＩＭＭ移動制御部１２２ａは、特定したサブＬＵＮの中から、隣接するサブＬＵＮを結合して、１以上のサブＬＵＮ群を生成する。各サブＬＵＮ群には、１以上のサブＬＵＮが含まれる。そして、ＤＩＭＭ移動制御部１２２ａは、各サブＬＵＮ群を、ユーザＩＯの合計値が多い順にソートする（ステップＳ１３）。図３の例では、先頭から順に、ＩＤ＝６５〜６８のサブＬＵＮを含むサブＬＵＮ群ＧＰ＃１、ＩＤ＝６，７のサブＬＵＮを含むサブＬＵＮ群ＧＰ＃２、ＩＤ＝１１２のサブＬＵＮを含むサブＬＵＮ群ＧＰ＃３が特定されたとする。
【００６２】
次に、ＤＩＭＭ移動制御部１２２ａは、先頭のサブＬＵＮ群から順にユーザＩＯ数を合算していく。ＤＩＭＭ移動制御部１２２ａは、ユーザＩＯ数の合算値が、ＬＵＮ全体でのユーザＩＯの総数に対して６０％を超えたときのサブＬＵＮ群を、ＩＯ集中領域として特定する（ステップＳ１４）。例えば、図６では、サブＬＵＮ群ＧＰ＃１のユーザＩＯ数が総数に対する４９％であるとする。また、サブＬＵＮ群ＧＰ＃１，ＧＰ＃２のユーザＩＯ数の合算値が、総数に対する６３％であるとする。この場合、サブＬＵＮ群ＧＰ＃１，ＧＰ＃２が、それぞれＩＯ集中領域として特定される。
【００６３】
以上の手順により、ユーザＩＯが集中したと見なされるＩＯ集中領域が判定される。ＤＩＭＭ移動制御部１２２ａは、ＩＯ集中領域と判定されたサブＬＵＮ群ＧＰ＃１，ＧＰ＃２に含まれるサブＬＵＮを示す情報を、第１管理テーブル１２５に登録する。また、第１管理テーブル１２５には、サブＬＵＮ群が何回連続してＩＯ集中領域と判定されたかを示す「連続数」も登録される。図６の例では、時刻ＴＭ１においてサブＬＵＮ群ＧＰ＃１，ＧＰ＃２が初めてＩＯ集中領域と判定されたとすると、それぞれに対応付けて連続数＝１が登録される。
【００６４】
ＤＩＭＭ移動制御部１２２ａは、上記のようなＩＯ集中領域の判定を６０秒間隔で実行する。そして、ＤＩＭＭ移動制御部１２２ａは、所定時間以上（すなわち、所定回数以上）連続してＩＯ集中領域と判定されたサブＬＵＮ群のデータを、ＳＳＤ１０９から不揮発ＤＩＭＭ１０８へ移動させるように移動指示部１２３に指示する。
【００６５】
例えば、時刻ＴＭ１から６０秒後の時刻ＴＭ２において、ＩＤ＝６５〜６７のサブＬＵＮを含むサブＬＵＮ群と、ＩＤ＝１２〜１４のサブＬＵＮを含むサブＬＵＮ群とが、ＩＯ集中領域として特定されたとする。このとき、第１管理テーブル１２５には、ＩＤ＝６５〜６８のサブＬＵＮを含むサブＬＵＮ群ＧＰ＃１が登録されている。
【００６６】
この場合、時刻ＴＭ２でＩＯ集中領域として特定された、ＩＤ＝６５〜６７のサブＬＵＮを含むサブＬＵＮ群は、登録されているサブＬＵＮ群ＧＰ＃１と重複する。このことから、ＤＩＭＭ移動制御部１２２ａは、ＩＤ＝６５〜６７のサブＬＵＮを含むサブＬＵＮ群をサブＬＵＮ群ＧＰ＃１と同一と見なし、第１管理テーブル１２５に登録されたサブＬＵＮ群ＧＰ＃１の範囲をＩＤ＝６５〜６７に更新する。そして、ＤＩＭＭ移動制御部１２２ａは、サブＬＵＮ群ＧＰ＃１に対応付けられた連続数を「２」にカウントアップする。すなわち、ＤＩＭＭ移動制御部１２２ａは、サブＬＵＮ群ＧＰ＃１が２回連続してＩＯ集中領域と判定された、と認識する。
【００６７】
一方、ＩＤ＝１２〜１４のサブＬＵＮを含むサブＬＵＮ群と重複するサブＬＵＮ群は、第１管理テーブル１２５に登録されていない。この場合、ＤＩＭＭ移動制御部１２２ａは、このサブＬＵＮ群を新たにＩＯ集中領域と判定されたサブＬＵＮ群ＧＰ＃４として第１管理テーブル１２５に登録し、その連続数を「１」とする。
【００６８】
同様に、時刻ＴＭ２から６０秒後の時刻ＴＭ３において、ＩＤ＝６５〜６８のサブＬＵＮを含むサブＬＵＮ群と、ＩＤ＝２〜４のサブＬＵＮを含むサブＬＵＮ群とが、ＩＯ集中領域として特定されたとする。このとき、第１管理テーブル１２５には、ＩＤ＝６５〜６７のサブＬＵＮを含むサブＬＵＮ群ＧＰ＃１が登録されている。
【００６９】
この場合、ＤＩＭＭ移動制御部１２２ａは、ＩＤ＝６５〜６８のサブＬＵＮを含むサブＬＵＮ群をサブＬＵＮ群ＧＰ＃１と同一と見なし、第１管理テーブル１２５に登録されたサブＬＵＮ群ＧＰ＃１の範囲をＩＤ＝６５〜６８に更新する。そして、ＤＩＭＭ移動制御部１２２ａは、サブＬＵＮ群ＧＰ＃１に対応付けられた連続数を「３」にカウントアップする。なお、ＩＤ＝２〜４のサブＬＵＮを含むサブＬＵＮ群は、新たにＩＯ集中領域と判定されたサブＬＵＮ群ＧＰ＃５として第１管理テーブル１２５に登録される。
【００７０】
ここで、連続数が３以上の場合にデータ移動を行うものとすると、ＤＩＭＭ移動制御部１２２ａは、サブＬＵＮ群ＧＰ＃１のデータをＳＳＤ１０９から不揮発ＤＩＭＭ１０８へ移動させるように移動指示部１２３に指示する。これにより、ＩＤ＝６５〜６８のサブＬＵＮのデータがＳＳＤ１０９から不揮発ＤＩＭＭ１０８へ移動する。
【００７１】
＜不揮発ＤＩＭＭからＳＳＤへのデータ移動制御＞
ＳＳＤ移動制御部１２２ｂは、データが不揮発ＤＩＭＭ１０８へ移動されたサブＬＵＮ群におけるユーザＩＯの発生状況を監視する。そして、ＳＳＤ移動制御部１２２ｂは、これらのサブＬＵＮ群の中から、ＩＯ集中領域と判定されなくなったサブＬＵＮ群を、データを不揮発ＤＩＭＭ１０８からＳＳＤ１０９へ移動させるサブＬＵＮ群の候補とする。
【００７２】
図７は、サブＬＵＮ群でのＩＯ発生パターンの例を示す図である。ユーザＩＯがある程度の時間集中したサブＬＵＮ群について、ユーザＩＯが集中しなくなった後、比較的短時間で再度ユーザＩＯが集中するという事象が発生することがある。そこで、ＳＳＤ移動制御部１２２ｂは、データが不揮発ＤＩＭＭ１０８に移動されたサブＬＵＮ群のうち、一定時間（図７の判定時間Ｔａ）連続してＩＯ集中領域と判定されていないサブＬＵＮ群のデータを、不揮発ＤＩＭＭ１０８からＳＳＤ１０９へ移動させる。
【００７３】
すなわち、ＳＳＤ移動制御部１２２ｂは、サブＬＵＮ群がＩＯ集中領域と判定されなくなったとき、ユーザＩＯが集中する状態が終息したと判断するものの、その後に短時間でＩＯ集中が再発生する可能性があると判断して、データを不揮発ＤＩＭＭ１０８に残す。そして、ＳＳＤ移動制御部１２２ｂは、ユーザＩＯの集中（ＩＯ集中）が終息してから判定時間Ｔａが経過してもＩＯ集中領域と判定されない場合に、ＩＯ集中が再発生する可能性が低いと判断して、データを不揮発ＤＩＭＭ１０８からＳＳＤ１０９へ移動させる。
【００７４】
これにより、ユーザＩＯが集中しなくなったサブＬＵＮ群のデータが不揮発ＤＩＭＭ１０８に一定期間残るようになる。その結果、ＩＯ集中が再発生した場合に、ユーザＩＯ制御部１３２が不揮発ＤＩＭＭ１０８に対して高速にアクセスできる可能性が高まる。
【００７５】
＜判定時間Ｔａの算出＞
ここで、判定時間Ｔａを一定値に設定したと仮定すると、ＩＯ集中が再発生するパターンとしては、大別して図７に示す２つのパターンがあり得る。
【００７６】
第１のパターンは、時刻ｔ１１でＩＯ集中が終息してから、判定時間Ｔａより長い時間が経過した後の時刻ｔ１４で、再度ユーザＩＯが集中するパターンである。この場合、判定時間Ｔａが経過した時刻ｔ１３で、サブＬＵＮ群のデータは不揮発ＤＩＭＭ１０８からＳＳＤ１０９に移動する。このため、時刻ｔ１４でユーザＩＯが集中したときにはＳＳＤ１０９に対するアクセスが行われるので、アクセス速度が低下してしまう。
【００７７】
一方、第２のパターンは、時刻ｔ１１でＩＯ集中が終息してから、判定時間Ｔａが経過する前の時刻ｔ１２に再度ユーザＩＯが集中するパターンである。この場合、時刻ｔ１２ではサブＬＵＮ群のデータは不揮発ＤＩＭＭ１０８に保持されているので、不揮発ＤＩＭＭ１０８に対する高速なアクセスが行われる。
【００７８】
サブＬＵＮ群においてＩＯ集中が終息した後、どれだけの時間が経過すると再度ユーザＩＯが集中するかは、ワークロードの状態によって変わる。そこで、パラメータ更新部１２２ｃは、ワークロードの状態に応じて判定時間Ｔａを適宜変化させる。これにより、不揮発ＤＩＭＭ１０８に保持されるデータ量を抑制しつつ、ワークロードが変化した場合でも、ＩＯ集中が再発生した時点でサブＬＵＮ群のデータが不揮発ＤＩＭＭ１０８に保持されている可能性を高める。そのような可能性を高めることで、アクセス性能を向上させることができる。
【００７９】
判定時間Ｔａの算出方法としては、次の２つの方法を用いることができる。
（第１の方法）
ＳＳＤ移動制御部１２２ｂは、サブＬＵＮ群におけるＩＯ集中が終息してから、監視時間Ｔｍａｘ（ただし、Ｔｍａｘ＞Ｔａ）が経過するまでの間、このサブＬＵＮ群においてＩＯ集中が再発生するかを監視する。そして、ＳＳＤ移動制御部１２２ｂは、第１のパターンにおいて、データをＳＳＤ１０９へ移動させてからＩＯ集中が再発生するまでの時間Ｔｂを検出する。ただし、Ｔａ＋Ｔｂ≦Ｔｍａｘとなる。また、ＳＳＤ移動制御部１２２ｂは、第２のパターンにおいて、ＩＯ集中が終息してから、データをＳＳＤ１０９へ移動させる前にＩＯ集中が再発生するまでの時間Ｔｃを検出する。
【００８０】
なお、本実施の形態では、Ｔａ，Ｔｂ，Ｔｃ，Ｔｍａｘは、ＩＯ集中領域の判定周期（６０秒）の倍数で表されるものとする。換言すると、Ｔａ，Ｔｂ，Ｔｃ，Ｔｍａｘは、データが不揮発ＤＩＭＭ１０８に移動されたサブＬＵＮ群について、連続してＩＯ集中領域であると判定されなかった回数を示す。
【００８１】
ＳＳＤ移動制御部１２２ｂは、サブＬＵＮ群においてＩＯ集中が終息するたびに、時間Ｔｂまたは時間Ｔｃを蓄積していく。また、ＳＳＤ移動制御部１２２ｂは、判定時間Ｔａの経過後、時間Ｔｂが経過する前までにＩＯ集中が再発生した回数を示す「Ｔｂ回数」と、判定時間Ｔａが経過するより前にＩＯ集中が再発生した回数を示す「Ｔｃ回数」を記録する。すなわち、Ｔｂ回数は、監視時間Ｔｍａｘが経過する前までの期間において、データをＳＳＤ１０９に移動させた後にＩＯ集中が再発生した回数を示す。また、Ｔｃ回数は、データをＳＳＤ１０９に移動させる前にＩＯ集中が再発生した回数を示す。さらに、ＳＳＤ移動制御部１２２ｂは、監視時間Ｔｍａｘが経過した時点でＩＯ集中が再発生しなかった回数Ｎも記録する。
【００８２】
パラメータ更新部１２２ｃは、ＩＯ集中領域の判定周期（６０秒）より長い一定間隔で、判定時間Ｔａを更新する。本実施の形態では、判定時間Ｔａの更新間隔を６０分とする。パラメータ更新部１２２ｃは、前回の更新タイミングから現時刻までの時間Ｔｂ，Ｔｃ、Ｔｂ回数、Ｔｃ回数および回数Ｎに基づいて、次の式（１）にしたがって判定時間Ｔａを再計算する。
Ｔａ＝｛Ｓｕｍ（Ｔａ＋Ｔｂ）＋Ｓｕｍ（Ｔｃ）｝／（Ｔｂ回数＋Ｔｃ回数＋Ｎ）・・・（１）
ただし、Ｓｕｍ（Ｔａ＋Ｔｂ）は、６０分の期間に蓄積されたＴａ＋Ｔｂの合計値を示す。Ｓｕｍ（Ｔｃ）は、６０分の期間に蓄積されたＴｃの合計値を示す。
【００８３】
（第２の方法）
ＳＳＤ移動制御部１２２ｂは、第１の方法と同様の方法で、時間Ｔｂ，Ｔｃを蓄積する。パラメータ更新部１２２ｃは、６０分ごとに、前回の更新タイミングから現時刻までの時間Ｔｂ，Ｔｃに基づいて、次の式（２）にしたがって判定時間Ｔａを再計算する。
Ｔａ＝Ｍａｘ（Ｔａ１，Ｔａ２）・・・（２）
ただし、Ｔａ１＝Ｍａｘ（Ｔａ＋Ｔｂ）、Ｔａ２＝Ｍａｘ（Ｔｃ）である。Ｍａｘ（Ｔａ＋Ｔｂ）は、６０分の期間に蓄積されたＴａ＋Ｔｂの最大値を示す。Ｍａｘ（Ｔｃ）は、６０分の期間に蓄積されたＴｃの最大値を示す。Ｍａｘ（Ｔａ１，Ｔａ２）は、Ｔａ１，Ｔａ２のうちの大きい方を出力することを示す。
【００８４】
ここで、第１の方法によれば、ＩＯ集中が終息してからＩＯ集中が再発生するまでの平均時間が、判定時間Ｔａとして設定される。一方、第２の方法によれば、ＩＯ集中が終息してからＩＯ集中が再発生するまでの時間の最大値が、判定時間Ｔａとして設定される。
【００８５】
これら２つの方法を比較すると、第１の方法では、データをＳＳＤ１０９へ移動させる前にＩＯ集中が再発生する確率を高められるものの、その確率は第２の方法より低くなる可能性が高い。その反面、第２の方法と比較して、不揮発ＤＩＭＭ１０８の使用容量を節約することができる。このため、新たに不揮発ＤＩＭＭ１０８に移動させるべきと判定されたサブＬＵＮ群のデータを、不揮発ＤＩＭＭ１０８の空き領域に対して即座に移動させることができる確率が高まる。
【００８６】
一方、第２の方法では、データをＳＳＤ１０９へ移動させる前にＩＯ集中が再発生する確率を、第１の方法より高めることができる。その反面、不揮発ＤＩＭＭ１０８の使用容量が第１の方法より大きくなる可能性が高い。
【００８７】
＜監視時間Ｔｍａｘの算出＞
ところで、上記の第１の方法、第２の方法のいずれでも、ＳＳＤ移動制御部１２２ｂは、ＩＯ集中の終息から最大で監視時間Ｔｍａｘが経過するまでの間、ＩＯ集中が再発生するかを監視する。ここで、監視時間Ｔｍａｘが長くなるほど、ＩＯ集中の再発生を検知できる可能性が高まる。その結果、判定時間Ｔａの算出精度が向上し、ＩＯ集中の再発生時にデータが不揮発ＤＩＭＭ１０８に保持されている確率が高まるので、ユーザＩＯの応答時間を短縮できる。
【００８８】
その一方、監視時間Ｔｍａｘが長くなるほど、ＳＳＤ移動制御部１２２ｂによる監視処理の負荷が高まり、その結果、情報処理装置１００の処理負荷が高まる。この負荷の増加は、ユーザＩＯの応答性能に悪影響を及ぼす可能性もある。そこで、パラメータ更新部１２２ｃは、判定時間Ｔａの算出精度をできるだけ維持しつつ、監視処理負荷が増大しないように、監視時間Ｔｍａｘを定期的に更新する。
【００８９】
まず、監視時間Ｔｍａｘを、一定期間において検出された、ＩＯ集中が終息してからＩＯ集中が再発生するまでの時間の最大値とする方法が考えられる。この方法によれば、理論上、その期間においてＩＯ集中の再発生を確実に検出できる。しかし、この方法では、ＩＯ集中の再発生までの間隔が長いサブＬＵＮ群が存在した場合に、そのサブＬＵＮ群について、ユーザＩＯが集中していないにもかかわらず監視処理が長時間実行される、という事態が発生し得る。このようなサブＬＵＮ群が多いほど、プロセッサ１０１やＲＡＭ１０２などのリソースが浪費されてしまう。
【００９０】
そこで、本実施の形態では、パラメータ更新部１２２ｃは、上記の方法を採用するとともに、監視時間Ｔｍａｘの上限を設定して、リソースの浪費を抑制する。パラメータ更新部１２２ｃは、以下のような観点から、サブＬＵＮ群のデータ移動にかかった時間を基準にして、監視時間Ｔｍａｘの上限を設定する。
【００９１】
ＳＳＤ１０９へのデータ移動の要否を判定するための判定時間Ｔａは、監視時間Ｔｍａｘより小さい値となる。このため、監視時間Ｔｍａｘが短くなるほど、サブＬＵＮ群のデータが不揮発ＤＩＭＭ１０８に移動してからＳＳＤ１０９に再移動するまでの最小時間も短くなる。これは、監視時間Ｔｍａｘが小さいほど、不揮発ＤＩＭＭ１０８からＳＳＤ１０９へのデータ移動が頻繁に実行される可能性が高いことを意味する。データ移動の頻度が高過ぎると、ユーザＩＯの応答性能が低下してしまい、データ移動の意義が薄れてしまう。
【００９２】
データ移動がユーザＩＯの応答性能に与える影響を小さくするためには、全体のＩＯ処理時間に対して、データ移動が実行される時間の割合を小さくすることが望ましい。このような割合を小さくする方法として、パラメータ更新部１２２ｃは、監視時間Ｔｍａｘの上限を、サブＬＵＮ群のデータ移動の実行に必要な時間よりも十分に長い値に設定する方法を採用する。この方法によれば、判定時間Ｔａに対するサブＬＵＮ群のデータ移動時間の相対的な割合も小さくなり、データ移動がユーザＩＯの応答性能に与える影響が小さくなる。
【００９３】
ただし、サブＬＵＮ群のデータ移動の実行に必要な時間よりも十分に長くなるように監視時間Ｔｍａｘの上限を大きくするほど、監視処理の負荷は大きくなってしまう。そこで、パラメータ更新部１２２ｃは、監視時間Ｔｍａｘの上限を、サブＬＵＮ群のデータ移動の実行に必要な時間よりも十分に長いと言える、できるだけ小さい値に設定する。これにより、データ移動による負荷と監視処理による負荷とのバランスを適正化する。例えば、パラメータ更新部１２２ｃは、監視時間Ｔｍａｘの上限を、一定期間におけるサブＬＵＮ群のデータ移動の平均実行時間に対して１００倍程度に設定する。
【００９４】
以上をまとめると、パラメータ更新部１２２ｃは、次のような計算によって監視時間Ｔｍａｘを定期的に更新する。
パラメータ更新部１２２ｃは、一定時間においてＳＳＤ１０９へのデータ移動が実行されたサブＬＵＮ群についてのサブＬＵＮ当たりの平均データ移動時間ａｖｅ＿ｍｉｇと、これらのサブＬＵＮ群の平均サブＬＵＮ数ａｖｅ＿ｎｕｍとを求める。そして、パラメータ更新部１２２ｃは、次の式（３）にしたがって、監視時間Ｔｍａｘの上限値Ｔｍａｘ＿ｕｐｐｅｒを算出する。
Ｔｍａｘ＿ｕｐｐｅｒ＝ａｖｅ＿ｍｉｇ＊ａｖｅ＿ｎｕｍ＊Ｍ・・・（３）
ただし、Ｍは固定値であり、例えば１００である。
【００９５】
また、パラメータ更新部１２２ｃは、一定時間において、サブＬＵＮ群ごとにＩＯ集中が終息してからＩＯ集中が再発生するまでの時間間隔の最大値Ｔｍａｘ＿ｔｅｍｐを求める。ただし、この時間間隔は、監視時間Ｔｍａｘの制限に関係なくＩＯ集中の再発生を検知することによって求められることが望ましい。
【００９６】
そして、パラメータ更新部１２２ｃは、求められた上限値Ｔｍａｘ＿ｕｐｐｅｒと最大値Ｔｍａｘ＿ｔｅｍｐのうち小さい方の値を、新たな監視時間Ｔｍａｘに設定する。
なお、上記のように、監視時間Ｔｍａｘが小さ過ぎるとデータ移動が頻繁に実行される可能性が高くなり、それによってユーザＩＯの応答性能が低下する可能性がある。そこで、パラメータ更新部１２２ｃは、監視時間Ｔｍａｘの更新間隔を判定時間Ｔａの更新間隔より長くする。これにより、上記の最大値Ｔｍａｘ＿ｔｅｍｐの変動幅が抑制されて、その値の最小値が一定以上に維持されるようになり、その結果、監視時間Ｔｍａｘが小さ過ぎる値になる可能性が抑制される。また、監視時間Ｔｍａｘの更新処理による情報処理装置１００の処理負荷を軽減することもできる。一例として、本実施の形態では、監視時間Ｔｍａｘの更新間隔を１日（２４時間）とする。
【００９７】
＜管理テーブルの構成例＞
次に、判定時間Ｔａおよび監視時間Ｔｍａｘの計算のために使用される管理テーブルについて説明する。
【００９８】
図８は、第１管理テーブルのデータ構成例を示す図である。第１管理テーブル１２５は、ＤＩＭＭ移動制御部１２２ａによってＩＯ集中領域と判定されたサブＬＵＮ群ごとのレコードを有する。なお、ＩＯ集中領域と判定されたサブＬＵＮ群のレコードは、このサブＬＵＮ群のデータが不揮発ＤＩＭＭ１０８に移動し、さらにＳＳＤ１０９に移動するまで第１管理テーブル１２５に保持され続ける。各レコードには、グループＩＤ、先頭サブＬＵＮ、末尾サブＬＵＮ、連続数、登録時刻、状態、Ｔｃ、移動時間およびタイムアウトが登録される。
【００９９】
グループＩＤは、サブＬＵＮ群の識別番号を示す。先頭サブＬＵＮは、サブＬＵＮ群に含まれるサブＬＵＮのうち先頭のサブＬＵＮを示す。末尾サブＬＵＮは、サブＬＵＮ群に含まれるサブＬＵＮのうち末尾のサブＬＵＮを示す。連続数は、サブＬＵＮ群がＩＯ集中領域として連続して判定された回数を示す。
【０１００】
登録時刻は、サブＬＵＮ群が第１管理テーブル１２５に登録された時刻を示す。状態は、サブＬＵＮ群のデータがＳＳＤ１０９から不揮発ＤＩＭＭ１０８に移動したか否かを示す。Ｔｃは、図７に示した時間Ｔｃのカウント値を示す。移動時間は、サブＬＵＮ群のデータをＳＳＤ１０９から不揮発ＤＩＭＭ１０８に移動させたときにかかった時間を、サブＬＵＮ群に含まれるサブＬＵＮ数で除算した値を示す。すなわち、移動時間は、サブＬＵＮ当たりのデータ移動時間を示す。タイムアウトは、サブＬＵＮ群がＩＯ集中領域として連続して判定されなかった回数を示す。
【０１０１】
図９は、第２管理テーブルのデータ構成例を示す図である。第２管理テーブル１２６は、不揮発ＤＩＭＭ１０８からＳＳＤ１０９に対してデータが移動したサブＬＵＮ群ごとのレコードを有する。各レコードは、グループＩＤ、先頭サブＬＵＮ、末尾サブＬＵＮ、連続数、登録時刻、終息時刻、Ｔｃ、移動時間およびＴｂが登録される。
【０１０２】
グループＩＤは、サブＬＵＮ群の識別番号を示す。先頭サブＬＵＮは、サブＬＵＮ群に含まれるサブＬＵＮのうち先頭のサブＬＵＮを示す。末尾サブＬＵＮは、サブＬＵＮ群に含まれるサブＬＵＮのうち末尾のサブＬＵＮを示す。連続数は、サブＬＵＮ群がＩＯ集中領域として連続して判定された回数を示す。
【０１０３】
登録時刻は、サブＬＵＮ群が第１管理テーブル１２５に登録された時刻を示す。終息時刻は、サブＬＵＮ群におけるＩＯ集中が終息した時刻（すなわち、サブＬＵＮ群がＩＯ集中と判定されている状態からＩＯ集中領域と判定されなくなった時刻）を示す。ただし、この終息時刻は、サブＬＵＮ群のデータがＳＳＤ１０９に移動する前において、最後にＩＯ集中が終息したと判定された時刻である。
【０１０４】
Ｔｃは、図７に示した時間Ｔｃのカウント値を示す。移動時間は、ＳＳＤ１０９から不揮発ＤＩＭＭ１０８に対するサブＬＵＮ当たりのデータ移動時間を示す。Ｔｂは、図７に示した時間Ｔｂの計測値を示す。
【０１０５】
＜フローチャート＞
次に、情報処理装置１００の処理についてフローチャートを用いて説明する。
図１０は、データ移動制御手順の例を示すフローチャートである。
【０１０６】
［ステップＳ２１］データ収集部１２１は、直近６０秒のユーザＩＯのトレースログをＩＯトレース部１５０から取得し、収集情報データベース１２４に登録する。ＤＩＭＭ移動制御部１２２ａは、収集情報データベース１２４を参照して、直近６０秒におけるサブＬＵＮごとのユーザＩＯ数を特定する。
【０１０７】
［ステップＳ２２］ＤＩＭＭ移動制御部１２２ａは、ステップＳ２１で特定されたユーザＩＯ数に基づいて、図６で説明した手順にしたがい、ユーザＩＯが集中したサブＬＵＮ群（ＩＯ集中領域）を判定する。ＤＩＭＭ移動制御部１２２ａは、判定されたサブＬＵＮ群を示す情報を、記憶領域（例えば、ＲＡＭ１０２）に一時的に記録する。
【０１０８】
［ステップＳ２３］ＤＩＭＭ移動制御部１２２ａは、ステップＳ２２での判定結果と第１管理テーブル１２５の情報とに基づいて、データを不揮発ＤＩＭＭ１０８へ移動させるサブＬＵＮ群を特定する。ＤＩＭＭ移動制御部１２２ａは、特定されたサブＬＵＮ群のデータをＳＳＤ１０９から不揮発ＤＩＭＭ１０８へ移動させるように移動指示部１２３に指示する。
【０１０９】
［ステップＳ２４］ＳＳＤ移動制御部１２２ｂは、ステップＳ２２での判定結果と第１管理テーブル１２５の情報とに基づいて、データをＳＳＤ１０９へ移動させるサブＬＵＮ群を特定する。ＳＳＤ移動制御部１２２ｂは、特定されたサブＬＵＮ群のデータを不揮発ＤＩＭＭ１０８からＳＳＤ１０９へ移動させるように移動指示部１２３に指示する。また、ＳＳＤ移動制御部１２２ｂは、データをＳＳＤ１０９に移動させたサブＬＵＮ群についてのレコードを第２管理テーブル１２６に登録するとともに、このサブＬＵＮ群についてのレコードを第１管理テーブル１２５から削除する。
【０１１０】
［ステップＳ２５］ＳＳＤ移動制御部１２２ｂは、第２管理テーブル１２６に基づいて、データがＳＳＤ１０９に移動したサブＬＵＮ群についてのＩＯ集中の発生を監視する監視処理を実行する。
【０１１１】
［ステップＳ２６］ワークロード分析部１２２は、一定時間（本実施の形態では、６０秒）スリープし、その後にステップＳ２１の処理を再実行する。
図１１は、不揮発ＤＩＭＭへのデータ移動制御手順の例を示すフローチャートである。この図１１の処理は、図１０のステップＳ２３の処理に対応する。
【０１１２】
［ステップＳ２３１］ＤＩＭＭ移動制御部１２２ａは、図１０のステップＳ２２でＩＯ集中領域と判定されたサブＬＵＮ群の中から、第１管理テーブル１２５に登録されていないサブＬＵＮ群を特定する。この際に特定されるサブＬＵＮ群とは、このサブＬＵＮ群に含まれるサブＬＵＮを１つでも含むサブＬＵＮ群が第１管理テーブル１２５に登録されていないものを指す。
【０１１３】
ＤＩＭＭ移動制御部１２２ａは、特定されたサブＬＵＮ群に対応するレコードを第１管理テーブル１２５に新規登録する。また、ＤＩＭＭ移動制御部１２２ａは、このレコードにおいて、連続数として「１」を設定し、登録時刻として現在の時刻を登録し、状態として不揮発ＤＩＭＭ１０８に移動していないことを示す「未移動」を登録し、Ｔｃ、移動時間、タイムアウトとしていずれも「０」を登録する。
【０１１４】
［ステップＳ２３２］ＤＩＭＭ移動制御部１２２ａは、図１０のステップＳ２２でＩＯ集中領域と判定されたサブＬＵＮ群の中から、第１管理テーブル１２５に登録済みのサブＬＵＮ群を特定する。この特定処理では、第１管理テーブル１２５に登録されているサブＬＵＮ群のうち、ＩＯ集中領域と判定されたサブＬＵＮ群に含まれるサブＬＵＮを１つでも含むサブＬＵＮ群が、ＩＯ集中領域と判定されたサブＬＵＮ群と同一と判定される。
【０１１５】
ＤＩＭＭ移動制御部１２２ａは、特定されたサブＬＵＮ群の先頭サブＬＵＮおよび末尾サブＬＵＮの情報によって、第１管理テーブル１２５に登録済みの対応するレコードを登録する。また、ＤＩＭＭ移動制御部１２２ａは、対応するレコードのうち、タイムアウトが「０」であるレコードの連続数をカウントアップする。
【０１１６】
［ステップＳ２３３］ＤＩＭＭ移動制御部１２２ａは、ステップＳ２３２で特定されたサブＬＵＮ群の中から、データが不揮発ＤＩＭＭに移動していないサブＬＵＮ群を特定する。このとき特定されるサブＬＵＮ群とは、第１管理テーブル１２５のレコードの状態が「未移動」となっているサブＬＵＮ群である。
【０１１７】
［ステップＳ２３４］ＤＩＭＭ移動制御部１２２ａは、ステップＳ２３３で特定されたサブＬＵＮ群の中に、連続数が所定数（例えば「１０」）以上であるサブＬＵＮ群があるかを判定する。ＤＩＭＭ移動制御部１２２ａは、該当するサブＬＵＮ群がある場合、ステップＳ２３５の処理を実行する。一方、該当するサブＬＵＮ群がない場合、図１０のステップＳ２４の処理が実行される。
【０１１８】
［ステップＳ２３５］ＤＩＭＭ移動制御部１２２ａは、ステップＳ２３４で連続数が所定数以上と判定されたサブＬＵＮ群のデータを、ＳＳＤ１０９から不揮発ＤＩＭＭ１０８へ移動するように移動指示部１２３に指示する。この指示は、移動指示部１２３から階層化制御部１３０のデータ移動制御部１３１に通知され、データ移動制御部１３１によってデータの移動処理が実行される。
【０１１９】
ＤＩＭＭ移動制御部１２２ａは、各サブＬＵＮ群のデータ移動の完了通知を移動指示部１２３を介して受信するたびに、第１管理テーブル１２５の対応するレコードに登録された状態を、データが不揮発ＤＩＭＭ１０８へ移動したことを示す「移動済み」に更新する。また、ＤＩＭＭ移動制御部１２２ａは、サブＬＵＮ群ごとに、データ移動を指示してから完了通知を受信するまでにかかった時間を計測し、計測された時間をサブＬＵＮ群に含まれるサブＬＵＮ数で除算した値を、対応するレコードに移動時間として登録する。以上の処理が終了すると、図１０のステップＳ２４の処理が実行される。
【０１２０】
図１２は、ＳＳＤへのデータ移動制御手順の例を示すフローチャートである。この図１２の処理は、図１０のステップＳ２４の処理に対応する。
［ステップＳ２４１］ＳＳＤ移動制御部１２２ｂは、第１管理テーブル１２５に登録されたサブＬＵＮ群の中から、図１０のステップＳ２２でＩＯ集中領域と判定され、かつ、タイムアウトが「１」以上のサブＬＵＮ群を特定する。ここで特定されるサブＬＵＮ群は、ＩＯ集中領域でない（すなわち、ＩＯ集中が終息した）と１回以上連続して判定されたが、今回再度ＩＯ集中領域と判定されたサブＬＵＮ群である。
【０１２１】
［ステップＳ２４２］ＳＳＤ移動制御部１２２ｂは、ステップＳ２４１で特定されたサブＬＵＮ群の中から、タイムアウトの値がＴｃより小さいＩＯ集中領域を特定する。ＳＳＤ移動制御部１２２ｂは、特定されたＩＯ集中領域について、Ｔｃの値をタイムアウトの値によって更新し、さらにタイムアウトの値を「０」にリセットする。このＴｃ更新処理によれば、ＩＯ集中が終息した状態からＩＯ集中が再度発生したサブＬＵＮ群について、この後にデータがＳＳＤ１０９へ移動されるまでの間におけるＴｃの最小値がレコードに登録されるようになる。これにより、判定時間Ｔａの算出精度が向上する。
【０１２２】
［ステップＳ２４３］ＳＳＤ移動制御部１２２ｂは、ステップＳ２４１で特定されたサブＬＵＮ群のうち、ステップＳ２４２で特定されなかったＩＯ集中領域について、タイムアウトの値を「０」にリセットする。
【０１２３】
［ステップＳ２４４］ＳＳＤ移動制御部１２２ｂは、第１管理テーブル１２５に登録されたサブＬＵＮ群の中から、図１０のステップＳ２２でＩＯ集中領域と判定されていないサブＬＵＮ群を特定する。ＳＳＤ移動制御部１２２ｂは、特定されたサブＬＵＮ群について、タイムアウトの値をカウントアップする。
【０１２４】
［ステップＳ２４５］ＳＳＤ移動制御部１２２ｂは、第１管理テーブル１２５に登録されたサブＬＵＮ群の中に、タイムアウトの値がパラメータ記憶部１２７に設定されている判定時間Ｔａに達したサブＬＵＮ群があるかを判定する。ＳＳＤ移動制御部１２２ｂは、該当するサブＬＵＮ群がある場合、ステップＳ２４６の処理を実行する。一方、該当するサブＬＵＮ群がない場合、図１０のステップＳ２５の処理が実行される。
【０１２５】
［ステップＳ２４６］ＳＳＤ移動制御部１２２ｂは、ステップＳ２４５でタイムアウトの値が判定時間Ｔａに達したと判定されたサブＬＵＮ群のデータを、不揮発ＤＩＭＭ１０８からＳＳＤ１０９へ移動するように移動指示部１２３に指示する。この指示は、移動指示部１２３から階層化制御部１３０のデータ移動制御部１３１に通知され、データ移動制御部１３１によってデータの移動処理が実行される。
【０１２６】
［ステップＳ２４７］ＳＳＤ移動制御部１２２ｂは、各サブＬＵＮ群のデータ移動の完了通知を移動指示部１２３を介して受信するたびに、次の処理を実行する。
ＳＳＤ移動制御部１２２ｂは、データ移動が完了したサブＬＵＮ群に対応するレコードを第２管理テーブル１２６に新規登録する。ＳＳＤ移動制御部１２２ｂは、登録したレコードにおいて、先頭サブＬＵＮ、末尾サブＬＵＮ、連続数、登録時刻、Ｔｃおよび移動時間として、第１管理テーブル１２５における同じサブＬＵＮ群に対応するレコードの同じ項目に登録された情報をコピーする。また、ＳＳＤ移動制御部１２２ｂは、登録したレコードにおいて、現在時刻から判定時間Ｔａを減算した時刻を、終息時刻として登録する。さらに、ＳＳＤ移動制御部１２２ｂは、登録したレコードにおいて、Ｔｂとして初期値「０」を登録する。また、ＳＳＤ移動制御部１２２ｂは、以上のように第２管理テーブル１２６のレコードの登録処理が完了すると、第１管理テーブル１２５からデータ移動が完了したサブＬＵＮ群に対応するレコードを削除する。
【０１２７】
この後、図１０のステップＳ２５の処理が実行される。
図１３は、データがＳＳＤに移動したサブＬＵＮ群の監視処理手順の例を示すフローチャートである。この図１３の処理は、図１０のステップＳ２５の処理に対応する。
【０１２８】
［ステップＳ２５１］ＳＳＤ移動制御部１２２ｂは、第２管理テーブル１２６に登録されたサブＬＵＮ群の中から、現在時刻と終息時刻との差が現在設定されている監視時間Ｔｍａｘ以下であるサブＬＵＮ群を特定する。
【０１２９】
［ステップＳ２５２］ＳＳＤ移動制御部１２２ｂは、ステップＳ２５１で特定されたサブＬＵＮ群の中に、図１０のステップＳ２２でＩＯ集中領域と判定されたサブＬＵＮ群があるかを判定する。ＳＳＤ移動制御部１２２ｂは、該当するサブＬＵＮ群がある場合、ステップＳ２５３の処理を実行し、該当するサブＬＵＮ群がない場合、ステップＳ２５４の処理を実行する。
【０１３０】
［ステップＳ２５３］ＳＳＤ移動制御部１２２ｂは、ステップＳ２５１で特定されたサブＬＵＮ群のうち、図１０のステップＳ２２でＩＯ集中領域と判定されたサブＬＵＮ群のそれぞれについて、次の処理を実行する。ＳＳＤ移動制御部１２２ｂは、現在時刻から、
パラメータ記憶部１２７に設定されている判定時間Ｔａを減算して、Ｔｂ＿ｃｕｒを算出する。ＳＳＤ移動制御部１２２ｂは、算出されたＴｂ＿ｃｕｒと、第２管理テーブル１２６の対応するレコードに登録されているＴｂのうち、大きい方の値によって、レコードのＴｂを更新する。
【０１３１】
このステップＳ２５３では、第２管理テーブル１２６に登録されたサブＬＵＮ群のうち、ＤＩＭＭ移動制御部１２２ａによって再度ＩＯ集中領域と判定されたサブＬＵＮ群について、Ｔｂが更新される。
【０１３２】
［ステップＳ２５４］ＳＳＤ移動制御部１２２ｂは、第２管理テーブル１２６に登録されたサブＬＵＮ群の中に、現在時刻と終息時刻との差がパラメータ記憶部１２７に設定されている監視時間Ｔｍａｘと一致するサブＬＵＮ群があるかを判定する。ＳＳＤ移動制御部１２２ｂは、該当するサブＬＵＮ群がある場合、そのサブＬＵＮ群を処理対象としてステップＳ２５５の処理を実行する。一方、該当するサブＬＵＮ群がない場合には、図１０のステップＳ２６の処理が実行される。
【０１３３】
［ステップＳ２５５］ＳＳＤ移動制御部１２２ｂは、処理対象のサブＬＵＮ群に対応する第２管理テーブル１２６のレコードを参照し、Ｔｂが初期値「０」の場合には、Ｔｂを「−１」に更新する。この処理によれば、第２管理テーブル１２６に登録されたサブＬＵＮ群の中から、ＩＯ集中の終息から監視時間Ｔｍａｘが経過した時点でＩＯ集中が再度発生していないサブＬＵＮ群が、Ｔｂ＝−１によって識別可能になる。
【０１３４】
この後、図１０のステップＳ２６の処理が実行される。
図１４は、Ｔａ更新処理手順の第１の例を示すフローチャートである。この図１４では、前述の「第１の方法」を用いて判定時間Ｔａを更新する場合について示す。
【０１３５】
［ステップＳ４１］パラメータ更新部１２２ｃは、第２管理テーブル１２６から、直近６０分に対応するレコードを特定する。例えば、パラメータ更新部１２２ｃは、終息時刻が直近６０分の期間に含まれるレコードを特定する。
【０１３６】
［ステップＳ４２］パラメータ更新部１２２ｃは、特定された各レコードからＴａ＋Ｔｂを算出する。ただし、パラメータ更新部１２２ｃは、Ｔｂ＝−１のレコードからは計算を行わない。パラメータ更新部１２２ｃは、算出されたＴａ＋Ｔｂを合計することでＳｕｍ（Ｔａ＋Ｔｂ）を算出する。また、パラメータ更新部１２２ｃは、特定された各レコードのＴｃを合計することでＳｕｍ（Ｔｃ）を算出する。
【０１３７】
さらに、パラメータ更新部１２２ｃは、特定されたレコードのうち、Ｔｂ＝−１であるレコード以外のレコードの数を、Ｔｂ回数として算出する。また、パラメータ更新部１２２ｃは、特定されたレコードのうち、Ｔｃとして「０」以外の値が登録されているレコードの数を、Ｔｃ回数として算出する。また、パラメータ更新部１２２ｃは、特定されたレコードのうち、Ｔｂ＝−１であるレコードの数を、回数Ｎとして算出する。
【０１３８】
［ステップＳ４３］パラメータ更新部１２２ｃは、ステップＳ４２での算出結果を用いて、前述の式（１）にしたがって判定時間Ｔａを算出し、算出された判定時間Ｔａによってパラメータ記憶部１２７に設定されている判定時間Ｔａを更新する。
【０１３９】
［ステップＳ４４］パラメータ更新部１２２ｃは、一定時間（本実施の形態では、６０分）スリープし、その後にステップＳ４１の処理を再実行する。
図１５は、Ｔａ更新処理手順の第２の例を示すフローチャートである。この図１５では、前述の「第２の方法」を用いて判定時間Ｔａを更新する場合について示す。図１５の処理では、図１４に示したステップＳ４２，Ｓ４３の代わりにステップＳ４２ａ，Ｓ４３ａが実行される。
【０１４０】
［ステップＳ４２ａ］パラメータ更新部１２２ｃは、ステップＳ４１で特定された各レコードからＴａ＋Ｔｂを算出する。ただし、パラメータ更新部１２２ｃは、Ｔｂ＝−１のレコードからは計算を行わない。パラメータ更新部１２２ｃは、算出されたＴａ＋Ｔｂのうちの最大値（Ｍａｘ（Ｔａ＋Ｔｂ））をＴａ１として算出する。また、パラメータ更新部１２２ｃは、特定された各レコードのＴｃのうちの最大値（Ｍａｃ（Ｔｃ））をＴａ２として算出する。
【０１４１】
［ステップＳ４３ａ］パラメータ更新部１２２ｃは、Ｔａ１とＴａ２のうちの大きい方（Ｍａｘ（Ｔａ１，Ｔａ２））によって、パラメータ記憶部１２７に設定されている判定時間Ｔａを更新する。
【０１４２】
図１６は、Ｔｍａｘ更新処理手順の例を示すフローチャートである。
［ステップＳ６１］パラメータ更新部１２２ｃは、第２管理テーブル１２６から、直近２４時間に対応するレコードを特定する。例えば、パラメータ更新部１２２ｃは、終息時刻が直近２４時間の期間に含まれるレコードを特定する。
【０１４３】
［ステップＳ６２］パラメータ更新部１２２ｃは、特定された各レコードから、サブＬＵＮ群に含まれるサブＬＵＮ数を算出する。サブＬＵＮ数は、末尾サブＬＵＮの値から先頭サブＬＵＮの値を減算することで算出される。パラメータ更新部１２２ｃは、算出されたサブＬＵＮ数を平均して、平均サブＬＵＮ数ａｖｅ＿ｎｕｍを算出する。
【０１４４】
また、パラメータ更新部１２２ｃは、特定された各レコードについて、移動時間をサブＬＵＮ群に含まれるサブＬＵＮ数によって除算して、サブＬＵＮ当たりのデータ移動時間を算出する。パラメータ更新部１２２ｃは、算出されたデータ移動時間を平均して、サブＬＵＮ当たりの平均データ移動時間ａｖｅ＿ｍｉｇを算出する。
【０１４５】
［ステップＳ６３］パラメータ更新部１２２ｃは、前述の式（３）にしたがって、監視時間Ｔｍａｘの上限値Ｔｍａｘ＿ｕｐｐｅｒを算出する。
［ステップＳ６４］パラメータ更新部１２２ｃは、特定された各レコードに対応するサブＬＵＮ群を、それぞれ共通のサブＬＵＮを含むサブＬＵＮ群の組み合わせに区分する。なお、共通のサブＬＵＮを含むサブＬＵＮ群は、同一サブＬＵＮ群と判別される。パラメータ更新部１２２ｃは、区分されたサブＬＵＮ群の組み合わせごとに、ＩＯ集中が終息してから再発生するまでの最大時間を算出する。この算出は、次のような手順で行われる。
【０１４６】
パラメータ更新部１２２ｃは、サブＬＵＮ群の組み合わせのレコードを終息時刻の順番で並べたときに、あるレコードに登録された終息時刻と次のレコードに登録された登録時刻との差分を、ＩＯ集中が終息してから再発生するまでの時間として算出する。パラメータ更新部１２２ｃは、このようにしてサブＬＵＮ群の組み合わせから算出された時間のうち最大時間を求める。これにより、サブＬＵＮ群の組み合わせごとに最大時間が算出される。
【０１４７】
［ステップＳ６５］パラメータ更新部１２２ｃは、ステップＳ６４でサブＬＵＮ群の組み合わせごとに算出された最大時間のうち最大の値を、最大値Ｔｍａｘ＿ｔｅｍｐに設定する。
【０１４８】
［ステップＳ６６］パラメータ更新部１２２ｃは、上限値Ｔｍａｘ＿ｕｐｐｅｒと最大値Ｔｍａｘ＿ｔｅｍｐのうち小さい方の値によって、パラメータ記憶部１２７に設定されている監視時間Ｔｍａｘを更新する。
【０１４９】
［ステップＳ６７］パラメータ更新部１２２ｃは、一定時間（本実施の形態では、２４時間）スリープし、その後にステップＳ６１の処理を再実行する。
以上の監視時間Ｔｍａｘの更新処理によれば、判定時間Ｔａの算出精度をある程度維持しながら、ＩＯ集中が終息したサブＬＵＮ群におけるワークロードの監視処理負荷を抑制できる。
【０１５０】
例えば、ＩＯ集中の終息から再発生までの時間間隔が長く、Ｔｍａｘ＿ｕｐｐｅｒ＜Ｔｍａｘ＿ｔｅｍｐとなるようなケースでは、監視時間Ｔｍａｘは上限値Ｔｍａｘ＿ｕｐｐｅｒを超えないように小さい値に抑制される。これにより、ユーザＩＯが集中していない期間が長いにもかかわらずワークロードの監視が長時間行われ、プロセッサ１０１やＲＡＭ１０２などのリソースが浪費されることを防止できる。
【０１５１】
一方、ＩＯ集中の終息から再発生までの時間間隔が短く、Ｔｍａｘ＿ｕｐｐｅｒ＞Ｔｍａｘ＿ｔｅｍｐとなるようなケースでは、監視時間Ｔｍａｘは最大値Ｔｍａｘ＿ｔｅｍｐに設定される。これにより、判定時間Ｔａの算出精度を重視した更新処理が行われる。このケースでは、最大値Ｔｍａｘ＿ｔｅｍｐが大きくなったとしても、監視時間Ｔｍａｘが経過するよりずっと前のタイミングでＩＯ集中が再発生する可能性が高いので、監視処理負荷は増大しない。
【０１５２】
図１７は、データ移動制御部の処理手順の例を示すフローチャートである。
［ステップＳ８１］データ移動制御部１３１は、移動指示部１２３からデータ移動指示を受信すると、ステップＳ８２の処理を実行する。
【０１５３】
［ステップＳ８２］データ移動制御部１３１は、指示されたデータ移動が不揮発ＤＩＭＭ１０８への移動であるかを判定する。データ移動制御部１３１は、不揮発ＤＩＭＭ１０８へのデータ移動が指示された場合、ステップＳ８３の処理を実行し、ＳＳＤ１０９へのデータ移動が指示された場合、ステップＳ８４の処理を実行する。
【０１５４】
［ステップＳ８３］データ移動制御部１３１は、不揮発ＤＩＭＭ１０８の空き領域からデータの移動先領域を確保して、ＳＳＤ１０８から不揮発ＤＩＭＭ１０８へのデータ転送のための指示をドライバ１４１，１４２に出力する。また、データ移動制御部１３１は、データ移動が完了すると、完了通知を移動指示部１２３に通知する。これとともに、データ移動制御部１３１は、階層テーブル１３３のレコードのうち、データ移動を行ったサブＬＵＮに対応するレコードにおいて、データの移動先領域を示すＤＩＭＭオフセットを登録し、ＳＳＤオフセットを削除する。
【０１５５】
［ステップＳ８４］データ移動制御部１３１は、ＳＳＤ１０９の空き領域からデータの移動先領域を確保して、不揮発ＤＩＭＭ１０８からＳＳＤ１０８へのデータ転送のための指示をドライバ１４１，１４２に出力する。また、データ移動制御部１３１は、データ移動が完了すると、完了通知を移動指示部１２３に通知する。これとともに、データ移動制御部１３１は、階層テーブル１３３のレコードのうち、データ移動を行ったサブＬＵＮに対応するレコードにおいて、データの移動先領域を示すＳＳＤオフセットを登録し、ＤＩＭＭオフセットを削除する。
【０１５６】
なお、上記の各実施の形態に示した装置（例えば、情報処理装置１，１００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１５７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１５８】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【符号の説明】
【０１５９】
１  情報処理装置
１ａ  記憶部
１ｂ  制御部
２  論理記憶領域
３ａ，３ｂ  記憶装置
４  タイムチャート
Ｒ１〜Ｒ３  領域
Ｔ１，Ｔ２  設定時間
【図１】
2018156423.tif 000003
【図２】
2018156423.tif 000004
【図３】
2018156423.tif 000005
【図４】
2018156423.tif 000006
【図５】
2018156423.tif 000007
【図６】
2018156423.tif 000008
【図７】
2018156423.tif 000009
【図８】
2018156423.tif 000010
【図９】
2018156423.tif 000011
【図１０】
2018156423.tif 000012
【図１１】
2018156423.tif 000013
【図１２】
2018156423.tif 000014
【図１３】
2018156423.tif 000015
【図１４】
2018156423.tif 000016
【図１５】
2018156423.tif 000017
【図１６】
2018156423.tif 000018
【図１７】
2018156423.tif 000019