JP2017129988A - バッチ制御システム、バッチ制御プログラム、及びバッチ制御方法 - Google Patents
バッチ制御システム、バッチ制御プログラム、及びバッチ制御方法 Download PDFInfo
- Publication number
- JP2017129988A JP2017129988A JP2016008243A JP2016008243A JP2017129988A JP 2017129988 A JP2017129988 A JP 2017129988A JP 2016008243 A JP2016008243 A JP 2016008243A JP 2016008243 A JP2016008243 A JP 2016008243A JP 2017129988 A JP2017129988 A JP 2017129988A
- Authority
- JP
- Japan
- Prior art keywords
- batch
- processing
- resource usage
- server
- resource
- 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.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】仮想計算機のリソースの確保に応じて、バッチ処理を実行する技術を提供する。
【解決手段】第1仮想計算機による第1バッチ処理の実行の際のリソース使用量と処理時間を監視して、最大リソース使用量と最大処理時間を取得する監視部と、最大リソース使用量と最大処理時間との傾向から、第1仮想計算機による第2バッチ処理の実行の際のリソース使用量と処理時間とを予測する予測部と、予測されたリソース使用量と予測された処理時間とに応じて、第2バッチ処理の実行を制御する制御部と、を備えるバッチ制御システムにより、上記課題の解決を図る。
【選択図】図3
【解決手段】第1仮想計算機による第1バッチ処理の実行の際のリソース使用量と処理時間を監視して、最大リソース使用量と最大処理時間を取得する監視部と、最大リソース使用量と最大処理時間との傾向から、第1仮想計算機による第2バッチ処理の実行の際のリソース使用量と処理時間とを予測する予測部と、予測されたリソース使用量と予測された処理時間とに応じて、第2バッチ処理の実行を制御する制御部と、を備えるバッチ制御システムにより、上記課題の解決を図る。
【選択図】図3
Description
本明細書は、バッチ制御システム、バッチ制御プログラム、及びバッチ制御方法に関する。
近年、仮想化技術を活用したシステム構築の普及に伴い、オンデマンドで仮想サーバを追加し、システムの処理能力を増強することができる。
システム処理はオンライン処理とバッチ処理に大別される。オンライン処理は即座に処理を稼動・完了して結果を送り返す方式を指す。それに対して、バッチ処理は蓄積された複数件のデータを、定期的に一括処理する方式であり、オンライン処理とは異なり、ユーザとの対話なく処理が進められる。
バッチ処理はスケジュールに基づき、同一サーバ上で複数のバッチ処理を順次稼動する方法が主流である。しかしシステムを運用していくうちに、以下のような状況が発生することが予想される。
(状況1)バッチ処理量が日々増加すると、予定時間内にバッチ処理が完了せず、終了時間が延長される。この状態のまま次のバッチ処理開始時刻が到来すると、複数のバッチ処理を並行して稼動する状況が発生し、「リソース使用量」がサーバの許容量を超過する。
(状況2)また、オンライン処理等のバッチ処理以外のサーバ処理が日々増加すると、もともと並行稼動が予定されていたバッチ処理が稼動する度に、「リソース使用量」がサーバの許容量を超過する。
上記のような「リソース使用量」がサーバの許容量を超過する状態では、バッチ処理稼働中にCentral Processing Unit(CPU)の取り合いが発生するなどして、サーバ全体のパフォーマンスが低下する。その結果バッチ処理時間が増加し、全てのバッチ処理が予定時間内に終了できないといった課題が発生する。また、一番負荷のかかるバッチ処理に合わせてサーバをサイジングすると、ピーク時以外は空きリソースが多いサーバが存在するという課題がある。
バッチ処理量が増加した場合に発生する課題をリソースグラフで説明する。
図1は、状況1についてのリソースグラフを示す。リソースグラフは横軸が時間、縦軸が「リソース使用量」を示している。以下では、「CPU使用率」や「メモリ使用量」、「ディスク使用帯域」を含め、「リソース使用量」として記載するが、CPUの「リソース使用量」の場合は、「CPU使用率」を意味する。
図1は、状況1についてのリソースグラフを示す。リソースグラフは横軸が時間、縦軸が「リソース使用量」を示している。以下では、「CPU使用率」や「メモリ使用量」、「ディスク使用帯域」を含め、「リソース使用量」として記載するが、CPUの「リソース使用量」の場合は、「CPU使用率」を意味する。
また、グラフ中の実線は各処理の「リソース使用量」、破線が「リソース使用量」の合計を示している。ここでは同一仮想サーバ上でバッチA、バッチB、バッチCが順に稼動が予定されており、オンライン処理などのバッチ処理以外のサーバ処理も稼動しているものとする。
図1(A)の通常時では、「リソース使用量」の合計が仮想サーバの許容量である100%を下回っている。図1(B)のバッチ処理量が増加した場合では、バッチAの処理量が日々増加し、予定時間内にバッチAの処理が完了せず、終了時間が延長している場合を示している。その結果、バッチB稼働中にバッチAも稼動する状況が発生し、「リソース使用量」が仮想サーバの許容量である100%を超過するため、仮想サーバの全体のパフォーマンスが低下し、予定終了時刻にバッチ処理が終了しないといった課題が発生する。
図2は、状況2についてのリソースグラフを示す。バッチ処理が稼動する状況は図1の場合と同様のものとする。図2の通常時では、「リソース使用量」の合計が仮想サーバの許容量である100%を下回っている。図2のバッチ処理以外のサーバ処理量が増加した場合では、オンライン処理等のバッチ処理以外のサーバ処理が日々増加し、「リソース使用量」が全体的に増加している場合を示している。その結果、バッチA、バッチB、バッチCが稼動するたびに「リソース使用量」が仮想サーバの許容量である100%を超過するため、仮想サーバの全体のパフォーマンスが低下し、予定終了時刻にバッチ処理が終了しないといった課題が発生する。
上記の課題を解決する為に、例えば第1の技術(例えば、特許文献1)、第2の技術(例えば、特許文献2)が提案されている。
第1の技術では、バッチ処理を起動した後に、現在のバッチ処理の進捗から単位時間当たりの処理件数を算出し、バッチ処理の終了予想時刻を予測する。バッチ処理の終了予想時間が、本来予定されていたバッチ処理の終了予定時刻を超える場合、オンライン実行基盤の処理要求を制限するか他のオンライン実行基盤に移動させることにより、バッチ実行基盤をスケールアップさせる。
第2の技術では、バッチ処理で扱うデータを、全てロット単位でデータをグルーピングし、ロット単位のデータに対して行う。稼動中のバッチ処理の処理進捗率(=累計処理件数/全処理対象件数)と必要進捗率(=累計処理時間/要求処理時間)を比較し、遅延が発生していると判断すると、所定の処理によりスケールアウトを実施し、遅延回復に必要なリソースを確保することで処理遅延を回復させる。
第1の技術、第2の技術では、バッチ稼動中に現在のバッチ処理の進捗状況から構成変更(スケールアップまたはスケールアウト)を判断・実施している。しかしながら、いずれも日々のバッチ処理の増加傾向を考慮していないことと、バッチ稼動中に構成変更を判断・実施していることから、以下の場合において課題が残るため、上述の課題は解決できていない。
・第1の技術:スケールアップで追加できるリソースは物理的なリソースが上限となり、物理サーバの上限を超えるリソースが必要となった場合には適応できないといった課題がある。
・第2の技術:バッチ稼動中のスケールアウトはレコード(データ)単位に処理が完結するバッチ処理に限定される。しかし、複数テーブルや複数レコードにまたがった更新処理が発生するバッチ処理は単体の仮想サーバで稼動する必要があり、バッチ処理稼動中のスケールアウトはできない。そのため、複数テーブルや複数レコードにまたがった更新処理が発生するバッチ処理を行う場合には適応できないといった課題がある。
・第1の技術:スケールアップで追加できるリソースは物理的なリソースが上限となり、物理サーバの上限を超えるリソースが必要となった場合には適応できないといった課題がある。
・第2の技術:バッチ稼動中のスケールアウトはレコード(データ)単位に処理が完結するバッチ処理に限定される。しかし、複数テーブルや複数レコードにまたがった更新処理が発生するバッチ処理は単体の仮想サーバで稼動する必要があり、バッチ処理稼動中のスケールアウトはできない。そのため、複数テーブルや複数レコードにまたがった更新処理が発生するバッチ処理を行う場合には適応できないといった課題がある。
また、上述の課題を解決する為に、SQLなどの特定のバッチ処理に特化した技術も考えられるが、SQL以外のバッチ処理には適応できないといった課題がある。
本発明の一側面では、仮想計算機のリソースの確保に応じて、バッチ処理を実行する技術を提供する。
本発明の一側面に係るバッチ制御システムは、監視部と、予測部と、制御部とを含む。監視部は、第1仮想計算機による第1バッチ処理の実行の際のリソース使用量と処理時間を監視して、最大リソース使用量と最大処理時間を取得する。予測部は、最大リソース使用量と最大処理時間の傾向から、第1仮想計算機による第2バッチ処理の実行の際のリソース使用量と処理時間とを予測する。制御部は、予測されたリソース使用量と予測された処理時間とに応じて、第2バッチ処理の実行を制御する。
本発明の一側面によれば、仮想計算機のリソースの確保に応じて、バッチ処理を実行することができる。
本実施形態では、以下のような仮想化環境に適した動的なバッチ制御方式を提案する。本実施形態では、仮想サーバの「リソース閾値」を事前に定義しておき、以下の処理をS0から順に実施する。
(S0)予測「リソース使用量」の算出
バッチ稼働中における「最大リソース使用量」と「最大処理時間」を記録し、記録した「最大リソース使用量」と「最大処理時間」の傾向から次回のバッチ稼動時における「予測リソース使用量」と「予測処理時間」を算出する。同様に、バッチ処理以外のサーバ処理の「リソース使用量」記録し、記録した「リソース使用量」の傾向からバッチ処理以外のサーバ処理の「予測リソース使用量」を算出する。
バッチ稼働中における「最大リソース使用量」と「最大処理時間」を記録し、記録した「最大リソース使用量」と「最大処理時間」の傾向から次回のバッチ稼動時における「予測リソース使用量」と「予測処理時間」を算出する。同様に、バッチ処理以外のサーバ処理の「リソース使用量」記録し、記録した「リソース使用量」の傾向からバッチ処理以外のサーバ処理の「予測リソース使用量」を算出する。
(S1)バッチ起動判断
対象バッチ処理の「起動時刻」が到来した際、対象バッチ処理の「予測処理時間」の範囲において、対象バッチ処理と、他のバッチ処理と、バッチ処理以外のサーバ処理の「予測リソース使用量」の合計が「リソース閾値」内で収まるか否かを判定する。「予測リソース使用量」の合計が「リソース閾値」内で収まる場合はバッチ処理を起動させる。「予測リソース使用量」の合計が「リソース閾値」内で収まらない場合は、S2の処理を実施する。
対象バッチ処理の「起動時刻」が到来した際、対象バッチ処理の「予測処理時間」の範囲において、対象バッチ処理と、他のバッチ処理と、バッチ処理以外のサーバ処理の「予測リソース使用量」の合計が「リソース閾値」内で収まるか否かを判定する。「予測リソース使用量」の合計が「リソース閾値」内で収まる場合はバッチ処理を起動させる。「予測リソース使用量」の合計が「リソース閾値」内で収まらない場合は、S2の処理を実施する。
(S2)リソースに余裕のある他の仮想サーバに切り替え
仮想基盤連携部にて、同じ物理サーバ内からリソースに余裕のある仮想サーバを検索し、リソースに余裕のある仮想サーバが存在する場合、バッチ処理を、そのリソースに余裕のある仮想サーバに切り替えて、S1の処理を実施する。リソースに余裕のある仮想サーバが存在しない場合は、S3の処理を実施する。
仮想基盤連携部にて、同じ物理サーバ内からリソースに余裕のある仮想サーバを検索し、リソースに余裕のある仮想サーバが存在する場合、バッチ処理を、そのリソースに余裕のある仮想サーバに切り替えて、S1の処理を実施する。リソースに余裕のある仮想サーバが存在しない場合は、S3の処理を実施する。
(S3)スケールアップにてリソースを増強
同じ物理サーバ内から空きリソースを検索し、空きリソースが存在する場合、全仮想化基盤管理と連携し、バッチ処理を起動させる仮想サーバをスケールアップによってリソース増強して、S1の処理を実施する。空きリソースが存在しない場合は、S4の処理を実施する。
同じ物理サーバ内から空きリソースを検索し、空きリソースが存在する場合、全仮想化基盤管理と連携し、バッチ処理を起動させる仮想サーバをスケールアップによってリソース増強して、S1の処理を実施する。空きリソースが存在しない場合は、S4の処理を実施する。
(S4)スケールアウトにてリソースを増強
他の物理サーバ内から空きリソースを検索し、空きリソースが存在する場合、全仮想化基盤管理と連携してスケールアウトによって他の物理サーバ上にバッチ処理を起動させる仮想サーバを新設する。さらにバッチ処理を起動させる仮想サーバをその新設した仮想サーバに切り替えた後、S1の処理を実施する。その後、バッチ処理が起動しない場合は管理者に異常を通知する。
他の物理サーバ内から空きリソースを検索し、空きリソースが存在する場合、全仮想化基盤管理と連携してスケールアウトによって他の物理サーバ上にバッチ処理を起動させる仮想サーバを新設する。さらにバッチ処理を起動させる仮想サーバをその新設した仮想サーバに切り替えた後、S1の処理を実施する。その後、バッチ処理が起動しない場合は管理者に異常を通知する。
また、S4の処理中において、他の物理サーバ内から空きリソースを検索し、リソースに余裕のある仮想サーバが存在しない場合も管理者に異常を通知する。
本実施形態では、バッチ処理全般に対してバッチ起動前に必要な「リソース使用量」を予測し、バッチ単位ごとに構成変更(スケールアップ、スケールアウト)を判断・実施する。そのため、バッチ処理起動時には単体の物理サーバ上にて、処理完了に必要なリソースが確保された仮想サーバ環境でバッチ処理が稼動される。そのため、仮想サーバの許容量を超えることなくバッチ処理を完了できる。加えて、以下の課題を解決できる。
本実施形態では、バッチ稼動状況予測部(後述するバッチ予測部)において、OSの部を利用して「リソース使用量」の予測を実現しており、SQLなどの特定ソフトウェアに依存した「リソース使用量」の予測は行っていない。そのため、バッチ処理の種類は問わず、バッチ処理全般に対して「リソース使用量」の予測を行うことができる。上記の結果から、本実施形態はSQL以外のバッチ処理全般に対して、上記課題を解決できる。
また、本実施形態ではスケールアップによって必要なリソースの確保が実施できなかった場合、スケールアウトを実施するので、物理サーバの上限を超えるリソースが必要となった場合にも適応できる。上記の結果から、バッチ処理稼動中のリソースの取り合いによるパフォーマンス低下を防ぐことができ、バッチ処理が予定時間内に終了できないといった課題を解決することができる。
また、本実施形態では単体の仮想サーバ上にて、処理完了に必要なリソースが確保された仮想サーバ環境でバッチ処理が稼動される。そのため、単体の仮想サーバ上でしか処理が稼動できない、複数テーブルや複数レコードにまたがった更新処理が発生するバッチ処理にも適応できる。上記の結果から、バッチ処理稼動中のリソースの取り合いによるパフォーマンス低下を防ぐことができ、バッチ処理が予定時間内に終了できないといった課題を解決することができる。
さらに、本実施形態を適用することで、特定のバッチ処理ピーク時に合わせた仮想サーバのサイジングが不必要になるとともに、ピーク時以外の空きリソースを他のバッチ処理に活用することが可能となる。その結果、仮想化基盤全体でリソースをより有効活用できる。
図3は、本実施形態におけるバッチ制御システムの一例を示す。バッチ制御システム1は、監視部2と、予測部3と、制御部4とを含む。バッチ制御システム1の一例として、後述するサーバシステム11が挙げられる。
監視部2は、第1仮想計算機による第1バッチ処理の実行の際のリソース使用量と処理時間を監視して、最大リソース使用量と最大処理時間を取得する。監視部2は、一例として、後述するバッチ監視部21bを含む。
予測部3は、最大リソース使用量と最大処理時間の傾向から、第1仮想計算機による第2バッチ処理の実行の際のリソース使用量と処理時間とを予測する。予測部3は、一例として、後述するバッチ予測部21cを含む。
制御部4は、予測されたリソース使用量と予測された処理時間とに応じて、第2バッチ処理の実行を制御する。制御部4の一例として、後述するバッチ起動判定部21dが挙げられる。
このように構成することにより、仮想計算機のリソースの確保に応じて、バッチ処理を実行することができる。
監視部2は、さらに第1バッチ処理以外の第1仮想計算機による第1処理で用いるリソース使用量を監視する。監視部2は、一例として、後述するサーバ監視部21hを含む。
予測部3は、第1処理で用いるリソース使用量の傾向から、第2バッチ処理時における第1処理で用いるリソース使用量を予測する。予測部3は、一例として、後述するサーバ予測部21iを含む。
制御部4は、第2バッチ処理の起動時刻が到来した際に、次の処理を行う。すなわち、制御部4は、予測された処理時間において実行される、第2バッチ処理と、第2バッチ処理以外の他のバッチ処理と、非バッチ処理とのそれぞれで用いるリソース使用量の合計が閾値より小さい場合、第2バッチ処理を起動させる。
このように構成することにより、第1仮想計算機のリソースの許容量を超えない範囲で、第2バッチ処理を実行することができる。
バッチ制御システムは、さらに、切替部5を含む。切替部5は、リソース使用量の合計が閾値以上である場合、第1仮想計算機を含む第1物理計算機内からリソースに余裕のある第2仮想計算機を検索する。切替部5は、第2仮想計算機が存在する場合、第2バッチ処理を起動させる仮想計算機を第1仮想計算機から第2仮想計算機に切り替える。切替部5の一例として、後述する連携管理部21eが挙げられる。
このように構成することにより、第2バッチ処理を起動させる仮想計算機をリソースに余裕のある他の仮想計算機に切り替えることができる。
バッチ制御システムは、さらに、スケールアップ調整部6を含む。スケールアップ調整部6は、第2仮想計算機が存在しない場合、第1物理計算機内から空きリソースを検索する。スケールアップ調整部6は、第1物理計算機に空きリソースが存在する場合、第2バッチ処理を起動させる第1仮想計算機に空きリソースを融通する。スケールアップ調整部6の一例として、後述する連携管理部(スケールアップ)21fが挙げられる。
このように構成することにより、スケールアップにてリソースを増強することができる。
バッチ制御システムは、さらに、スケールアウト調整部7を含む。
スケールアウト調整部7は、第1物理計算機に空きリソースが存在しない場合、他の物理計算機内から空きリソースを検索する。スケールアウト調整部7は、他の物理計算機のいずれかである第2物理計算機に空きリソースが存在する場合、第2物理計算機上に第2バッチ処理を起動させる第3仮想計算機を追加する。スケールアウト調整部7は、第2バッチ処理を起動させる仮想サーバを第1仮想計算機から第3仮想計算機に切り替える。スケールアウト調整部7の一例として、後述するスケールアウト調整部7が挙げられる。
スケールアウト調整部7は、第1物理計算機に空きリソースが存在しない場合、他の物理計算機内から空きリソースを検索する。スケールアウト調整部7は、他の物理計算機のいずれかである第2物理計算機に空きリソースが存在する場合、第2物理計算機上に第2バッチ処理を起動させる第3仮想計算機を追加する。スケールアウト調整部7は、第2バッチ処理を起動させる仮想サーバを第1仮想計算機から第3仮想計算機に切り替える。スケールアウト調整部7の一例として、後述するスケールアウト調整部7が挙げられる。
このように構成することにより、スケールアウトにてリソースを増強することができる。
スケールアウト調整部7は、他の物理計算機のいずれにも空きリソースが存在しない場合、または、第2バッチ処理を起動させる仮想サーバを前記第1仮想計算機から第3仮想計算機に切り替えた後に第2バッチが起動しない場合、異常である旨を通知する。
このように構成することにより、運用者にリソース不足を通知することができる。
このように構成することにより、運用者にリソース不足を通知することができる。
以下に本実施形態について詳述する。
図4は、本実施形態におけるサーバシステムの全体構成を示す。本実施形態における仮想計算機でのバッチ制御方式は、図4に示すサーバシステム11により実現される。
図4は、本実施形態におけるサーバシステムの全体構成を示す。本実施形態における仮想計算機でのバッチ制御方式は、図4に示すサーバシステム11により実現される。
サーバシステム11は、複数台の物理サーバ14と、全仮想化基盤管理12とを含む。複数台の物理サーバ14は、ネットワーク13に接続される。全仮想化基盤管理12は、ネットワーク13上で接続されている全ての物理サーバ14上の仮想化基盤管理(ハイパーバイザ)15を管理する。なお、ネットワーク13は、インターネット、Local Area Network(LAN)等の通信ネットワークを含む。
ハイパーバイザ15は、自身が配備されている物理サーバ14上に存在する全ての仮想サーバ16を管理する。ハイパーバイザ15によりCPU、メモリなどのリソースが仮想的に提供されるため、物理サーバ14上には複数台の仮想サーバ16が存在することができる。また、物理サーバ14上には空きリソース17が存在しても良い。
図5は、本実施形態における仮想サーバ16のブロック図を示す。仮想サーバ16は、仮想的に、主記憶装置23、二次記憶装置22、ネットワークインタフェース24、およびCPU21を含む。主記憶装置23、二次記憶装置22、ネットワークインタフェース24、およびCPU21が互いに接続されている。
ネットワークインタフェース24は、仮想サーバがネットワーク13に接続するためのインタフェースである。
CPU21は二次記憶装置22から主記憶装置23にロードされたプログラムを稼動する演算処理装置である。CPU21が実行するプログラムは、ネットワークを介して取得されてもよいし、可搬型メモリ装置やCD−ROM等のコンピュータ読み取り可能な可搬型記録媒体が物理サーバ15の読出装置に装着されることにより取得されてもよい。
主記憶装置23は、CPU21によって稼動されるプログラムおよびプログラムの稼動に必要なデータを二次記憶装置22からロードする記憶装置である。二次記憶装置22は、仮想サーバ16に割り当てられたバッチ処理が使用するバッチモジュールや、主記憶装置23によってCPU21で稼動された演算結果などを格納する記憶媒体である。
図6は、本実施形態における仮想サーバの機能を説明するための図である。CPU21は、本実施形態にかかる、主記憶装置23にロードされたプログラムを読み出すことにより、バッチ管理部31、サーバリソース管理部32、仮想基盤連携部33として機能する。
バッチ管理部31は、バッチ処理に必要な「リソース使用量」を予測して構成変更を判断する。サーバリソース管理部32は、バッチ処理以外のサーバ処理に必要な「リソース使用量」を予測する。仮想基盤連携部33は、スケールアップとスケールアウトを実行する。
バッチ管理部31は、バッチ監視部21b、バッチ予測部21c、バッチ実行制御部21aを含む。
バッチ監視部21bは、バッチ処理の稼働状況を監視し、具体的には、バッチ稼働中における各「最大リソース使用量」と「最大処理時間」を記録する。バッチ予測部21cは、バッチ処理の稼働状況を予測し、具体的にはバッチ監視部21bにより記録されたバッチ稼動の傾向から次回のバッチ稼動時における「予測リソース使用量」と「予測処理時間」を予測する。
バッチ実行制御部21aは、バッチ処理の実行を制御し、具体的には、バッチ処理の「起動時刻」が到来したことを確認する。バッチ実行制御部21aは、バッチ起動判定部21dを含む。バッチ起動判定部21dは、「リソース閾値」と「予測リソース使用量」を比較し、比較結果に基づいてハッチ処理を起動させるかを判定する。
サーバリソース管理部32は、サーバ監視部21h、サーバ予測部21iを含む。サーバ監視部21hは、サーバの稼動状況を監視し、具体的にはバッチ処理以外のサーバ処理の「リソース使用量」を記録する。サーバ予測部21iは、サーバの稼働状況を予測し、具体的にはサーバ監視部21hにより記録されたバッチ稼動の傾向から次回の「予測リソース使用量」を予測する。
仮想基盤連携部33は、連携管理部21e、連携管理部(スケールアップ)21f、連携管理部(スケールアウト)21gを含む。
連携管理部21eは、同じ物理サーバ内からリソースに余裕のある他の仮想サーバを検索し、バッチ処理を起動する仮想サーバを切り替える。連携管理部(スケールアップ)21fは、同じ物理サーバ内から空きリソースを検索し、バッチ処理を起動する仮想サーバのパフォーマンスを向上させる(スケールアップする)。連携管理部(スケールアウト)21gは、他の物理サーバ内から空きリソースを検索し、バッチ処理を起動する仮想サーバの数を増やす(スケールアウトする)。
二次記憶装置22は、バッチ集計データ41、バッチ予測データ42、バッチ起動スケジュール43、サーバ予測データ44、サーバ集計データ45、バッチモジュール46、定義ファイル47を含む。
バッチ集計データ41は、バッチ処理の稼働状況の集計データであって、バッチ監視部21bで算出した「最大リソース使用量」と「最大処理時間」を記録する。バッチ予測データ42は、バッチ処理の稼働状況の予測データであって、バッチ予測部21cで予測した次回の「予測リソース使用量」と「予測処理時間」を記録する。
バッチ起動スケジュール43は、仮想サーバ16に割り当てられた全てのバッチ処理のバッチ起動に必要な情報を保持する。
サーバ集計データ45は、サーバの稼働状況の集計データであって、サーバ監視部21hで記録した「リソース使用量」を記録する。サーバ予測データ44は、サーバの稼働状況の予測データであって、サーバ予測部21iで予測した次回の「リソース使用量」を記録する。
バッチモジュール46は、仮想サーバ16に割り当てられたバッチ処理が使用するプログラムである。定義ファイル47は、バッチ処理の起動情報についての定義ファイルであって、仮想サーバ16に割り当てられたバッチ処理ごとのバッチ起動に必要な情報を保持する。
図7は、本実施形態で用いるデータの一例を示す。図7(A)に示すように、バッチ集計データ41は、バッチ処理の「起動時刻」、本セッションの「最大CPU使用率」、本セッションの「処理時間」の項目を含む。
図7(B)に示すように、バッチ予測データ42は、「過去最大のCPU使用率」、「増加傾向の傾き」、「予測CPU使用率」の項目を含む。
図7(C)に示すように、バッチ起動スケジュール43は、「バッチモジュール名」、「バッチモジュール格納場所」、「起動時刻」、「起動ユーザ」、「処理データ格納場所」の項目を含む。
図7(D)に示すように、サーバ予測データ44は、「時間」、「予測CPU使用率」の項目を含む。
図7(E)に示すように、サーバ集計データ45は、「時間」、「仮想サーバ上の全ての処理の「CPU使用率」」、「仮想サーバ上の全てのバッチ処理の「CPU使用率」」、「バッチ処理以外のサーバ処理の「CPU使用率」」の項目を含む。
図7(F)に示すように、定義ファイル47は、「バッチモジュール名」、「バッチモジュール格納場所」、「起動時刻」、「起動ユーザ」、「処理データ格納場所」の項目を含む。
図8は、本実施形態における全体のフローを示す。以下では、仮想化環境に適した動的なバッチ制御方式について説明する。本実施形態では、上述した処理S0〜S4の処理がS0から順に実施される。なお、仮想サーバの「リソース閾値」は事前に定義されている。
S0において、予測「リソース使用量」が算出される。ここでは、バッチ監視部21bは、バッチ稼働中における「最大リソース使用量」と「最大処理時間」を記録する。バッチ予測部21cは、バッチ処理の「予測リソース使用量」と 「予測処理時間」を予測する。サーバ監視部21hは、バッチ処理以外のサーバ処理の「リソース使用量」を記録する。サーバ予測部21iは、バッチ処理以外のサーバ処理の「予測リソース使用量」を予測する。
S1において、バッチ起動が判断される。ここでは、バッチ実行制御部21aは、バッチ処理の「起動時刻」が到来したことを確認する。バッチ起動判定部21dは、対象バッチ処理の「予測処理時間」において、「リソース閾値」と「予測リソース使用量」を比較する。比較の結果、予測リソース使用量がリソース閾値を超えていない場合、バッチ起動判定部21dは、バッチ処理を起動させる。予測リソース使用量がリソース閾値を超えている場合、S2の処理へ移行する。
S2において、予測リソース使用量がリソース閾値を超えている仮想サーバ16が、予測リソースリソースに余裕のある他の仮想サーバ16に切り替えられる。ここでは、連携管理部21eは、自身が配備された同じ物理サーバ内から余裕のある他の仮想サーバ16を検索する。同じ物理サーバ内に余裕のある他の仮想サーバ16があれば、仮想サーバを切り替えて、S1のバッチ起動判定部21dによる処理が再度行われる。同じ物理サーバ内に余裕のある他の仮想サーバ16がなければ、S3の処理へ移行する。
S3において、スケールアップにてリソースが増強される。ここでは、連携管理部(スケールアップ)21fは、自身が配備された同じ物理サーバ内から空きリソースを検索する。空きリソースがあれば、連携管理部(スケールアップ)21fは、スケールアップしてS1のバッチ起動判定部21dによる処理が再度行われる。空きリソースがなければ、S4の処理へ移行する。
S4において、スケールアウトにてリソースが増強される。ここでは、連携管理部(スケールアウト)21gは、他の物理サーバ内から空きリソースを検索する。空きリソースがなければ、異常通知が発行される。空きリソースがあれば、連携管理部(スケールアウト)21gは、スケールアウトしてS1のバッチ起動判定部21dによる処理が再度行われる。なお、スケールアウト後、S1にてバッチ処理が起動しない場合も異常通知が発行される。
本実施形態における部を説明するに当たり、想定している動作環境を図9のリソースグラフを使用して説明する。
図9は、本実施形態における想定している動作環境を説明するための図である。本実施形態では、「リソース使用量」を「CPU使用率」を例にして説明する。また、仮想サーバ1号機16−1の「CPU使用率の閾値(リソース閾値)」を100%と事前に定義したものとする。
図9のグラフでは、横軸が時間、縦軸が「リソース使用量」を示している。また、グラフ中の実線は各処理の「CPU使用率」、破線が各処理の「CPU使用率」の合計を示している。ここでは仮想サーバ1号機16−1上でバッチ処理(バッチA)の稼動が予定されており、さらに同一仮想サーバ1号機16−1にてオンライン処理などのバッチ処理以外のサーバ処理も稼動しているものとする。また、この例では、バッチAは1日に1セッション実行することを想定しており、バッチAの「起動時刻」は、例えば「2015/09/05 00:00:00」とする。また、バッチ処理が起動し、バッチ処理が終了するまでを1セッションと定義する。
なお、ここでは、「リソース使用量」として「CPU使用率」のほかに、同様の手法で「メモリ使用量」と「ディスク使用帯域」も扱えるものとする。
図10は、本実施形態におけるバッチ実行制御部の起動条件及び処理フローを示す。図10(A)に示すように、バッチ実行制御部21aは、仮想サーバ16の起動と同時に起動し、仮想サーバ16の停止時まで稼動し続ける。
バッチ実行制御部21aの動作を、図10(B)を用いて説明する。バッチ起動スケジュール43には、図7(C)に示すように、仮想サーバ1号機16−1に割り振られている全てのバッチ処理の「起動時刻」などの各バッチ起動に必要な情報が記載されている。
バッチ実行制御部21aは、所属する仮想サーバ起動1号機16−1と同時に起動し、バッチ起動スケジュール43を参照してバッチAの「起動時刻」などの各バッチ起動に必要な情報を参照する(S11)。
バッチ実行制御部21aは、バッチ起動スケジュール43とシステム時刻を比較して、バッチ処理の「起動時刻」が到来したか否かを判定する(S12)。図7(C)の例の場合、バッチAの「起動時刻」である2015/09/05 00:00:00が到来した際、バッチ実行制御部21aは、バッチ起動判定部21dにバッチ起動判断を依頼し、バッチ実行制御部21aは処理を完了する。
図11は、本実施形態におけるバッチ監視部の動作を説明するための図である。この例では「リソース使用量」を「CPU使用率」を例にして説明する。また、この例では、最大CPU使用率」は1コア換算で記録するものとする。また、バッチ監視部は、本セッションの「最大リソース使用量」として「最大CPU使用率」のほかに、同様の手法で「最大メモリ使用量」と「最大ディスク使用帯域」も記録できるものとする。
図11(A)に示すように、バッチ稼動状況監視のリソースグラフは、バッチA稼働中のリソースグラフで、横軸が時間、縦軸が「CPU使用率」を示している。また、グラフ中の点は現時点でのバッチAの「CPU使用率」を示している。
図11(B)に示すように、バッチ集計データ41のテーブルには、バッチAの「起動時刻」と本セッションの「最大CPU使用率」と「処理時間」が格納される。
図12は、本実施形態におけるバッチ監視部の起動条件及び処理フローを示す。図12(A)に示すように、バッチ監視部21bは、バッチ起動と同時に起動し、現在割り当てられているバッチ処理ごとに情報を記録する。この例では、バッチ監視部21bは、バッチAの「起動時刻」である2015/09/05 00:00:00が到来すると起動する。
図12(B)に示すように、バッチ監視部21bは、バッチ処理の「リソース使用量」(例えば、「CPU使用率」、「メモリ使用量」、「ディスク使用帯域」等)を監視し(S21)、バッチ稼働中の各「最大リソース使用量」を更新・保持する(S22)。この例では、バッチ監視部21bは、バッチAの稼働中において、バッチAの「CPU使用率」を監視し、「最大CPU使用率」を更新・保持する。
バッチ監視部21bは、バッチ処理完了後、「起動時刻」と「最大リソース使用量」と「処理時間」をバッチ集計データ41として記録する(S23)。この例では、バッチAの処理完了後、バッチ監視部21bは、バッチAの「起動時刻」と、保持している「最大CPU使用率」と「処理時間」(起動時刻と処理完了時刻の差)をそれぞれ、本セッションの「最大リソース使用量」と「処理時間」としてバッチ集計データ41に記録する。この例では、バッチ集計データ41のテーブルに「起動時刻」2015/09/05 00:00:00、本セッションの「最大CPU使用率」80%、本セッションの「処理時間」1時間が記録される。
記録した後、バッチ監視部21bはバッチ予測部21cに処理を依頼し、バッチ監視部21bは処理を完了する(S24)。
図13は、本実施形態におけるバッチ予測部の動作を説明するための図である。この例では「リソース使用量」を「CPU使用率」を例にして説明する。なお、「最大CPU使用率」は1コア換算で記録する。本部では「予測リソース使用量」として「予測CPU使用率」のほかに、同様の手法で「予測メモリ使用量」と「予測ディスク使用帯域」も扱えるものとする。
図13(A)のバッチ予測部のリソースグラフは、バッチA稼働中のリソースグラフで、横軸が日付、縦軸が「CPU使用率」を示している。本例では、バッチ処理は1日に1セッション実行されるため、セッションを区別する為に日付を記載している。
グラフ中の点は(2015/09/03〜2015/09/05における)セッションごとの「最大CPU使用率」と本例で更新された「予測CPU使用率」を示している。
図13(B)の「バッチ集計データ」のテーブルには、バッチAの「起動時刻」とセッションごとの「最大CPU使用率」が格納されている。
図13(C)の「バッチ予測データ」のテーブル(更新前)には、本例で更新される前のバッチAの「最大CPU使用率」「増加傾向の傾き」「予測CPU使用率」が格納されている。
図13(C)の「バッチ予測データ」のテーブル(更新後)には、本例で更新された後のバッチAの「最大CPU使用率」「増加傾向の傾き」「予測CPU使用率」が格納されている。
図14は、本実施形態におけるバッチ予測部の起動条件及び処理フローを示す。図14(A)に示すように、バッチ予測部21cは、バッチ監視部21bから依頼を受けると起動する。バッチ予測部21cは、割り当てられているバッチ処理ごとに情報を記録する。
図14(B)に示すように、バッチ予測部21cは、前回のバッチ稼動で記録したバッチ集計データ41の「最大リソース使用量」とバッチ予測データ42の「過去最大のリソース使用量」を比較する(S31)。
「最大リソース使用量」が「過去最大のリソース使用量」よりも大きい場合、バッチ予測部21cは、バッチ予測データ42の「過去最大のリソース使用量」を更新する(S32)。図13の例では、バッチ予測部21cは、「バッチ集計データ」41のテーブルから2015/09/05の「最大CPU使用率」80%と、「バッチ予測データ」42のテーブル(更新前)から(2015/09/04の)「過去最大のCPU使用率」60%を比較する。比較結果から、バッチ予測部21cは、(「最大CPU使用率」のほうが大きいため)「過去最大のCPU使用率」を80%に更新する。+
バッチ予測部21cは、「過去最大のリソース使用量」の更新前、更新後の差分から「増加傾向の傾き」を算出する(S33)。本例では、「最大CPU使用率」の更新前、更新後の差分が20%、セッション数の差分が2のため、「増加傾向の傾き」として10%が算出される。
バッチ予測部21cは、「過去最大のリソース使用量」の更新前、更新後の差分から「増加傾向の傾き」を算出する(S33)。本例では、「最大CPU使用率」の更新前、更新後の差分が20%、セッション数の差分が2のため、「増加傾向の傾き」として10%が算出される。
バッチ予測部21cは、「増加傾向の傾き」から次回の「予測リソース使用量」を算出し、記録する(S34)。ここで、「予測リソース使用量」は、「増加傾向の傾き」と「過去最大のリソース使用量」との和である。本例では「増加傾向の傾き」が10%、「過去最大のCPU使用率」が80%のため、次回の「予測CPU使用率」として90%が算出される。以上の処理結果から、「最大CPU使用率」「増加傾向の傾き」「予測CPU使用率」をそれぞれ「バッチ予測データ」42に記録する。記録した後、バッチ予測部21cは、処理を完了する。
バッチ予測部21cは、「予測リソース使用量」と同様に、「予測処理時間」も算出できるものとする。バッチ予測部21cは、「バッチ集計データ」41から「リソース使用量」と「処理時間」の最大値を算出することで、増加傾向を各予測値に反映することができる。予測した「リソース使用量」を超過する可能性は低いため、安全にバッチを起動したいケースでは、最大値を使用して「予測リソース使用量」と「予測処理時間」を算出することを推奨する。
しかし、上記の方法では、「リソース使用量」と「処理時間」が減少傾向にあった場合でも、過去に記録した「リソース使用量」と「処理時間」の最大値が常に採用されるため、「予測リソース使用量」と「予測処理時間」は減少することが無い。減少傾向を「予測リソース使用量」と「予測処理時間」に反映したい場合は、バッチ予測部21cは、バッチ集計データ41から「リソース使用量」と「処理時間」の平均値を算出することで、減少傾向を各予測値に反映することも可能である。本実施形態では増加傾向と減少傾向どちらにも対応できるものとする。
図15は、本実施形態におけるバッチ起動判定部の動作を説明するための図である。本説明では「リソース使用量」の一例として、「CPU使用率」について説明する。ここで、「予測CPU使用率」は1コア換算で算出されるため、「リソース閾値」も1コア換算で設定されているものとする。バッチ起動判定部21dでは「予測リソース使用量」として「予測CPU使用率」のほかに、同様の手法で「予測メモリ使用量」と「予測ディスク使用帯域」も扱えるものとする。
図15(A)のバッチ起動判定のリソースグラフは、バッチAの起動判定を行う際の予測値を含めたリソースグラフで、横軸が時間、縦軸が「CPU使用率」(バッチ集計データ41)を示している。グラフ中の実線は、バッチAとバッチ処理以外のサーバ処理の「予測CPU使用率」(バッチ予測データ42)をそれぞれ示している。破線は、バッチAとバッチ処理以外のサーバ処理の「予測CPU使用率」の合計を示している。
図15(B)の「バッチ予測データ42のテーブルには、バッチAの「予測CPU使用率」と「予測処理時間」が格納されている。
図15(C)の「サーバ予測データ44のテーブルには、バッチ処理以外のサーバ処理の「予測CPU使用率」が格納されている。本例では説明を簡略にするため、サーバの「予測CPU使用率」は常に10%としている。また、「CPU使用率の閾値」 は100%とする。
図15(D)のバッチ起動スケジュール43は、仮想サーバ1号機16−1に割り振られている全てのバッチ処理の「起動時刻」などの各バッチ起動に必要な情報が記載されている。
図16は、本実施形態におけるバッチ実行制御部の起動条件及び処理フローを示す。図16(A)に示すように、バッチ起動判定部21dは、バッチ実行制御部21aから依頼を受ける、もしくは連携管理部21e,21f,21gから情報を受信すると起動する。本例では、バッチ起動判定部21dは、バッチ実行制御部21aから依頼を受けたものとする。
図16(B)に示すように、バッチ起動判定部21dは、「リソース閾値」が「予測リソース使用量」の合計より大きいか否かを判定する(S41)。「リソース閾値」が「予測リソース使用量」の参照先は、起動条件によって次のように変化する。バッチ実行制御部21aから依頼された場合には、バッチ起動判定部21dは、バッチ起動スケジュール43と、バッチ予測データ42とサーバ予測データ44を参照する。連携管理部21e,21f,21gから情報を受信した場合には、バッチ起動判定部21dは、受信した情報とサーバ予測データ44を参照する。
また、バッチ起動判定部21dは、対象バッチ処理の「予測処理時間」の範囲すべてにおいて比較を行う。「予測リソース使用量」の合計は、対象バッチ処理、その他のバッチ処理、及びバッチ処理以外のサーバ処理の「予測リソース使用量」の合計となる。また、「予測CPU使用率」は1コア換算で算出されるため、「リソース閾値」も1コア換算で設定されているものとする。
「リソース閾値」が「予測リソース使用量」の合計より大きい場合(S41で「YES」)、バッチ起動判定部21dは、バッチを起動する(S42)。
「予測リソース使用量」の合計が「リソース閾値」以上の場合(S41で「NO」)、バッチ起動判定部21dは、連携管理部(スケールアウト)21gから情報を受信したかを判定する(S43)。連携管理部(スケールアウト)21gから情報を受信した場合(S43で「YES」)、バッチ起動判定部21dは処理を完了する。連携管理部(スケールアウト)21gから情報を受信していない場合(S43で「NO」)、バッチ起動判定部21dは、連携管理部21eに処理を依頼する(S44)。
本例の場合、バッチ起動判定部21dは、バッチ起動スケジュール43を参照して、バッチAの「起動時刻」など起動に必要な情報を確認し、バッチAの「予測処理時間」の範囲において、「CPU使用率の閾値」と「予測CPU使用率」の合計を比較する。図15では、バッチ起動判定部21dは、バッチAの「起動時刻」2015/09/06 00:00:00と「予測処理時間」1時間から、「予測処理時間」の範囲は2015/09/06の00:00:00から2015/09/06の01:00:00とする。上記の「予測処理時間」の範囲において、バッチAの 「予測CPU使用率」90%と、バッチ処理以外のサーバ処理の「予測CPU使用率」10%の和から、「予測CPU使用率」の合計として100%が算出される。上記の「予測処理時間」の範囲における比較結果から、バッチ起動判定部21dは、「予測CPU使用率」が「CPU使用率の閾値」に達する瞬間が存在するため、連携管理部21eに処理を依頼し、バッチ起動判定部21dは処理を完了する。
図17は、本実施形態における連携管理部21eの動作を説明するための図である。また、本説明では「リソース使用量」を「CPU使用率」を例にして説明する。連携管理部21eでは「予測リソース使用量」として「予測CPU使用率」のほかに、同様の手法で「予測メモリ使用量」と「予測ディスク使用帯域」も扱えるものとする。
図17(A)のバッチ予測データ42のテーブルには、バッチAの「予測CPU使用率」と「予測処理時間」が格納されている。
図17(B)の定義ファイル47には、仮想サーバ1号機16−1に割り振られているバッチA単体の「起動時刻」などのバッチAの起動に必要な情報が記載されている。
図18及び図19は、本実施形態における連携管理部21eの起動条件及び処理フローを示す。連携管理部21eは、バッチAが所属する仮想サーバ1号機16−1のバッチ起動判定部21dから依頼を受ける(図18(A))、もしくは他の仮想サーバのバッチ起動判定部21dから情報を受信すると起動する(図19(A))。本例では、まず図18(A)のバッチ起動判定部21dから依頼を受けたものとする。
この場合、図18(A)及び図18(B)に示すように、起動条件1の処理フローが実施される。まず、連携管理部21eは、バッチAが所属する物理サーバ1号機14−1のハイパーバイザ15に、本セッション中にバッチAの依頼を受けていない仮想サーバが存在するか問い合わせる(S51)。
問い合わせ結果から、依頼を受けていない仮想サーバ2号機16−2が存在したため(S51で「YES」)、連携管理部21eは、次の処理を行う。
すなわち、連携管理部21eは、仮想サーバ2号機16−2の連携管理部21eにバッチAの「予測リソース使用量」90%と「予測処理時間」1時間とバッチ起動に必要な情報を送信し(S52)、仮想サーバ1号機16−1における連携管理部21eは処理を完了する。ここで、バッチ起動に必要な情報として、「バッチモジュール名」バッチA、「バッチモジュール格納場所」batch/batchA、「起動時刻」2015/09/06 00:00:00、「起動ユーザ」batch、「処理データ格納場所」/data/batchAが送信される。
すなわち、連携管理部21eは、仮想サーバ2号機16−2の連携管理部21eにバッチAの「予測リソース使用量」90%と「予測処理時間」1時間とバッチ起動に必要な情報を送信し(S52)、仮想サーバ1号機16−1における連携管理部21eは処理を完了する。ここで、バッチ起動に必要な情報として、「バッチモジュール名」バッチA、「バッチモジュール格納場所」batch/batchA、「起動時刻」2015/09/06 00:00:00、「起動ユーザ」batch、「処理データ格納場所」/data/batchAが送信される。
問い合わせ結果から、依頼を受けていない仮想サーバ2号機16−2が存在しない場合(S51で「NO」)、連携管理部21eは、次の処理を行う。すなわち、連携管理部21eは、自分が所属する仮想サーバの連携管理部21fに、バッチの「予測リソース使用量」、バッチの「予測処理時間」、バッチ起動に必要な情報を送信する(S53)。バッチ起動に必要な情報とは、バッチモジュール名とバッチモジュール格納場所、起動時刻、起動ユーザ、処理データ格納場所等である。
次に、図19(A)及び図19(B)に示すように、起動条件2の処理フローが実施される。
ここでは、連携管理部21eは、バッチAが所属する仮想サーバ2号機16−2のバッチ起動判定部21dにバッチAの「予測リソース使用量」90%と「予測処理時間」1時間とバッチ起動に必要な情報を送信する(S61)。仮想サーバ2号機16−2における連携管理部21eは処理を完了する。ここで、バッチ起動に必要な情報として、「バッチモジュール名」バッチA、「バッチモジュール格納場所」batch/batchA、「起動時刻」2015/09/06 00:00:00、「起動ユーザ」batch、「処理データ格納場所」/data/batchAが送信される。
なお、連携管理部21eでは「予測リソース使用量」と「予測処理時間」とバッチ起動に必要な情報を扱う。これらの情報は、対象バッチ処理が本来所属していた仮想サーバから送信する場合は「バッチ稼働状況予測データ」や「バッチ起動情報定義ファイル」から参照する。本例ではバッチAが本来所属していた仮想サーバは仮想サーバ1号機16−1である。
また、同セッション中の、以降の連携管理部21eの処理では、他の仮想サーバの連携管理部21eから受信した情報を参照するものとする。
図20は、本実施形態における連携管理部(スケールアップ)21fの動作を説明するための図である。本説明では「リソース使用量」を「CPU使用率」を例にして説明する。連携管理部(スケールアップ)21fでは「予測リソース使用量」として「予測CPU使用率」のほかに、同様の手法で「予測メモリ使用量」と「予測ディスク使用帯域」も扱えるものとする。
図20に示すように、連携管理部21eから受信した情報は、バッチAの「予測CPU使用率」、「予測処理時間」とバッチ起動に必要な情報を含む。バッチ起動に必要な情報は、「バッチモジュール名」、「バッチモジュール格納場所」、「起動時刻」、「起動ユーザ」、「処理データ格納場所」を含む。
図21は、本実施形態における連携管理部(スケールアップ)21fの起動条件及び処理フローを示す。
図21(A)に示すように、連携管理部(スケールアップ)21fは、連携管理部21eから情報を受信すると起動する。本例では、物理サーバ1号機14−1の仮想サーバ2号機16−2において、連携管理部(スケールアップ)21fは連携管理部21eからバッチAの情報を受信したものとする。
図21(B)に示すように、連携管理部(スケールアップ)21fは、まず、バッチAが所属する物理サーバ1号機の仮想基盤管理15に空きリソースが存在するかを、自分が所属する物理サーバの仮想基盤管理15に問い合わせる(S71)。
問い合わせ結果から空きリソースが存在した場合(S71で「YES」)、連携管理部(スケールアップ)21fは、バッチAが所属する物理サーバ1号機の仮想基盤管理15−1に、スケールアップによるリソース増強を依頼する(S72)。
スケールアップ完了後、連携管理部(スケールアップ)21fは、仮想サーバ2号機のバッチ起動判定部21dにバッチAの「予測CPU使用率」90%と「予測処理時間」1時間とバッチ起動に必要な情報を送信する(S73)。これにより、仮想サーバ2号機における連携管理部(スケールアップ)21fは処理を完了する。ここで、バッチ起動に必要な情報として、「バッチモジュール名」バッチA、「バッチモジュール格納場所」batch/batchA、「起動時刻」2015/09/06 00:00:00、「起動ユーザ」batch、「処理データ格納場所」/data/batchAが送信される。
問い合わせ結果から、空きリソースが存在しない場合(S71で「NO」)、連携管理部(スケールアップ)21fは、次の処理を行う。すなわち、連携管理部(スケールアップ)21fは、仮想サーバ2号機の連携管理部(スケールアウト)21gに、バッチAの「予測CPU使用率」90%と「予測処理時間」1時間とバッチ起動に必要な情報を送信する。これにより、仮想サーバ2号機における連携管理部(スケールアップ)21fは処理を完了する。ここで、バッチ起動に必要な情報として、「バッチモジュール名」バッチA、「バッチモジュール格納場所」batch/batchA、「起動時刻」2015/09/06 00:00:00、「起動ユーザ」batch、「処理データ格納場所」/data/batchAが送信される。
図22は、本実施形態における連携管理部(スケールアウト)21gの動作を説明するための図である。本説明では「リソース使用量」を「CPU使用率」を例にして説明する。連携管理部(スケールアウト)21gでは「予測リソース使用量」として「予測CPU使用率」のほかに、同様の手法で「予測メモリ使用量」と「予測ディスク使用帯域」も扱えるものとする。
図22において、連携管理部(スケールアップ)21fから受信した情報は、バッチAの「予測CPU使用率」、「予測処理時間」と、バッチ起動に必要な情報を含む。バッチ起動に必要な情報は、「バッチモジュール名」、「バッチモジュール格納場所」 、「起動時刻」、「起動ユーザ」、「処理データ格納場所」を含む。
図23は、本実施形態における連携管理部(スケールアウト)21gの起動条件及び処理フローを示す。
図23(A)に示すように、連携管理部(スケールアウト)21gは連携管理部(スケールアップ)21fから情報を受信すると起動する。本例では、物理サーバ1号機14−1上の仮想サーバ2号機16−2において、連携管理部(スケールアウト)21gは連携管理部(スケールアップ)21fからバッチAの情報を受信したものとする。
図23(B)に示すように、連携管理部(スケールアウト)21gは、全仮想化基盤管理部12に空きリソースが存在する物理サーバが存在するか問い合わせる(S81)。但し、連携管理部(スケールアウト)21g自身が所属する物理サーバは除かれる。この例では、バッチAが所属している物理サーバ1号機16−1は除かれる。
問い合わせ結果から空きリソースが存在する物理サーバ2号機が存在した場合(S81で「YES」)、連携管理部(スケールアウト)21gは、全仮想化基盤管理部12にサーバ追加(スケールアウト)を依頼する(S82)。本例では、連携管理部(スケールアウト)21gは、全仮想化基盤管理部12にスケールアウトを依頼し、物理サーバ2号機16−2上に仮想サーバm号機16−mを新設させる。
スケールアウト完了後、連携管理部(スケールアウト)21gは、スケールアウトしたサーバのバッチ起動判定部21dに、バッチの「予測リソース使用量」、バッチの「予測処理時間」、バッチ起動に必要な情報を送信する。本例では、連携管理部(スケールアウト)21gは、仮想サーバm号機のバッチ起動判定部21dに、バッチAの「予測CPU使用率」90%と「予測処理時間」1時間とバッチ起動に必要な情報を送信する。バッチ起動に必要な情報として、「バッチモジュール名」バッチA、「バッチモジュール格納場所」batch/batchA、「起動時刻」2015/09/06 00:00:00、「起動ユーザ」batch、「処理データ格納場所」/data/batchAが送信される。
そして、仮想サーバm号機のバッチ起動判定部21dにおいて、バッチAの起動を確認した場合(S84で「YES」)、仮想サーバ2号機における連携管理部(スケールアウト)21gは、処理を完了する。
バッチAの起動が確認できない場合(S84で「NO」)、仮想サーバ2号機における連携管理部(スケールアウト)21gは、運用者にリソース不足を通知して(S85)、処理を完了する。
問い合わせ結果から空きリソースが存在する物理サーバが存在しなかった場合(S81で「NO」)、仮想サーバ2号機における連携管理部(スケールアウト)21gは運用者にリソース不足を通知して(S85)、処理を完了する。
図24は、本実施形態におけるサーバ監視部21hの動作を説明するための図である。本説明では「リソース使用量」を「CPU使用率」を例にして説明する。「CPU使用率」は1コア換算で記録する。サーバ監視部21hでは、「リソース使用量」として「CPU使用率」のほかに、同様の手法で「メモリ使用量」と「ディスク使用帯域」量も扱えるものとする。
図24(A)に示すように、サーバ稼働状況監視のリソースグラフは、バッチ処理以外のサーバ処理が稼働中のリソースグラフであり、横軸が時間、縦軸がCPU使用率を示している。また、当該リソースグラフは現時点での仮想サーバ上の全ての処理の「CPU使用率」と、仮想サーバ上の全てのバッチ処理の「CPU使用率」を示している。
図24(B)の「サーバ集計データ45のテーブルには、仮想サーバ上の全ての処理の「CPU使用率」と、仮想サーバ上の全てのバッチ処理の「CPU使用率」と、バッチ処理以外のサーバ処理「CPU使用率」が格納される。
図25は、本実施形態におけるサーバ監視部21hの起動条件及び処理フローを示す。図25(A)に示すように、サーバ監視部21hは、仮想サーバの起動と同時に起動する。本例では、サーバ監視部21hは、仮想サーバ1号機が起動すると同時に起動する。
図25(B)に示すように、サーバ監視部21hは、仮想サーバ上の全ての処理の「リソース使用量」(「CPU使用率」,「メモリ使用量」、「ディスク使用帯域」)を監視する(S91)。なお、「CPU使用率」は1コア換算で記録する。
サーバ監視部21hは、仮想サーバ上の全てのバッチ処理の「リソース使用量」(「CPU使用率」、「メモリ使用量」、「ディスク使用帯域」)を監視する(S92)。
サーバ監視部21hは、仮想サーバ上の全ての処理の「リソース使用量」から仮想サーバ上の全てのバッチ処理の「リソース使用量」を減算した値をバッチ処理以外のサーバ処理の「リソース使用量」として、サーバ集計データ45に記録する(S93)。
時間2015/09/05 00:00:00を例に説明すると、サーバ監視部21hは、バッチAの仮想サーバ上の全ての処理の「CPU使用率」70%と、仮想サーバ上の全てのバッチ処理の「CPU使用率」60%を測定する。
サーバ監視部21hは、仮想サーバ上の全ての処理の「CPU使用率」70%から仮想サーバ上の全てのバッチ処理の「CPU使用率」60%を減算した値をバッチ処理以外のサーバ処理「CPU使用率」10%として記録する。サーバ監視部21hは、以降も同様に測定と記録を続ける。
図26は、本実施形態におけるサーバ予測部21iの動作を説明するための図である。本説明では「リソース使用量」を「CPU使用率」を例にして説明する。「CPU使用率」は1コア換算で記録する。サーバ予測部21iでは「リソース使用量」として、「CPU使用率」のほかに、同様の手法で「メモリ使用量」と「ディスク使用帯域」も扱えるものとする。
図26(A)のサーバ集計データ45のテーブルには、バッチ処理以外のサーバ処理が記録した「CPU使用率」が格納されている。図26(B)のサーバ予測データ44のテーブルには、バッチ処理以外のサーバ処理が予測して算出した「予測CPU使用率」が格納されている。
図27は、本実施形態におけるサーバ予測部21iの起動条件及び処理フローを示す。図27(A)に示すように、サーバ予測部21iは、仮想サーバ1号機が起動すると同時に起動する。
図27(B)に示すように、サーバ予測部21iは、過去の各「リソース使用量」(サーバ集計データ45)から、各「「リソース使用量」の傾向」を算出する(101)。ここでは、サーバ予測部21iは、近似曲線を適用し、傾向を算出する。
サーバ予測部21iは、傾向から次回の「予測リソース使用量」を算出し、サーバ予測データ44に記録する(S102)。
本例では、サーバ予測部21iは、過去のバッチ処理以外のサーバ処理で記録した「CPU使用率」から、近似曲線を適用し、「CPU使用率」の傾向を算出する。サーバ予測部21iは、傾向から次回の「予測CPU使用率」を算出し、「サーバ稼働状況予測データ」に記録し続ける。記録した後、サーバ予測部21iは処理を完了する。
図28は、上述の状況1について、本実施形態の適用後のリソースグラフを示す。図1(B)と比べて、本実施形態の適用後では、バッチAにおける日々の増加傾向を考慮し、バッチB起動前にスケールアウトによってリソースを増強後、バッチBを起動した場合を示している。以下、動作概要と効果を説明する。本説明では仮想サーバの「リソース閾値」を100%と事前に定義したものとする。
以下の処理を上述したようにS1から順に実施する。
S1において、バッチ起動判定部21dは、バッチBの「起動時刻」が到来した際、バッチBの「予測処理時間」において、バッチBと、バッチAと、バッチ処理以外のサーバ処理の「予測リソース使用量」の合計が「リソース閾値」内で収まるか否かを判定する。「予測リソース使用量」の合計が「リソース閾値」内で収まらないと判断されると、S2の処理が実施される。
S1において、バッチ起動判定部21dは、バッチBの「起動時刻」が到来した際、バッチBの「予測処理時間」において、バッチBと、バッチAと、バッチ処理以外のサーバ処理の「予測リソース使用量」の合計が「リソース閾値」内で収まるか否かを判定する。「予測リソース使用量」の合計が「リソース閾値」内で収まらないと判断されると、S2の処理が実施される。
S2において、仮想基盤連携部33にて、同じ物理サーバ内からリソースに余裕のある仮想サーバを検索したが、存在しなかったため、S3の処理が実施される。
S3において、仮想基盤連携部33にて、同じ物理サーバ内から空きリソースが検索されたが、存在しなかったため、S4の処理が実施される。
S4において、他の物理サーバ内から空きリソースを検索し、空きリソースが存在したので、連携管理部21gは、全仮想化基盤管理12と連携して仮想サーバm号機16−mをスケールアウトによって他の物理サーバ上に新設する。そして、バッチBを起動させる仮想サーバを仮想サーバ1号機から仮想サーバm号機に切り替え、バッチ起動判定部21dは、S1の処理を実施し、バッチBを起動させる。
同一仮想サーバ上でバッチB稼働中にバッチAも稼動する状況が発生しないので、「リソース使用量」が仮想サーバの許容量である100%を超過して仮想サーバの全体のパフォーマンスが低下することを回避できる。上記の結果、予定終了時刻にバッチ処理が終了しないといった課題を解決できる。
図29は、上述の状況2について、本実施形態の適用後のリソースグラフを示す。図2(B)と比べて、本実施形態の適用後では、バッチ処理以外のサーバ処理における日々の増加傾向を考慮し、バッチA、バッチB、バッチCの起動前にスケールアップによってリソースを増強後、バッチA、バッチB、バッチCを稼動した場合を示している。以下、動作概要と効果を説明する。本説明では仮想サーバの「リソース閾値」を100%と事前に定義したものとする。
以下の処理をS1から順に実施する。
S1において、バッチ起動判定部21dは、バッチAの「起動時刻」が到来した際、バッチAの「予測処理時間」において、バッチAと、バッチ処理以外のサーバ処理の「予測リソース使用量」の合計が「リソース閾値」内で収まるか否かを判定する。「予測リソース使用量」の合計が「リソース閾値」 内で収まらないと判断されると、S2の処理が実施される。
S1において、バッチ起動判定部21dは、バッチAの「起動時刻」が到来した際、バッチAの「予測処理時間」において、バッチAと、バッチ処理以外のサーバ処理の「予測リソース使用量」の合計が「リソース閾値」内で収まるか否かを判定する。「予測リソース使用量」の合計が「リソース閾値」 内で収まらないと判断されると、S2の処理が実施される。
S2において、仮想基盤連携部33にて、同じ物理サーバ内からリソースに余裕のある仮想サーバが検索されたが、存在しなかったため、S3の処理が実施される。
S3において、同じ物理サーバ内から空きリソースを検索し、空きリソースが存在したため、連携管理部21fは、次の処理を行う。すなわち、連携管理部21fは、全仮想化基盤管理12と連携し、バッチAを起動させる仮想サーバをスケールアップによってリソース増強したのち、S1の処理を実施しバッチAを起動させる。
なお、必要に応じてバッチBとバッチCでも同じ処理を行う。
バッチ処理以外のサーバ処理の増加量に対応できる、十分なリソースをスケールアップによって確保したので、バッチA、バッチB、バッチCが稼働するたびに「リソース使用量」が仮想サーバの許容量である100%を超過してサーバの全体のパフォーマンスが低下することを回避できる。上記の結果、予定終了時刻にバッチ処理が終了しないといった課題を解決できる。
バッチ処理以外のサーバ処理の増加量に対応できる、十分なリソースをスケールアップによって確保したので、バッチA、バッチB、バッチCが稼働するたびに「リソース使用量」が仮想サーバの許容量である100%を超過してサーバの全体のパフォーマンスが低下することを回避できる。上記の結果、予定終了時刻にバッチ処理が終了しないといった課題を解決できる。
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
1 バッチ制御システム
2 監視部
3 予測部
4 制御部
5 切替部
6 スケールアップ調整部
7 スケールアウト調整部
11 サーバシステム
12 全仮想化基盤管理
13 ネットワーク
14 物理サーバ
15 仮想化基盤管理(ハイパーバイザ)
16 仮想サーバ
17 空きリソース
21 主記憶装置
22 二次記憶装置
23 ネットワークインタフェース
24 CPU
31 バッチ管理部
32 サーバリソース管理部
33 仮想基盤連携部
21a バッチ実行制御部
21b バッチ監視部
21c バッチ予測部
21d バッチ起動判定部
21e 連携管理部
21f 連携管理部(スケールアップ)
21g 連携管理部(スケールアウト)
21h サーバ監視部
21i サーバ予測部
2 監視部
3 予測部
4 制御部
5 切替部
6 スケールアップ調整部
7 スケールアウト調整部
11 サーバシステム
12 全仮想化基盤管理
13 ネットワーク
14 物理サーバ
15 仮想化基盤管理(ハイパーバイザ)
16 仮想サーバ
17 空きリソース
21 主記憶装置
22 二次記憶装置
23 ネットワークインタフェース
24 CPU
31 バッチ管理部
32 サーバリソース管理部
33 仮想基盤連携部
21a バッチ実行制御部
21b バッチ監視部
21c バッチ予測部
21d バッチ起動判定部
21e 連携管理部
21f 連携管理部(スケールアップ)
21g 連携管理部(スケールアウト)
21h サーバ監視部
21i サーバ予測部
Claims (8)
- 第1仮想計算機による第1バッチ処理の実行の際のリソース使用量と処理時間を監視して、最大リソース使用量と最大処理時間を取得する監視部と、
前記最大リソース使用量と前記最大処理時間の傾向から、前記第1仮想計算機による第2バッチ処理の実行の際のリソース使用量と処理時間とを予測する予測部と、
予測された前記リソース使用量と予測された前記処理時間とに応じて、前記第2バッチ処理の実行を制御する制御部と、
を備えることを特徴とするバッチ制御システム。 - 前記監視部は、さらに前記第1バッチ処理以外の前記第1仮想計算機による非バッチ処理でのリソース使用量を監視し、
前記予測部は、前記非バッチ処理でのリソース使用量の傾向から、前記第2バッチ処理時における前記非バッチ処理でのリソース使用量を予測し、
前記制御部は、前記第2バッチ処理の起動時刻が到来した際に、前記予測された処理時間において前記第1仮想計算機にて実行される、該第2バッチ処理と、該第2バッチ処理以外の他のバッチ処理と、前記非バッチ処理とのそれぞれで用いるリソース使用量の合計が閾値より小さい場合、該第2バッチ処理を起動させる
ことを特徴とする請求項1に記載のバッチ制御システム。 - 前記バッチ制御システムは、さらに、
前記リソース使用量の合計が閾値以上である場合、前記第1仮想計算機を含む第1物理計算機内からリソースに余裕のある第2仮想計算機を検索し、該第2仮想計算機が存在する場合、前記第2バッチ処理を起動させる仮想計算機を該第1仮想計算機から該第2仮想計算機に切り替える切替部
を備えることを特徴とする請求項2に記載のバッチ制御システム。 - 前記バッチ制御システムは、さらに、
前記第2仮想計算機が存在しない場合、前記第1物理計算機内から空きリソースを検索し、該第1物理計算機に空きリソースが存在する場合、前記第2バッチ処理を起動させる前記第1仮想計算機に該空きリソースを融通するスケールアップ調整部と、
を備えることを特徴とする請求項3に記載のバッチ制御システム。 - 前記バッチ制御システムは、さらに、
前記第1物理計算機に空きリソースが存在しない場合、他の物理計算機内から空きリソースを検索し、該他の物理計算機のいずれかである第2物理計算機に該空きリソースが存在する場合、該第2物理計算機上に前記第2バッチ処理を起動させる第3仮想計算機を追加し、前記第2バッチ処理を起動させる仮想サーバを前記第1仮想計算機から該第3仮想計算機に切り替えるスケールアウト調整部と、
を備えることを特徴とする請求項4に記載のバッチ制御システム。 - 前記スケールアウト調整部は、前記他の物理計算機のいずれにも空きリソースが存在しない場合、または、前記第2バッチ処理を起動させる仮想サーバを前記第1仮想計算機から該第3仮想計算機に切り替えた後に該第2バッチが起動しない場合、異常である旨を通知する
ことを特徴とする請求項5に記載のバッチ制御システム。 - コンピュータに、
第1バッチ処理の実行の際のリソース使用量と処理時間を監視して、最大リソース使用量と最大処理時間を取得し、
前記最大リソース使用量と前記最大処理時間の傾向から、第2バッチ処理の実行の際のリソース使用量と処理時間とを予測し、
予測された前記リソース使用量と予測された前記処理時間とに応じて、前記第2バッチ処理の実行を制御する
処理を実行させるバッチ制御プログラム。 - コンピュータに、
第1バッチ処理の実行の際のリソース使用量と処理時間を監視して、最大リソース使用量と最大処理時間を取得し、
前記最大リソース使用量と前記最大処理時間の傾向から、第2バッチ処理の実行の際のリソース使用量と処理時間とを予測し、
予測された前記リソース使用量と予測された前記処理時間とに応じて、前記第2バッチ処理の実行を制御する
処理を実行させるバッチ制御方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2016008243A JP2017129988A (ja) | 2016-01-19 | 2016-01-19 | バッチ制御システム、バッチ制御プログラム、及びバッチ制御方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2016008243A JP2017129988A (ja) | 2016-01-19 | 2016-01-19 | バッチ制御システム、バッチ制御プログラム、及びバッチ制御方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2017129988A true JP2017129988A (ja) | 2017-07-27 |
Family
ID=59394900
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2016008243A Pending JP2017129988A (ja) | 2016-01-19 | 2016-01-19 | バッチ制御システム、バッチ制御プログラム、及びバッチ制御方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2017129988A (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN107942669A (zh) * | 2017-11-30 | 2018-04-20 | 海南师范大学 | 批次注塑过程的受限滚动时域混杂跟踪控制方法 |
| WO2019097727A1 (ja) * | 2017-11-20 | 2019-05-23 | 三菱電機株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
| JP2021196922A (ja) * | 2020-06-16 | 2021-12-27 | 株式会社日立製作所 | 計算機システム及び計算機システムの運用管理方法 |
| CN115827231A (zh) * | 2022-12-07 | 2023-03-21 | 重庆蚂蚁消费金融有限公司 | 批处理方法、装置、及计算机存储介质 |
| JP7459573B2 (ja) | 2020-03-09 | 2024-04-02 | 日本電気株式会社 | 制御装置、制御方法、及びプログラム |
-
2016
- 2016-01-19 JP JP2016008243A patent/JP2017129988A/ja active Pending
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2019097727A1 (ja) * | 2017-11-20 | 2019-05-23 | 三菱電機株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
| CN107942669A (zh) * | 2017-11-30 | 2018-04-20 | 海南师范大学 | 批次注塑过程的受限滚动时域混杂跟踪控制方法 |
| CN107942669B (zh) * | 2017-11-30 | 2021-05-07 | 海南师范大学 | 批次注塑过程的受限滚动时域混杂跟踪控制方法 |
| JP7459573B2 (ja) | 2020-03-09 | 2024-04-02 | 日本電気株式会社 | 制御装置、制御方法、及びプログラム |
| JP2021196922A (ja) * | 2020-06-16 | 2021-12-27 | 株式会社日立製作所 | 計算機システム及び計算機システムの運用管理方法 |
| JP7106603B2 (ja) | 2020-06-16 | 2022-07-26 | 株式会社日立製作所 | 計算機システム及び計算機システムの運用管理方法 |
| CN115827231A (zh) * | 2022-12-07 | 2023-03-21 | 重庆蚂蚁消费金融有限公司 | 批处理方法、装置、及计算机存储介质 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7138126B2 (ja) | リソース配置を最適化するための適時性リソース移行 | |
| JP5359295B2 (ja) | 負荷分散装置、負荷分散方法および負荷分散プログラム | |
| JP6186787B2 (ja) | データ転送装置、データ転送システム、データ転送方法及びプログラム | |
| JP2017129988A (ja) | バッチ制御システム、バッチ制御プログラム、及びバッチ制御方法 | |
| WO2012056596A1 (ja) | 計算機システム及び処理制御方法 | |
| JP7014130B2 (ja) | 負荷平準化装置、負荷平準化方法および負荷平準化プログラム | |
| JP4811830B1 (ja) | コンピュータリソース制御システム | |
| CN113672345A (zh) | 一种基于io预测的云虚拟化引擎分布式资源调度方法 | |
| JP2012198843A (ja) | 仮想サーバ調整システム、仮想サーバ制御装置及びプログラム | |
| KR20200080458A (ko) | 클라우드 멀티-클러스터 장치 | |
| JP5427504B2 (ja) | サービス実行装置、サービス実行方法 | |
| JP6295856B2 (ja) | 管理支援方法,管理支援装置及び管理支援プログラム | |
| JP7176633B2 (ja) | 仮想化基盤制御装置、仮想化基盤制御方法および仮想化基盤制御プログラム | |
| JP2006285316A (ja) | サーバ性能計測方法及びサーバ性能計測システム並びにこれらに用いるコンピュータプログラム | |
| JP2011013711A (ja) | サービスシステム、クラウドコンピューティングシステム及びサービスプログラム | |
| JP5935505B2 (ja) | 情報処理装置、仮想マシン制御方法、仮想マシン制御プログラム | |
| JP5667506B2 (ja) | クラスタシステムおよびソフトウェアアップデート方法 | |
| GB2507816A (en) | Calculating timeout for remote task execution from network delays and processing duration on local application/hardware replica | |
| JP5515810B2 (ja) | 負荷制御装置 | |
| CN108540546B (zh) | 网络节点入网控制方法、电子设备、网络系统和存储介质 | |
| JP5879117B2 (ja) | 情報処理システムおよび運用管理方法 | |
| WO2017141363A1 (ja) | データ処理システム及びデータ処理方法 | |
| JP2012141671A (ja) | 仮想計算機の移動方法、仮想計算機システム及び管理サーバ | |
| JP4883492B2 (ja) | 仮想マシン管理システムおよび計算機、並びに、プログラム | |
| JP2008250427A (ja) | 情報処理システムに用いられるバージョンアップ装置及び該装置を備えた情報処理システム並びに情報処理システムをバージョンアップするためのプログラム |