以下、本発明の実施形態について図面を参照して説明する。
図1は、本実施形態による運用管理システムのブロック図である。本実施形態による運用管理システム100は、アプリケーション稼働環境200上で動作する複数のアプリケーション370により実現された業務システムを運用するためのシステムである。本実施形態におけるアプリケーションは業務システムのジョブの単位に構成され、複数のアプリケーションを指定して実行することができる。
運用管理システム100は、予め与えられる運用要件310、運用ポリシ320、およびスケジュール330と、アプリケーション稼働環境200にてアプリケーション370が実行されたことで蓄積される稼働情報380とを入力とし、サイジング、スケジューリング、および運用改善候補探索の処理を実行し、サイジング情報340、スケジュール350、および運用改善候補360を出力する。
運用要件310は、アプリケーションに関連して要求される性能を含む業務システムがアプリケーションを実行することによりユーザに提供すべきサービスのレベルである。運用要件310は、例えば、業務システムのオペレータとユーザとの間で合意したSLA(Service Level Agreement)である。
運用ポリシ320は、業務システムの運用の指針である。運用ポリシ320には業務システムの運用にて、性能またはコスト等どのパラメータを優先させるかという情報が含まれる。
スケジュール330は、どの時間帯にどのアプリケーションにどのリソースを割り当てるかを示す情報である。スケジュール330は、運用管理システム100による業務システムの運用管理処理前から適用されているスケジュールであり、運用管理処理により適宜改善される。運用管理処理は、業務システムの運用を改善するための処理であり、その処理結果には業務システムに適宜適用される情報と、運用改善策の候補(運用改善候補)としてオペレータに提案される情報とが含まれる。リソースには、CPU(Central Processing Unit)、メモリなどハードウェアおよびソフトウェアのリソースが含まれる。
アプリケーション稼働環境200は、複数のアプリケーションにより実現される業務システムを稼働させる計算機(不図示)のハードウェアおよびソフトウェアの構成および状態である。アプリケーションの実行に利用可能なリソースはアプリケーション稼働環境200により決まる。
アプリケーション370は、業務システムのユーザが利用するソフトウェアプログラムである。業務システムは複数のアプリケーションにより実現される。
稼働情報380は、アプリケーションの実行に伴い発生するリクエストの開始あるいは完了のタイミングなど所定のタイミングで取得されるリソースの稼働に関する情報である。
サイジング情報340は、どのアプリケーションの実行にどれだけのリソースを利用するかを示す情報である。サイジング情報340は、運用管理システム100による運用管理処理の処理結果であり、業務システムに適宜適用される。
スケジュール350は、スケジュール330と同様、どの時間帯にどのアプリケーションにどのリソースを割り当てるかを示す情報である。ただし、スケジュール350は、運用管理処理により得られたスケジュールであり、業務システムに適宜適用される情報である。業務システムにスケジュール350を適用することにより、業務システムのリソースの運用が改善されると考えられる。
運用改善候補360は、運用管理処理の処理結果であり、業務システムの運用を改善する改善策の候補である。ただし、運用改善候補360は、サイジング情報340およびスケジュール350とは異なり、業務システムに適用する前にオペレータに提示される。運用改善候補360は、例えばハードウェア構成の変更など自動的に適用することができない改善策である。オペレータへの提示は例えばディスプレイ画面への表示である。オペレータは提示された運用改善候補360を業務システムに適用するか否か判断することができる。
図1を再び参照すると、運用管理システム100は、稼働情報取得部110と、稼働情報編集部120と、特徴点解析部130と、入力部140と、最適化実行部150と、運用改善候補提示部160と、出力部170とを有している。
稼働情報編集部120は、特徴点抽出部121と、運用結果抽出部122と、スケジュール結果抽出部123とを有している。特徴点解析部130は、アプリケーション特性判定部131を有している。入力部140は、運用要件入力部141と、運用ポリシ入力部142と、スケジュール入力部143とを有している。
最適化実行部150は、サイジング計画部151と、スケジュール決定部152と、再スケジュール部153とを有している。運用改善候補提示部160は、運用改善候補探索部161を有している。出力部170は、サイジング出力部171と、スケジュール出力部172と、運用改善候補出力部173とを有している。
一方、アプリケーション稼働環境200には運用管理システムの稼働情報取得部110と対をなす稼働情報取得部210が配置されている。運用管理システム100の稼働情報取得部110がサーバとなり、アプリケーション稼働環境200の稼働情報取得部210がエージェントとなり、運用管理システム100による稼働情報380の取得を実現する。
入力部140は、運用要件310、運用ポリシ320、およびスケジュール330を運用管理システム100に入力する。入力部140において、運用要件入力部141は、運用要件310を入力する。運用ポリシ入力部142は、運用ポリシ320を入力する。スケジュール入力部143は、スケジュール330を入力する。
稼働情報編集部120は、稼働情報取得部110、210により取得された稼働情報380から、アプリケーション370の特徴点情報と、業務システムの運用結果と、スケジュール結果とを抽出する。特徴点情報は、アプリケーション370の定量的性質を表す情報である。業務システムの運用結果は、業務システムが適切に運用されているか否かを示す。例えば、業務システムの運用結果として、与えられた運用要件310が満たされているかを示す情報が得られる。スケジュール結果は、業務システムが与えられたスケジュール330通りに適切に動作しているか否かを示す情報である。
稼働情報編集部120において、特徴点抽出部121は、稼働情報380から特徴点情報を抽出する。運用結果抽出部122は、稼働情報380から運用結果の情報を抽出する。スケジュール結果抽出部123は、稼働情報380からスケジュール結果の情報を抽出する。
特徴点解析部130は、特徴点抽出部121で抽出された、業務システムのアプリケーションの特徴点情報を解析し、アプリケーション特性判定部131にて、アプリケーション特性を判定する。アプリケーション特性は、アプリケーションの予め定められた定性的性質の項目に関する情報である。
最適化実行部150は、サイジング式具体化処理を行い、サイジング式を用いたサイジング(構成管理)処理およびスケジューリング処理または再スケジューリング処理を実行する。サイジング式具体化処理は、サイジング処理に用いるサイジング式の原型の式を基に、アプリケーションの特徴点情報およびアプリケーション特性と運用要件とに基づいて、サイジング式を具体化する処理である。なお、例えば、運用結果抽出部122にて、業務システムが適切に運用されていないという業務システムの運用結果が得られたときに、サイジングおよびスケジューリングの処理を開始することにしてもよい。また、スケジュール結果抽出部123にて、業務システムが与えられたスケジュール330通りに適切に動作していないというスケジュール結果が得られたときにサイジングおよびスケジューリングの処理を開始することにしてもよい。また、オペレータ操作により再スケジューリングの実行が指示されたときに、サイジングおよび再スケジューリングの処理を開始することにしてもよい。
サイジング処理およびスケジューリング処理を行う場合、最適化実行部150は、運用要件入力部141から与えられる運用要件310と、運用ポリシ入力部142から与えられる運用ポリシ320と、特徴点抽出部121から与えられる特徴点情報と、アプリケーション特性判定部131から与えられるアプリケーション特性と、アプリケーション稼働環境200の有するリソースにより定まるリソース制約とを入力とし、運用要件310およびリソース制約を満たし、運用ポリシ320に示された指針に従うように、計算機にて利用するリソース割り当て(サイジング情報340)およびスケジュール350を算出する。
サイジング処理および再スケジューリング処理を行う場合、最適化実行部150は、運用要件310と、運用ポリシ320と、特徴点情報と、アプリケーション特性と、リソース制約とに加え、スケジュール入力部143から与えられるスケジュール330と、を入力とし、スケジュール330から得られる情報の範囲内で運用要件310およびリソース制約を満たし、運用ポリシ320に示された指針に従うように、計算機にて利用するリソース割り当て(サイジング情報340)およびスケジュール350を算出する。
サイジング処理は、アプリケーションの実行に利用するリソースを決定する処理である。リソースにはCPUおよびメモリが含まれる。スケジューリング処理は、リソースをアプリケーションの実行に利用する時間帯を決定する処理である。サイジング処理にてアプリケーションの実行に利用すると決定されたリソースを、業務システムの各アプリケーションの実行にどの時間帯に利用するかが決定される。サイジング処理およびスケジューリング処理の結果は業務システムのアプリケーション稼働環境200に通知され、適宜適用される。
再スケジューリング処理は、例えば既存のスケジュールのような与えられたスケジュールから情報を得て、その情報の範囲内でサイジングおよびスケジューリングを行う処理である。与えられたスケジュールから得る情報には、アプリケーションの実行に利用されるリソースの情報、アプリケーションの実行開始から実行完了までの時間の情報と、が含まれる。限られたリソースを用いてアプリケーションを実行し、限られた時間内に処理を完了させるスケジュールが算出される。
最適化実行部150において、サイジング計画部151は、サイジング処理を実行する。スケジュール決定部152は、スケジューリング処理を実行する。再スケジュール部153は、再スケジューリング処理を実行する。
運用改善候補提示部160は、運用改善候補探索部161により運用改善候補探索処理を実行する。運用改善候補探索処理は、アプリケーションの内部処理の変更またはアプリケーション稼働環境200を実現する計算機のハードウェア構成の変更を伴う運用改善策を探索する処理である。例えば、リソース制約には計算機のハードウェア構成によるCPU数およびメモリ容量の制限が含まれているとする。運用改善候補探索部161は、リソース制約で制限された計算機のCPUまたはメモリを追加または削除する運用改善策を提案する。運用改善候補探索処理の結果である運用改善策は、サイジング処理およびスケジューリング処理の結果と異なり、アプリケーションあるは計算機のハードウェア構成の変更を伴うので、すぐに適用することができない。運用改善策は、運用改善候補360としてオペレータに提示され、適用の可否が判断される。
出力部17は、サイジング処理の結果であるサイジング情報340と、スケジューリング処理の結果であるスケジュール350と、運用改善候補探索処理の結果である運用改善候補360を出力する。出力部170において、サイジング出力部171はサイジング情報340を出力する。スケジュール出力部172は、スケジューリング処理あるいは再スケジューリング処理の結果であるスケジュール350を出力する。運用改善候補出力部173は運用改善候補360を出力する。
以上説明したように、本実施形態による運用管理システム100は、稼働情報編集部120と、アプリケーション特性判定部131と、最適化実行部150と、を有している。稼働情報編集部120は、アプリケーションの実行に利用するリソースを定めた第1リソース割り当ておよびリソースをアプリケーションの実行に利用する時間帯を定めた第1スケジュールに従って計算機にて実行されたアプリケーションによるリソースの利用を記録した稼働情報を与えられ、その稼働情報に基づいて、アプリケーションの所定の定量的性質を表す特徴点情報を生成する。アプリケーション特性判定部131は、その特徴点情報に基づいて、アプリケーションの所定の定性的性質を表すアプリケーション特性を判定する。最適化実行部150は、アプリケーションに関連して要求される性能を指定した運用要件と、計算機にて利用可能なリソースの制約を示すリソース制約と、計算機の運用の指針を示す運用ポリシとを与えられ、前記アプリケーションの前記特徴点情報および前記アプリケーション特性に基づいて、前記運用要件および前記リソース制約を満たし、前記運用ポリシに示された指針に従うように、前記計算機にて利用する第2リソース割り当ておよび第2スケジュールを算出する。このように、稼働情報からアプリケーションの定量的性質である特徴点情報を生成し、その特徴点情報から定性的性質であるアプリケーション特性を判定し、特徴点情報とアプリケーション特性を利用して適切なリソースおよびスケジュールを算出することができるので、アプリケーション特性が未知であっても計算機の運用の改善が可能である。
また、本実施形態では、運用改善候補探索部161は、アプリケーション特性に基づき、アプリケーションまたは計算機の変更を伴う運用改善策を提案する。このように、稼働情報に基づいてアプリケーション特性を推定し、そのアプリケーション特性に基づいて運用改善策を算出するので、アプリケーション特性が未知であっても改善策により計算機システムの改善が可能となる。
また、本実施形態では、出力部170は、第2リソース割り当ておよび第2スケジュールを計算機に適用し、運用改善策を、計算機を運用するオペレータ(運用者)に提示する。現在のアプリケーションおよび計算機の構成により適用可能なリソース割り当ておよびスケジュールを計算機に適用するとともに、アプリケーションおよび計算機の構成の変更を伴う運用改善策をオペレータに提示するので、現状での良好な計算機の運用を実現するとともに将来の更なる改善も可能となる。
次に本実施形態による運用管理システムが実行する処理について説明する。
図2は、本実施形態による運用管理システムが実行する運用管理処理のフローチャートである。
図2を参照すると、運用管理処理において、稼働情報取得部110は、ステップS101において、アプリケーション稼働環境200の稼働情報取得部210と連携して、アプリケーション370の稼働情報380を取得する。次に、特徴点抽出部121は、ステップS102にて、稼働情報380から、アプリケーション370の特徴点情報を抽出する。続いて、アプリケーション特性判定部131は、ステップS103にて、特徴点情報に基づき、アプリケーション370のアプリケーション特性を判定する。次に、運用要件入力部141は、ステップS104にて、最適化実行部150に運用要件310を入力する。次に、運用ポリシ入力部142は、ステップS105にて、最適化実行部150に運用ポリシ320を入力する。
次に、サイジング計画部151は、ステップS106にて、サイジング式具体化処理を実行する。更に、最適化実行部150では、ステップS107にて、サイジング計画部151がサイジング処理(構成管理処理)を行い、スケジュール決定部152がスケジューリング処理を実行する。サイジング処理の結果としてサイジング情報340(第2リソース割り当て)が生成される。スケジューリング処理の結果として、スケジュール350(第2スケジュール)が生成される。サイジング処理およびスケジューリング処理は最適化エンジンにより行われる。例えば、最適化実行部150は、第2リソース割り当てとして、アプリケーションに割り当てるCPU、メモリ領域、およびプロセスの同時実行数を算出する。また、最適化実行部150は、第2スケジュールとして、計算機上で実行されるアプリケーションの開始時刻および終了時刻と利用するリソースとを算出する。
次に、運用改善候補探索部161は、ステップS108にて、運用候補改善処理を実行する。運用改善候補探索処理の結果として、運用改善候補360が生成される。更に、出力部170は、ステップS109にて、サイジング出力部171によりサイジング情報340を出力し、スケジュール出力部172によりスケジュール350が出力され、運用改善候補出力部173により運用改善候補360が出力される。
なお、図2にて、破線の四角形で囲われた部分は、1つ以上のアプリケーションに対する処理である。その詳細処理は後述する。つまり、ステップS101~S102、ステップS103、ステップS106、ステップS107、ステップS108の詳細な処理は後述する。
以下、図2に示した各処理の詳細について説明する。
図3は、本実施形態における特徴点抽出処理について説明するための図である。特徴点抽出部121は、図3に示すように予め定められた特徴点情報の各項目の値を稼働情報380から抽出する。
図3には、特徴点情報の各項目について、その項目の情報が抽出される稼働ログの種類と、そのログが出力される単位とを記載したテーブルが示されている。稼働ログは稼働情報380としてアプリケーション稼働環境200にて取得された履歴情報である。図3の例では、特徴点情報として抽出される項目として、実行時間、CPU時間、総メモリアロケート量、最大メモリ参照サイズ、最大メモリ参照寿命、実行後参照メモリサイズ、DB(データベース)アクセス時間、ファイルIO(ファイル入出力処理)時間、NWIO(ネットワーク入出力処理)時間、排他待ち時間、スループット、その他待ち時間、GC(ガベージコレクション)占有率、Javaヒープ確保サイズ、GC所要時間、GC後Javaヒープサイズ残量がある。
その中で例えば、実行時間は、リクエストトレースというログから抽出されることが示されている。また、リクエストトレースの出力単位がアプリケーション別あるいはプロセス別であることが示されている。実行時間とは、所定の実行単位を実行するのに要する時間であり、具体的には、1トランザクションでの応答時間、あるいは1つの実行単位に含まれる複数(数千から数万)の処理を行うのに要する時間である。ここでいう実行単位は、アプリケーションにおいてCPUを利用して実行するひとまとまりの処理単位であり、例えば、プログラム、トランザクション、プロセス、スレッドなどである。1つの実行単位に含まれる処理の例としてデータベースへのアクセスがある。実行時間は、CPU時間、IO時間及び待ち時間の合計であり、ETIMEと呼ばれることもある。特徴点抽出部121は、アプリケーション毎に出力されたリクエストトレースからアプリケーションの実行時間を抽出することができる。
また、例えば、CPU時間は、リクエストトレースというログから抽出されることが示されている。また、リクエストトレースの出力単位がアプリケーション別あるいはプロセス別であることが示されている。CPU時間は、所定の実行単位を実行するのにCPUが稼働する時間である。特徴点抽出部121は、アプリケーション毎に出力されたリクエストトレースからアプリケーションのCPU時間を抽出することができる。
また、例えば、総メモリアロケート量は、メモリプロファイルというログから抽出されることが示されている。また、メモリプロファイルの出力単位がアプリケーション別あるいはプロセス別であることが示されている。総メモリアロケート量は、アプリケーションの所定の実行単位を実行するために割り当てられたメモリ領域の総容量である。特徴点抽出部121は、アプリケーション毎に出力されたメモリプロファイルから総メモリアロケート量を抽出することができる。
本実施形態による運用管理システム100では、管理対象の業務システムを実行する計算機がリソースとしてメモリおよびCPUを有している。本実施形態では、稼働情報編集部120において、特徴点抽出部121は、稼働情報380から値を抽出することにより、特徴点情報として少なくとも、アプリケーションの所定の実行単位ごとに割り当てるメモリ領域の総量である総メモリアロケート量と、所定の実行単位を実行するのにCPUが稼働した時間であるCPU時間と、所定の実行単位を実行するのに要した時間である実行時間と、を生成する。総メモリアロケート量、CPU時間、および実行時間があると、リソース割り当ておよびスケジュールが適切かどうか診断するうえで主要なアプリケーション特性を判定することができる。最小構成の特徴点情報(総メモリアロケート量、CPU時間、および実行時間)によりプログラムの主要な特徴を把握し、適切なリソース割り当ておよびスケジュールを算出することができる。
以下、アプリケーション特性判定処理を更に詳細に説明する。
図4、図5は、本実施形態におけるアプリケーション特性判定処理のフローチャートである。
図4を参照すると、アプリケーション特性判定部131は、ステップS201にて、実行時間が60秒よりも短いか否か判定する。実行時間を以下Rと記す場合がある。実行時間が60秒よりも短ければ、アプリケーション特性判定部131は、ステップS203にて、アプリケーション特性のアプリケーション種別の項目をオンライン処理「オンライン」と決定する。
実行時間が60秒よりも短くなければ、アプリケーション特性判定部131は、ステップS202にて、実行時間が3600秒よりも短いか否か判定する。実行時間が3600秒よりも短ければ、アプリケーション特性判定部131は、ステップS204にて、アプリケーション種別の項目をオンバッチ処理「オンバッチ」と決定する。
実行時間が3600秒よりも短くなければ、アプリケーション特性判定部131は、ステップS205にて、アプリケーション種別の項目をオフバッチ処理「オフバッチ」と決定する。
なお、ステップS201、S202にて用いる閾値はアプリケーション種別を識別するのに適切な値に予め設定しておけばよい。例えば、多数のアプリケーションとその実行時間を関連づけた情報を収集し、その情報から適切な閾値を決定することにしてもよい。
ステップS203、S204、またはS205の後、アプリケーション特性判定部131は、ステップS206にて、CPU時間/実行時間が80%よりも大きいか否か判定する。CPU時間/実行時間が80%よりも大きければ、アプリケーション特性判定部131は、ステップS210にて、CPUバウンドであるか否かを示す項目を、CPUバウンドであることを示す「1」と決定する。
CPU時間/実行時間が80%よりも大きくなければ、アプリケーション特性判定部131は、ステップS207にて、DBアクセス時間/実行時間が80%よりも大きいか否か判定する。DBアクセス時間/実行時間が80%よりも大きければ、アプリケーション特性判定部131は、ステップS211にて、DBアクセスバウンドであるか否かを示す項目を、DBアクセスバウンドであることを示す「1」と決定する。
DBアクセス時間/実行時間が80%よりも大きくなければ、アプリケーション特性判定部131は、ステップS208にて、ファイルIO時間/実行時間が80%よりも大きいか否か判定する。ファイルIO時間/実行時間が80%よりも大きければ、アプリケーション特性判定部131は、ステップS212にて、ファイルIOバウンドであるか否かを示す項目を、ファイルIOバウンドであることを示す「1」と決定する。
ファイルIO時間/実行時間が80%よりも大きくなければ、アプリケーション特性判定部131は、ステップS209にて、NWIO時間/実行時間が80%よりも大きいか否か判定する。NWIO時間/実行時間が80%よりも大きければ、アプリケーション特性判定部131は、ステップS213にて、NWIOバウンドであるか否かを示す項目を、NWIOバウンドであることを示す「1」と決定する。
なお、ステップS206、S207、S208、およびS209にて用いる閾値はアプリケーションの特徴を判断するのに適切な値に設定すればよい。ここではアプリケーションの特徴を判定する際に一般的に用いられる80%という値を用いた。
ステップS210、S211、S212、あるいはS213の後、あるいはステップS209にてNOと判定されたとき、アプリケーション特性判定部131は、ステップS214にて、アプリケーション種別がオンラインであるか否か判定する。アプリケーション種別がオンラインであれば、アプリケーション特性判定部131は、ステップS215にて、CPU時間が100msecより大きいか否か判定する。CPU時間が100msecより大きければ、アプリケーション特性判定部131は、ステップS217にて、CPUコストが大きいか否かを示す項目をCPUコストが大きいことを示す「1」と決定する。
CPU時間が100msecより大きくなければ、アプリケーション特性判定部131は、ステップS216にて、総メモリアロケート量が100MBより大きいか否か判定する。総メモリアロケート量が100MBより大きければ、アプリケーション特性判定部131は、メモリコストが大きいか否かを示す項目をメモリコストが大きいことを示す「1」と決定する。
なお、ステップS215、S216にて用いる閾値はコストの大小を判定するのに適切な値に予め設定しておけばよい。例えば、多数のアプリケーションについて情報を収集し、その情報から適切な閾値を決定することにしてもよい。
ステップS214の判定でNOのとき、あるいはステップS217、S218の後、図5に移り、アプリケーション特性判定部131は、ステップS301にて、排他待ち時間/実行時間が5%より大きいか否か判定する。排他待ち時間/実行時間が5%より大きければ、アプリケーション特性判定部131は、ステップS302にて、実行時間のうち排他待ち時間の割合が大きいか否かを示す項目を、その割合が大きいことを示す「1」と決定する。
ステップS302の後、あるいはステップS301にてNOと判定されたとき、アプリケーション特性判定部131は、ステップS303にて、GC所要時間が10秒より大きいか否か判定する。GC所要時間が10秒よりも大きければ、アプリケーション特性判定部131は、ステップS305にて、GC所要時間が大きいか否かを示す項目を、GC所要時間が大きいことを示す「1」と決定する。
GC所要時間が10秒よりも大きくなれば、アプリケーション特性判定部131は、ステップS304にて、GC占有率が2%より大きいか否か判定する。GC占有率が2%より大きければ、アプリケーション特性判定部131は、GC占有率が大きいか否かを示す項目をGC占有率が大きいことを示す「1」と決定する。
ステップS305、S306の後、あるいはステップS304にてNOと判定されたとき、アプリケーション特性判定部131は、ステップS307にて、これまでの判定で得られたアプリケーション特性の各項目の情報をアプリケーション特性テーブルに出力する。
なお、ステップS301、S303、S304にて用いる閾値はアプリケーションの各特徴を判定するのに適切な値に予め設定しておけばよい。例えば、多数のアプリケーションについて情報を収集し、その情報から適切な閾値を決定することにしてもよい。
以上説明したように、本実施形態では、アプリケーション特性判定部131は、特徴点情報に基づいてアプリケーション特性の各項目について判定する。特に、アプリケーション特性判定部131は、アプリケーション特性として、オンライン処理か否かを含むアプリケーション種別を実行時間に基づいて判定し、アプリケーション種別がオンラインであれば、メモリコストを総メモリアロケート量に基づいて判定し、CPUコストをCPU時間に基づいて判定する。これらはアプリケーション特性として最小構成であり、本実施形態では、これらの項目を容易に判定することができる。
図6は、本実施形態におけるサイジング式具体化処理のフローチャートである。
図6を参照すると、サイジング計画部151は、ステップS401にて、アプリケーション種別がオンライン処理であるか否か判定する。この判定はアプリケーション特性テーブルを参照することにより行う。アプリケーション種別がオンライン処理であれば、サイジング計画部151は、ステップS403にて、オンライン処理のサイジング式の原型の式の設定可能箇所に対して、特徴点情報および運用要件の各値を設定し、具体的なサイジング式を生成する。
ステップS401にてNOと判定された場合、サイジング計画部151は、ステップS402にて、アプリケーション種別がオンバッチ処理であるか否か判定する。アプリケーション種別がオンバッチ処理であれば、サイジング計画部151は、ステップS403に進み、オンライン処理のサイジング式の原型の式を用いて、具体的なサイジング式を生成する。
ステップS402にてNOと判定された場合、サイジング計画部151は、バッチ処理のサイジング式の原型の式の設定可能箇所に対して、特徴点情報および運用要件の各値を設定し、具体的なサイジング式を生成する。
ステップS403、S404の後、サイジング計画部151は、ステップS405にて、ステップS403またはS404で生成したサイジング式をスケジュール処理に渡す。
図7は、本実施形態におけるコスト優先のスケジューリング処理について説明するための図である。図7を参照すると、特徴点情報、アプリケーション特性、および運用要件をサイジング式の原型に適用することにより各アプリケーションのサイジング式が具体化されている。その各アプリケーションのサイジング式と運用ポリシを、構成管理(サイジング)およびスケジューリングを行う最適化エンジンに適用する。
ここではコスト優先の運用ポリシが用いられている。コスト優先の運用ポリシには、最適化目標として、運用コストが2000000円以下という内容が設定されている。また、制約条件として先行条件や開始時刻および終了時刻が設定されている。
サイジングの結果として得られた構成定義には、それぞれにJavaVMを実行基盤として動作するアプリケーション1およびアプリケーション2にはCPU#1、CPU#2、および10GBのメモリが割り当てられることが示されている。
スケジューリングの結果として得られるスケジュール結果テーブルには、6:00〜18:00の時間帯にはCPU#1およびCPU#2上でアプリケーション1(0001)が動作し、18:00以降はCPU#1およびCPU#2上でアプリケーション2(0002)が動作することが示されている。
図8は、本実施形態における性能優先のスケジューリング処理について説明するための図である。図8を参照すると、ここでは性能優先の運用ポリシが用いられている。性能優先の運用ポリシには、最適化目標として、完了時刻が18:00以前であることが必須であるという内容が設定されている。また、制約条件として先行条件や開始時刻および終了時刻が設定されている。
サイジングの結果として得られた構成定義には、それぞれにJavaVMを実行基盤として動作するアプリケーション1およびアプリケーション2にはCPU#1、CPU#2、CPU#3、および15GBのメモリが割り当てられることが示されている。
スケジューリングの結果として得られるスケジュール結果テーブルには、6:00〜18:00の時間帯に、CPU#1およびCPU#2上でアプリケーション1(0001)が動作し、CPU#3上でアプリケーション2(0002)が動作することが示されている。
図7と図8の構成定義を比較すると、図7の場合の方が図8の場合よりも少ないCPUおよびメモリでアプリケーション1、2を動作させることが分かる。また、図7と図8のスケジュール結果テーブルを比較すると、図8の場合の方が図7の場合よりもアプリケーション1、2の処理を短い時間で完了させることが分かる。
なお、サイジングおよびスケジューリングの処理には制約条件が課される場合がある。その場合、サイジング計画部151およびスケジュール決定部152は、運用要件および運用ポリシに加え、制約条件を満たすようにして構成定義およびスケジュールを算出する。
どのような制約条件を用いるかは特に限定されないが、以下に制約条件のいくつかの例を示す。
<1>ガベージコレクションの要件が厳しいJava固有のアプリケーションに課される制約条件の例
本例の制約条件は式(1)を満たすようにスケジューリングを行うことという制約条件である。数式中の各項の「:」は、「テーブル名:項目」を意味する。
なお、この制約条件は、アプリケーション特性におけるGC占有率が大きいか否かという項目に、大きいことを意味するフラグ「1」が設定されているアプリケーションが対象となる。
<2>ガベージコレクションの要件が厳しいJava固有のアプリケーションに課される制約条件の他の例
本例の制約条件は式(2)を満たすようにスケジューリングを行うことという制約条件である。式(2)により算出される1プロセスあたりのスループットを基に、サイジング式により1プロセスについてのサイジングを行う。サイジング処理は、上述した通り、アプリケーションの実行に利用するリソースを決定する処理である。得られたリソースに基づいて、運用要件を満たすためのプロセス数を決定する。運用要件を満たすプロセス数は式(3)により算出することができる。数式中の各項の「:」は、「テーブル名:項目」を意味する。
なお、この制約条件は、アプリケーション特性におけるGC所要時間が大きいか否かという項目に、大きいことを意味するフラグ「1」が設定されているアプリケーションが対象となる。
<3>アプリケーション間でリソースを平準化するための制約条件(Javaアプリケーションに限定されない)
本例の制約条件は、ファイルIOバウンドであることを示すフラグが「1」またはNWIOバウンドであることを示すフラグが「1」であるアプリケーションが同時に実行されないようにスケジューリングを行うという制約条件である。ファイルIOバウンドとNWIOバウンドを総称してIOバウンドと呼ぶことがある。この制約条件は、IOバウンドのいずれかのフラグが「1」であるアプリケーションが対象となる。
図9および図10は、本実施形態における運用改善候補探索処理のフローチャートである。
図9を参照すると、運用改善候補探索部161は、ステップS501にて、アプリケーション種別がオンライン処理か否か判定する。オンライン処理であれば、運用改善候補探索部161は、ステップS502にて、CPUコストが大きいか否か判定する。CPUコストが大きければ、アプリケーションがオンライン処理であるかつCPU時間が重いため、運用改善候補探索部161は、ステップS503にて、ダイナミックステップの見直しを提案する。
更に、運用改善候補探索部161は、ステップS504にて、メモリコストが大きいか否か判定する。メモリコストが大きければ、アプリケーションがオンライン処理かつメモリ使用量が多いため、運用改善候補探索部161は、ステップS505にて、メモリの使い方の見直しを提案する。
更に、運用改善候補探索部161は、ステップS506にて、実行時間のうち排他待ち時間の割合が大きいか否か判定する。実行時間のうち排他待ち時間の割合が大きければ、排他待ち時間が比較的大きいため、運用改善候補探索部161は、ステップS507にて、排他処理の見直しを提案する。
更に、運用改善候補探索部161は、ステップS508にて、アプリケーションがDBアクセスバウンドであるか否か判定する。アプリケーションがDBアクセスバウンドであれば、運用改善候補探索部161は、DBアクセスが重いため、ステップS509にて、SQLまたはDBサーバチューニングを提案する。
更に、運用改善候補探索部161は、ステップS510にて、アプリケーションがファイルIOバウンドであるか否か判定する。アプリケーションがファイルIOバウンドであれば、ファイルIOが重いため、運用改善候補探索部161は、ステップS511にて、IO処理またはディスクチューニングを提案する。
更に、運用改善候補探索部161は、ステップS512にて、アプリケーションがNWIOバウンドであるか否か判定する。アプリケーションがNWIOバウンドであれば、NWIOが重いため、運用改善候補探索部161は、ステップS513にて、NW処理またはNWチューニングを提案する。
ステップS501の判定でアプリケーション種別がオンライン処理でなければ、図10に示すように、運用改善候補探索部161は、ステップS601にて、実行時間のうち排他待ち時間の割合が大きいか否か判定する。実行時間のうち排他待ち時間の割合が大きければ、運用改善候補探索部161は、ステップS602にて、排他処理の見直しを提案する。
更に、運用改善候補探索部161は、ステップS603にて、アプリケーションがDBアクセスバウンドであるか否か判定する。アプリケーションがDBアクセスバウンドであれば、運用改善候補探索部161は、DBアクセスが重いため、ステップS604にて、SQLまたはDBサーバのチューニングを提案する。
更に、運用改善候補探索部161は、ステップS605にて、アプリケーションがファイルIOバウンドであるか否か判定する。アプリケーションがファイルIOバウンドであれば、運用改善候補探索部161は、ファイルIOが重いため、ステップS606にて、IO処理またはディスクのチューニングを提案する。
更に、運用改善候補探索部161は、ステップS607にて、アプリケーションがNWIOバウンドであるか否か判定する。アプリケーションがNWIOバウンドであれば、運用改善候補探索部161は、NWIOが重いため、ステップS608にて、NW処理またはNWおnのチューニングを提案する。
図11は、本実施形態における運用管理システムが実行する再スケジューリング処理のフローチャートである。再スケジューリング処理は既存のスケジュールを改善するための処理である。そのため、既存のスケジュールから得られる情報の範囲でのスケジュールの最適化を行う。
オペレータは、本実施形態による運用管理システムを用いて、スケジュールを再度生成しなおすことができる。
図11を参照すると、運用ポリシ入力部142が、ステップS701にて、運用ポリシ320を取得する。続いて、ステップS702にて、再スケジュール部153は、スケジュール入力部143が入力した既存のスケジュール330を取得する。この既存のスケジュール330は例えばアプリケーション稼働環境200に現在適用されているスケジュール330であってもよい。
サイジング計画部151は、ステップS703にて、予め得られている特徴点情報、アプリケーション特性、および運用要件と、ステップS701で取得された運用ポリシ320とを用いてサイジングを行う。更に、再スケジュール部153は、ステップS704にて、ステップS702で取得した既存のスケジュール330を改善するスケジュールを生成する。このとき再スケジュール部153は、スケジュール決定部152に指示し、スケジューリング処理を実行させる。既存のスケジュール330よりも改善したスケジュールというのは、例えば、運用ポリシ320に適合したスケジュールである。
続いて、運用改善候補探索部161は、ステップS705にて、運用改善候補を探索する。運用改善候補探索部161は、図9および図10に示した運用改善候補探索処理を実行する。
最後に、ステップS706にて、サイジング出力部171がステップS703のサイジングの結果を出力し、スケジュール出力部172がステップS704のスケジューリングの結果を出力し、運用改善候補出力部173がステップS705の運用改善候補探索の結果を出力する。
図12は、本実施形態における運用管理システムが実行する運用要件見直し処理のフローチャートである。運用要件見直し処理は、実際のアプリケーションの稼働に基づいて運用要件の充足を評価する処理である。稼働情報に基づいてアプリケーションの特徴点情報およびアプリケーション特性を再度取得し、その新たな情報に基づいて運用要件の充足を評価する。
図12を参照すると、稼働情報取得部110は、ステップS801にて、アプリケーション稼働環境200の稼働情報取得部210と連携し、稼働情報380を取得する。次に、運用結果抽出部122が、ステップS802にて、稼働情報から運用結果を抽出する。
次に、特徴点抽出部121は、ステップS803にて、アプリケーションの特徴点を抽出し、特徴点情報を生成する。続いて、アプリケーション特性判定部131は、ステップS804にて、特徴点情報に基づきアプリケーション特性を判定する。更に、運用ポリシ入力部142が、ステップS805にて、運用ポリシ320を入力する。
サイジング計画部151は、ステップS806にて、ステップS803で取得された特徴点情報、ステップS804で取得されたアプリケーション特性、ステップS802にて、稼働情報から抽出した運用結果に含まれる運用要件、およびステップS805で取得された運用ポリシ320を用いてサイジングを行う。更に、スケジュール決定部152は、ステップS807にて、スケジューリング処理を実行する。
続いて、運用改善候補探索部161は、ステップS808にて、運用改善候補を探索する。運用改善候補探索部161は、図9および図10に示した運用改善候補探索処理を実行する。
最後に、ステップS809にて、サイジング出力部171がステップS806のサイジングの結果を出力し、スケジュール出力部172がステップS807のスケジューリングの結果を出力し、運用改善候補出力部173がステップS808の運用改善候補探索の結果を出力する。オペレータは,実際の稼働情報に基づいて取得しなおした特徴点情報およびアプリケーション特性に基づいて実行したサイジング、スケジューリング、および運用改善候補探索の結果を見ることで、運用要件が適切かどうかを評価することができる。サイジングおよびスケジューリングが適切に行われていれば運用要件が適切であると推定できる。また、運用改善候補探索の結果を見れば、運用要件をどのように修正するとよいのかを知ることができる。
続いて、サイジング式の例について説明する。
オンライン処理とバッチ処理とではサイジングの考え方が異なるため、上述したようにそれぞれに基本構成に異なるサイジング式を用いる。最適化実行部150のサイジング計画部151は、アプリケーション種別に応じたサイジング式を用いて、リソース割り当てを算出する。リアルタイム性が要求されるアプリケーションであるか否かによりサイジングの仕方が異なるので、それらの算出式を分けることにより適切なサイジングが容易に可能となる。
<1>オンライン処理のサイジング式の例
オンライン処理のサイジング式の基本構成について説明する。ここでは、サイジング式により算出する対象を、アプリケーションの実行に割り当てる、Javaヒープサイズ、CPU数、および同時実行数とする。Javaヒープサイズはメモリサイズに相当する。
JavaヒープサイズはJavaヒープサイズ=New+Oldにより算出する。Newは、New=(T×MT×cd)+(T×R×MR×2)であり、OldはOld=(T×MA×fd)+(T×MA×ML)+αである。Tはスループットであり、T=総処理件数(TT)÷アプリケーションのスケジュール時間と表される。スケジュール時間は、スケジュールされた実行時間であり、スケジュールに依存する。なお、運用要件にてスループットが指定されている場合には、その指定されたスループットの値をTに用いる。MTは、総メモリアロケート量である。cdは、CopyGC発生間隔であり、例えば10秒といった通常値を用いることができる。Rは、実行時間である。MRは、最大メモリ参照サイズである。MAは、実行後参照メモリサイズである。fdは、fullGC発生間隔である。運用要件に指定されたfdを用いればよい。運用要件にfdが指定されていない場合には、例えば3600秒といった通常値を用いてもよい。また、ガベージコレクションが無い場合、fdはアプリケーションのスケジュール時間と同じとなる。MLは、最大メモリ参照寿命である。αは、アプリケーションが業務以外に使用する管理用のメモリ領域のサイズであり、例えば、100MB程度を見込んでおけばよい。
CPU数は、CPU数=C×Tにより算出する。CはCPU時間である。
同時実行数は、同時実行数=T×(R−特徴点:その他の待ち時間)により算出する。特徴点情報である、その他待ち時間は、JavaVMにおける実行待ちキューでの待ち時間を指す。
<2>バッチ処理のサイジング式の例
バッチ処理のサイジング式の基本構成について説明する。ここでも、サイジング式により算出する対象を、アプリケーションの実行に割り当てる、Javaヒープサイズ、CPU数、および同時実行数とする。
JavaヒープサイズはJavaヒープサイズ=New+Oldにより算出する。ここでは、Newは、New=αであり、OldはOld=(T×MT×fd)+(T×R×MR)+βである。αは、アプリケーションが業務以外に使用する管理用のメモリ領域のサイズであり、例えば500MB程度を見込んでおけばよい。MTは、<1>と同様、総メモリアロケート量である。fdは、<1>と同様、fullGC発生間隔である。Rは、<1>と同様、実行時間である。MRは、<1>と同様、最大メモリ参照サイズである。βは、アプリケーションが業務以外に使用する管理用のメモリ領域のサイズであり、例えば、100MB程度を見込んでおけばよい。
CPU数は、<1>と同様、CPU数=C×Tにより算出する。Cは<1>と同様、CPU時間である。
同時実行数は、<1>と同様、同時実行数=T×(R−特徴点:その他の待ち時間)により算出する。特徴点情報である、その他待ち時間は、やはり、JavaVMにおける実行待ちキューでの待ち時間を指す。
以上説明したように、特徴点情報には、アプリケーションに割り当てるCPUの個数を示すCPU数があり、<1>および<2>のいずれにおいても同様に、最適化実行部150は、アプリケーションのプロセスがCPUを使用する時間であるCPU時間に応じてCPU数を決定する。アプリケーションのプロセスに要する時間が長ければCPU数を増やして、運用要件にて要求されるスループットを実現するといった運用が可能である。
また、特徴点情報には、アプリケーションのプロセスを並行して実行可能な個数である同時実行数があり、<1>および<2>のいずれにおいても同様に、最適化実行部150は、アプリケーションのプロセスが実行された時間である実行時間から、実行待ちキューでの待ち時間を減算して得られた時間に応じて同時実行数を決定する。アプリケーションのプロセスに実際に要する時間が長ければ同時実行数を増やして運用要件にて要求されるスループットを実現することができる。
図13は、本実施形態における特徴点情報テーブルの一例を示す図である。
図13を参照すると、アプリケーション毎に、アプリケーションID(アプリID)、実行時間(R)、CPU時間(C)、総メモリアロケート量(MT)、最大メモリ参照サイズ(MR)、最大メモリ参照寿命(ML)、実行後参照メモリサイズ(MA)、DBアクセス時間、ファイルIO時間、NWIO時間、排他待ち時間、スループット、その他待ち時間、GC占有率、Javaヒープ確保サイズ、GC所要時間、GC後ヒープサイズ残量が記録されている。
実行時間は、内部保留時間であり、クライアントから見たレスポンス時間からネットワークによる通信時間を引いた時間である。その他待ち時間は、JavaVMにおける実行待ちキューでの待ち時間を指し、実行時間から、CPU時間、DBアクセス時間、ファイルIO時間、NWIO時間、排他待ち時間を除いた時間である。
アプリケーションの実行時間の間に、累積的にメモリのアロケートが行われる。実行時間の間にアロケートされたメモリの総量が、総メモリアロケート量である。実行中のアプリケーションにアロケートされているメモリのうち、参照されなくなった部分(ゴミ)を除いた部分(アクティブなメモリ)のメモリサイズを最大メモリ参照サイズと呼ぶ。また、アプリケーションの実行が終わったときに参照される部分として残っていたメモリのメモリサイズを実行後参照メモリサイズと呼ぶ。また、実行後参照メモリサイズのメモリが残り続ける期間を最大メモリ参照寿命と呼ぶ。
なお、図13においては、図14に示すアプリケーション特性の判定にて参照される値を〇(丸印)で示している。
図14は、本実施形態におけるアプリケーション特性テーブルの例を示す図である。
図14を参照すると、アプリケーション毎に、アプリケーションID、アプリケーション種別、CPUバウンド、DBアクセスバウンド、ファイルIOバウンド、NWIOバウンド、CPUコスト大、メモリコスト大、排他割合大、GC所要時間大、GC占有率大という項目の値が記録されている。CPUバウンド、DBアクセスバウンド、ファイルIOバウンド、NWIOバウンド、CPUコスト大、メモリコスト大、排他割合大、GC所要時間大、およびGC占有率大には、該当することを「1」により示すフラグが記録される。アプリケーション種別としては、オンライン処理、オンバッチ処理、オフバッチ処理の種別が記録されている。
図15は、本実施形態における運用要件テーブルの例を示す図である。
図15を参照すると、アプリケーション毎に、アプリケーションID、総処理件数(TT)、スループット(T)、実行時間(R)、サービス時間帯(ST)、先行条件、フルGC間隔(FL)、およびフルGC時間(FD)が記録されている。先行条件は、当該アプリケーションを実行する前に完了している必要のあるアプリケーションが設定されている。先行条件の欄には、事前に完了している必要のあるアプリケーションのアプリケーションIDが記録されている。実行時間の欄に括弧で示された数値は、最悪値を表している。最悪値は、括弧なしで示されている通常の実行時間に加えて、フルGCが発生した場合にフルGCに要する時間(フルGC時間(FD))を考慮した時間である。
次に、運用ポリシの例について説明する。
運用ポリシは、運用要件およびその他の条件に基づいてアプリケーション毎に設定される。その他の条件は例えば運用コストなどである。運用ポリシには、複数項目が指定された運用要件のうち、どの項目を優先させるかというような内容が設定される。図16は、運用ポリシの例について説明するための図である。図16の例では、4項目の運用要件が設定されている。要件(1)は、ピーク時のスループットが1万件という要件である。要件(2)は、実行時間が2秒以内という要件である。要件(3)は、データ検索対象件数が10万件という要件である。また、要件(4)は、平均表示件数が、1リクエスト当たり30件という要件である。
図16には2つの運用ポリシの例が示されている。最初の運用ポリシは、月末の繁忙期に適用することを想定した運用ポリシである。目的関数として、要件(2)を絶対条件とすることが設定されている。また、制約条件として、要件(1)、要件(3)、要件(4)、およびGCがないという条件が課されている。最適化処理において目的関数は制約条件よりも優先度が高い。2つ目の運用ポリシは、通常時に適用することを想定した運用ポリシである。目的関数として、運用コストを最小化することが設定されている。また、制約条件として、要件(2)の実行時間が2.6秒以内され、更に、要件(1)、要件(3)、要件(4)、およびGCを許容するという条件が設定されている。
図16に示したように、運用ポリシには、コストに関する指定項目と性能に関する指定項目を含む複数の指定項目に優先度の重みづけが可能である。例えば、運用コスト最小化というのはコストに関する指定項目である。一方、要件(2)の実行時間など運用要件には性能に関する指定項目が含まれている。コスト優先あるいは性能優先など指定項目に優先度をつけて業務システムを適切に運用することができる。
また、図16に示したように、同じ運用要件から複数の異なる運用ポリシを設定することができ、また複数の運用ポリシを時期により切り替えて適用することが可能である。
次にスケジュールの例について説明する。スケジューリング処理の結果であるスケジュールがスケジューリング結果テーブルに記録される。スケジューリング処理に適用した運用ポリシが異なれば、同じ運用要件、リソース制約、アプリケーションに対して得られえるスケジュールも異なる。
図17は、本実施形態におけるスケジューリング結果テーブルの例を示す図である。
図17には、運用ポリシがコスト優先の場合と、運用ポリシが性能優先の場合のそれぞれのスケジューリング結果テーブルが対比可能に示されている。スケジューリング結果テーブルには、当該アプリケーションのアプリケーションID、当該アプリケーションが利用可能なCPU数およびメモリサイズ、当該アプリケーションに許容されるプロセス数および同時実行数、当該アプリケーションを実行する実行期間、開始時刻および終了時刻が示されている。スケジューリングの結果は、各アプリケーションの開始時刻および終了時刻に表されている。テーブルを対比すると分かるように、複数のアプリケーションによる全体業務が終了する時刻が、コスト優先の場合には翌日の1:00となっているのに対して、性能優先の場合には22:00と早まっている。
図18は、本実施形態によるスケジューリング結果の第1例について説明するための図である。第1例としてコスト優先のスケジューリング結果のタイムチャートが示されている。これは図17の上段に示したスケジューリング結果テーブルに対応する。
図19は、本実施形態によるスケジューリング結果の第2例について説明するための図である。第2例として性能優先のスケジューリング結果のタイムチャートが示されている。これは図17の下段に示したスケジューリング結果テーブルに対応する。
図18と図19を対比すると、図18のスケジュールよりも図19のスケジュールの方がCPUおよびメモリを多く使用するが、全体業務の終了時刻が早くなっていることが分かる。
運用管理システム100は、スケジューリング結果を図18や図19に示したように画面に視覚的に表示することにしてもよい。それにより、オペレータはスケジューリング結果を視覚により容易に理解し、把握することが可能となる。
図20は、本実施形態における運用改善候補の例を示す図である。
運用改善候補探索部161により得られた運用要改善候補は運用改善候補出力部173から出力される。運用改善候補出力部173は、運用改善候補探索部161が図9および図10に示した改善候補探索処理を実行することにより抽出された運用改善候補を出力する。図20を参照すると、運用改善の対象となるアプリケーションのアプリケーションIDと、提示する運用改善候補の内容とが対応付けて示されている。その際、運用改善候補出力部173は、例えば運用改善候補の一覧を画面に表示してもよいし、運用改善候補の一覧情報をファイルに出力してもよい。
次に、特徴点情報に基づくスケジューリングの一例について説明する。ここではガベージコレクションを考慮したスケジューリングについて説明する。
図21は、本実施形態におけるサイジング処理およびスケジューリング処理の様子を説明するための図である。図21には、特徴点情報テーブルとスケジューリング結果テーブルが示されている。特徴点情報テーブルにて太線の四角形で囲われた部分の情報が、その四角形と矢印で結ばれた、スケジューリング結果テーブルにて楕円で囲われた部分の情報の生成に利用される。
図21においてアプリケーションID=0001のアプリケーションに着目すると、特徴点情報テーブルのスループット、その他待ち時間、GC占有率、およびJavaヒープ確保サイズの情報が、スケジューリング結果テーブルのメモリサイズを決めるのに用いられていることが分かる。具体的には、GC占有率が高いことを考慮してJavaヒープ確保サイズを拡大するために、メモリサイズを10GBから12GBに拡大している。
このように、本例では、特徴点情報としてガベージコレクションのGC占有率があり、最適化実行部150は、ガベージコレクションのGC占有率に基づいてアプリケーションに割り当てるメモリのサイズを決定している。ここでGC占有率とは、GCの処理時間(アプリケーションの実行が停止する時間と同じ)が、単位時間あたりに占める割合を示す。一般にGCによるオーバヘッドに起因してアプリケーションのスループットやレスポンスといった性能が劣化する。しかし、本例の上記構成によれば、GCによるオーバヘッドの指標としてGC占有率を算出し、その値に基づいてアプリケーションに割り当てるメモリのサイズを決定するので、GCによる性能劣化を考慮しても運用要件を満たすようなサイジングおよびスケジューリングを行うことができる。
また、アプリケーションID=0002で示されたアプリケーションに着目すると、特徴点情報テーブルにおけるGC所要時間とGC後Javaヒープサイズ残量との情報が、スケジューリング結果テーブルのメモリサイズ、プロセス数、および同時実行数を決めるのに用いられていることが分かる。具体的には、GC所要時間が長いため、アプリケーションをプロセスに分割してプロセス数を1から3に増やしていることが分かる。
このように、本例では、特徴点情報としてガベージコレクションの所要時間があり、最適化実行部150は、ガベージコレクションの所要時間に応じて、アプリケーションのプロセス数を決定している。本例の上記構成によれば、GCによるオーバヘッドの指標としてGCの所要時間を算出し、その値に基づいてアプリケーションのプロセス数を決定するので、GCによる性能劣化を考慮して運用要件を満たすようなサイジングおよびスケジューリングを行うことができる。
以上説明したように、本実施形態によれば、アプリケーション稼働環境200は、リソースとしてメモリを有し、最適化実行部150は、メモリの割り当てについて、アプリケーション特性に基づいて、メモリをどのような領域の構成とするか決定し、特徴点情報に基づいて各領域のサイズを決定する。アプリケーションの定量的性質に基づいてメモリの領域構成を決定し、定量的性質に基づいて各領域のサイズを決定するので、好適な領域構成および領域サイズを有するメモリをアプリケーションに提供することができる。
なお、上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。