JP2004133752A - 世代gcを有するサーバ・システム - Google Patents

世代gcを有するサーバ・システム Download PDF

Info

Publication number
JP2004133752A
JP2004133752A JP2002298634A JP2002298634A JP2004133752A JP 2004133752 A JP2004133752 A JP 2004133752A JP 2002298634 A JP2002298634 A JP 2002298634A JP 2002298634 A JP2002298634 A JP 2002298634A JP 2004133752 A JP2004133752 A JP 2004133752A
Authority
JP
Japan
Prior art keywords
amount
objects
time
allocation
heap usage
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.)
Withdrawn
Application number
JP2002298634A
Other languages
English (en)
Inventor
Kazumi Iikura
飯倉 二美
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2002298634A priority Critical patent/JP2004133752A/ja
Publication of JP2004133752A publication Critical patent/JP2004133752A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】世代GCを持つサーバ・システムにおいて、そのシステムでの寿命分布を求めるとともに、常駐オブジェクト量を見積もり、ヒープ使用量とGCの発生をシミュレーションして、GC率と最大GC時間を予測すること。
【解決手段】新世代GC時ヒープ使用量計測手段1によりヒープ使用量を計測して割り付け量、回収量4を求め、既存の分布関数をオブジェクトの寿命分布モデルとして、モデル作成手段2により割り付け量と回収量の関係のモデルを作成する。このモデルに計測された割り付け量/回収量を当てはめ、オブジェクト寿命分布5を得る。また、この寿命分布5から定常状態における短寿命オブジェクトの量を見積もる。さらに、GC発生時刻、GC所要時間を計測し、平均割り付け速度、平均回収速度を求めヒープ使用量およびGCの発生をシミュレーションする。これによりGC率および最大GC時間を予測することができる。
【選択図】     図1

Description

【0001】
【発明の属する技術分野】
本発明は、世代GCを持つサーバ・システムに関し、特に、新世代GC前後のヒープ使用量を計測して、そのシステムでのオブジェクトの寿命分布を求め、これに基づき、常駐オブジェクト量を見積もることができ、さらに、実際のシステムでGCが発生した時刻とGCの所要時間を計測して、上記寿命分布と常駐オブジェクトの量から、GC率と最大GC時間を予測することができる世代GCを持つサーバ・システムに関するものである。
【0002】
【従来の技術】
近年、サーバ・システムにおいてJava(Javaはサンマイクロシステムズ社の登録商標)システムが用いられる事例が増えている。
Javaシステムの核であるJVM(Java仮想マシン)のメモリ管理はGC(ガーベジ・コレクタ、実際はメモリ・アロケータも兼ねる)によって動的に行われている。
すなわちアプリケーション・プログラムの実行においてオブジェクトの生成が必要になると、GCがオブジェクトに必要なメモリ領域をヒープ〔GCにより動的にオブジェクトがアロケート(割り付け)される有限のメモリ領域〕の中に割り付け、ヒープが満杯になるとGCを行って、不要になったメモリ領域を回収し、新たに生成されるオブジェクトのために領域を空ける。
このようにしてアプリケーションの実行中にメモリの再利用をすることができる。
なお、GCを行う(ガーベジ・コレクションを行う)とは、どこからも参照されなくなった、すなわち不要になったオブジェクトが割り付けられた領域を再利用するために回収することであり、「GCを行う」とは、「回収する」と概ね同じ意味である。
【0003】
GCシステムを含むサーバ・システムでは、サーバのスループット(単位時間あたりに処理できるトランザクションの量)やレスポンスタイム(クライアントからリクエストがあった時の応答時間)がGCの挙動に左右されるという問題がある。
GC率(システム全体の時間に占めるGCを行っている時間の割合)が高いとスループットが低下し、最大GC時間(最も長いGCに要する時間)が大きいと最大レスポンスタイムが長くなる。
そこでGC率を下げ、最大GC時間を短くすることが望まれている。
世代GCは、割り付けられた直後に不要になるオブジェクトが大概のアプリケーションにおいて多いということを利用してGCの効率を向上させる方式であり、すでに世代GCを実装したJVMが広く使用されている(例えば非特許文献1参照)。
ここで、世代GCとは、ヒープを新世代領域と旧世代領域に分け、新規に割り付けられるオブジェクト(新しいオブジェクト)を新世代領域に割り付け、新世代領域があふれたら、あふれたオブジェクトを旧世代領域に移動する方式のGCである。この世代GCでは、新世代領域がいっぱいになれば新世代GC(新世代領域にある不要オブジェクトだけを回収する処理)を起こし、旧世代領域もいっぱいになればフルGC(旧世代領域にある不要オブジェクトも回収する処理)を起こす。世代は2個以上ある構成もある。
【0004】
世代GCでは新世代領域と旧世代領域を調節することでGC率や最大GC時間を調節することができる。世代GCでは定常状態(サーバ系Javaシステムの初期化が終了してサービスを受け付けトランザクションを行っている状態)における短寿命オブジェクト(定常状態でトランザクションに消費されるオブジェクト)が新世代領域の中で回収され、旧世代領域に流れ込まない時に最も効率が良くなる。
一方、新世代領域を必要以上に大きく取ると、最大GC時間が長くなる。そこで新世代領域のサイズを最適化する方法が望まれている。
新世代領域のサイズを最適化するための一つの方法として、オブジェクトの寿命分布より回収率を予測するという方法が考えられる。
【0005】
オブジェクトの寿命分布はサーバ・システムに依存するので、サーバ・システムごとに求めなければならない。オブジェクトの寿命とは、「そのオブジェクトが割り付けられてから、他から参照されなくなった時まで」のことであるが、他から参照されなくなった時というのは検出困難であり、オブジェクトがGCされた時に初めて検出可能になる。
実験では、例えば、オブジェクト一個が割り付けられるごとにGCを起動する、というような方法が行われている。しかしこの方法はコスト(計算量)がかかりすぎて商業的には現実的でない。そのため低コストでオブジェクトの寿命分布を求める方法が望まれている。
なお、世代GCにおいて、オブジェクトの寿命をモデル化できることを示唆した文献は知られており(非特許文献2)、この文献には、いくつかのアプリケーションにおけるオブジェクトの寿命がガンマ分布で表すことができることが示唆されている。しかし、具体的なモデル化の手法は示されていない。
【0006】
【非特許文献1】
San Microsystems,inc.,”Tuning Garbage Collection with the 1.3.1 Java TM Virtual Machine”,1999、〔平成14年8 月26日検索〕、インターネット<URL:http://java.sun.com/docs/hotspot/gc/index.html>
【非特許文献2】
Darko Stefanovic,Department of Electrical Engineering,Princeton University,Kathryn S.McKinley J.Eliot B.Moss ,Department of Computer Science University of Massachusetts ,”On Models for Object Lifetime Distributions”,ISSMM’00,2000,インターネット<URL:http://citeseer.nj.nec.com/335425.html>
【0007】
【発明が解決しようとする課題】
本発明は上記事情に鑑みなされたものであって、本発明の第1の目的は、世代GCを持つサーバ・システムにおいて、新世代GC前後のヒープ使用量を計測して、そのシステムでの割り付け量/回収量の関係を求め、寿命分布モデルより作成した割り付け量/回収量のモデルにあてはめることによって、そのシステムでの寿命分布を低コスト(計算量)で求めることである。
本発明の第2の目的は、上記オブジェクトの寿命分布より予測した定常状態における短寿命オブジェクトの量と、フルGC後のヒープ使用量より、常駐オブジェクト量を見積もることである。
本発明の第3の目的は、実際のシステムでGCが発生した時刻とGCの所要時間を計測し、GC前後のヒープ使用量より平均割り付け速度、平均回収速度を求め、上記寿命分布と与えられたヒープ・サイズより、ヒープ使用量とGCの発生をシミュレーションすることにより、GC率と最大GC時間を予測することである。
【0008】
【課題を解決するための手段】
本発明は、世代GCを持つサーバ・システムにおいて、図1に示すように、新世代GC前後の最も新しい世代におけるヒープ使用量を計測する新世代GC時ヒープ使用量計測手段1と、割り付け量/回収量モデルを作成するモデル作成手段2と、取得されたヒープ使用量を割り付け量/回収量モデルにあてはめるモデルあてはめ手段3から構成される。
GC前後のヒープ使用量を計測する新世代GC時ヒープ使用量計測手段1は、JVMに既存の機能を利用するか、JVMにヒープ使用量の表示機能を付け加えることで構成する。
まず、最も新しい世代のサイズを変えてアプリケーションを実行し、ヒープ使用量を計測する手段1により、その時のGC前後のヒープ使用量を計測し、そのシステムにおける割り付け量/回収量の関係を求める。
次に、モデル作成手段2により既存の分布関数などをオブジェクトの寿命分布モデルとして、割り付け量/回収量の関係のモデルを作成する。
次に、モデルあてはめ手段3により、実際の割り付け量/回収量を作成されたモデルにあてはめる。ここでは、パラメータを変化させ、割り付け量/回収量モデルを何通りか作成して実際の割り付け量/回収量との適合度を求め、最も適合度の高いモデルを求める。
そのモデルの元になったオブジェクト寿命分布モデルがこのシステムのオブジェクト寿命分布と推定される。
このようにして本発明によれば、新世代GC前後の最も新しい世代におけるヒープ使用量より、そのシステムのオブジェクト寿命分布4を求めることができる。
【0009】
また、本発明は、前述の図1の構成において、フルGC後のヒープ使用量を計測する手段を設け、上記寿命分布より定常状態における短寿命オブジェクトの量を見積もることができる。
そして、計測されたフルGC後のヒープ使用量と見積もられた短寿命オブジェクトの量の差がシステムに常駐するオブジェクトの量と推定される。
このようにして、本発明によれば、オブジェクトの寿命分布とフルGC後のヒープ使用量より、定常状態での常駐オブジェクトの量を見積もることができる。さらに、本発明においては、前述の図1の構成において、GC発生時刻を計測する手段と、GC所要時間を計測する手段と、平均割り付け速度を計算する手段と、平均回収速度を計算する手段と、ヒープ使用量およびGCの発生をシミュレーションする手段を有することもできる。
GC発生時刻およびGC所要時間を計測する手段は、JVMに既存の機能を利用したり、JVMをこれらを表示させるように変更するなどして構成する。
前述のGC前後の使用量とGC発生時刻、および、GC所要時間より、平均割り付け速度、および、平均回収速度を求める。
そして、ヒープの各世代のサイズを任意に決め、上記平均割り付け速度、平均回収速度、寿命分布、常駐オブジェクト量、をもとに、ヒープ使用量、および、GC発生をシミュレーションする。
このGCの発生のシミュレーションでは回収量とGC所要時間をシミュレーションする。これにより、GC率、および、最大GC時間を予測することができる。
このようにして本発明によれば、平均割り付け速度、平均回収速度、寿命分布、常駐オブジェクト量にもとづき、ヒープ使用量、および、GCの発生をシミュレーションすることで、GC率、および、最大GC時間を予測することができる。
【0010】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。
図1は本発明の第1の実施例を示す図である。
本発明の第1の実施例は、世代GCを持つサーバ・システムにおいて、新世代GC前後の最も新しい世代におけるヒープ使用量を計測する新世代GC時ヒープ使用量計測手段1と、割り付け量/回収量モデルを作成するモデル作成手段2と、計測されたヒープ使用量を割り付け量/回収量モデルにあてはめるモデルあてはめ手段3を備える。
図1において、上記新世代GC時ヒープ使用量計測手段1によりヒープ使用量を計測し、割り付け量、回収データ4を得て、そのシステムにおける割り付け量と回収量の関係を求める。また、標準ガンマ分布関数などの既存の分布関数をオブジェクトの寿命分布モデルとして、モデル作成手段2により割り付け量と回収量の関係のモデルを作成する。
そして、モデルあてはめ手段3により、作成された割り付け量と回収量の関係のモデルに、計測された割り付け量/回収量を当てはめ、オブジェクト寿命分布5を得る。
このオブジェクト寿命分布5から、定常状態におけるオブジェクトの寿命分布を求めることができ、また、これに基づき新世代領域のサイズを見積もることができる。
【0011】
以下、本実施例の上記各手段における処理について説明する。
(1) ヒープ使用量の計測
新世代GC前後のヒープ使用量は、たとえば、JVMのGC部でGC時にそれらの値をファイルに書き出すように変更を加えることで計測できる。
サンマイクロシステムズ社のJVMでは起動時オプション−verbose:gc を指定すると、新世代GCおよびフルGCに分けてGC前後のヒープ使用量を標準出力に表示する機能があるので、これを利用できる。
最も新しい世代の領域におけるGC前ヒープ使用量は前回のGC以降に割り付けられたオブジェクトの総量であり、(GC前使用量−GC後使用量)は前回のGC以降に割り付けられたオブジェクトの中の回収量(不要になった量)である。
前述のサン製JVMの−verbose:gc オプションで出力されるヒープ使用量は旧世代を含むすべての領域における使用量の総和なので、以下のようになる。
・前回のGC以降に割り付けられた量(A)=(今回のGC前使用量−前回のGC後使用量)
・前回のGC以降に割り付けられた中の回収量(B)=(GC前使用量−GC後使用量)
【0012】
図2にサンマイクロ製JVMの−verbose:gc オプションで取得したヒープ使用量の変化の模式図と(A)、(B)の関係を示す。
同図において、(A)は前回のGC以降に割り付けられたオブジェクトの総量であり、(B)は割り付けられた後に回収されたオブジェクトの総量であり、同図の横軸は、総割り付け量(バイト)示し、縦軸は、ヒープ使用量(バイト)を示す。
定常状態における割り付け量、回収量の値を計測するには、サーバ・アプリケーションで初期化が終わったことを示すメッセージを表示させ、それ以降のGCについて割り付け量、回収量を計測すればよい。定常状態でない時にはオブジェクトの回収率が異なる可能性がある(実際その場合の方が多い)ので、推定の元になるデータとして不適切である。
定常状態では、サーバへの負荷がほぼ一定ならば、割り付け量と回収量の比はいつも一定範囲内にある。また、同じシステム、同じアプリ、同じ負荷の時、新世代領域のサイズが同じであれば、違う試行でも大体同じ値になる。
【0013】
定常状態において新世代領域に割り付けられるオブジェクトはほとんどトランザクションに使用されるオブジェクトであり、トランザクションが終われば回収されるので、新世代領域のサイズがこのアプリケーションおよびサーバへの負荷に対して十分大きければ、それ以上新世代領域を大きくしても回収率はあまり変わらない。
一方、新世代のサイズが不十分だと、新世代GCが起きた時にも使用中のオブジェクトが多く残っているので、新世代での回収率が低くなる。
そこで、本実施例では、割り付け量に対する回収量の変化を求めるため、新世代のサイズを変化させて、GC前後のヒープ使用量を計測し、割り付け量、回収量を計算する。計測された割り付け量、回収量の例を図3に示す。
新世代領域のサイズは、例えばサン社製JVM(バージョン1.3以降)では起動時オプションの−XX:NewSize または−XX:NewRatioで指定できる。
実際には何回か起きたGCにおいてヒープ使用量を計測し、平均する。
【0014】
(2) 割り付け量/回収量モデルの作成
次に、割り付け量に対する回収量のモデルを作成する。定常状態で、トランザクションで消費されるオブジェクトは、大半が割り付けられて少し経ってから不要になると言われ、その寿命分布は、前記したようにΓ(ガンマ)分布に従うという観察がある(前記非特許文献1参照)。
そこで、以下ではΓ分布にもとづいてモデルを作成する例を述べる。元となる確率密度関数は他の関数でも良い。
図4に標準ガンマ分布の確率密度分布f(x) を、図5に累積密度分布F1 (x) を示す。これらをそれぞれ寿命分布のモデル、死亡率のモデルとする。
すなわち、寿命は「あるバイトが割り付けられ、以降に何バイトか割り付けられた後で先に割り付けられたバイトが不要になるか」で表す。実際には割り付けはオブジェクト単位で行われるが、モデル化のためバイト単位で扱う。
実際のバイト数はシステム固有の係数kで割りモデルに適用する。すなわち、図4の横軸は、割り付けられたバイト数をkで割った値であり、縦軸は、時間0で割り付けられたバイトが、不要になる確率を示す。なお、モデルを作成する段階ではkは未知である。
また、図5は、図4を積分して死亡率を求めたものであり、横軸は、図4と同様に割り付けバイト数をkで割った値であり、縦軸は死亡率を表す。例えば、図5において、α=2で、横軸が2の点では、時間0で割り付けられたバイトの内、約6割が不要になることを表す(すなわち、死亡率が約6割)。
【0015】
すなわち、上記F1 (x) とは、あるバイトが割り付けられた後、xバイト(xはkで割った後の値、以下同じ)割り付けられた時にそのバイトが不要になっていて回収されうる確率である。
これより、ある時点からaバイト割り付けられた時における割り付けられたうちの不要になったバイト数(累計)をbとするとbは以下の式となる。
1 (a)+ F1 (a−1)+ … +F1 (0)=b
となる。
上記式において、aを変えながらbの値を求め、これを割り付け量、回収量のモデル関数としF2 (x) と表すことにする。図6にF2 (x) を示す。図6の横軸は、割り付けたバイト数(aをkで割った値)、縦軸は不要になったバイト数(kで割った値)である。
【0016】
(3) 割り付け量/回収量モデルへの当てはめ
次に前述の方法で計測した割り付け量、回収量を以下のようにして、モデルにあてはめる。
(i) Γ(α) にもとづくF1 (x;α) から得たF2 (x;α) を、αをだいたい0.1〜4の間で変化させて何通りか作成する。
(ii)次に計測した割り付け量、回収量のデータがF2 (x;α) に最もマッチするkを求める。具体的にはkを変化させて1/k倍したデータと、F2 (x;α) との適合度を求め、最も適当度の高いkを求める。
適合度は、たとえば、1/k倍して割り付け量を横軸、回収量を縦軸としてプロットされた各点からモデル関数までの距離の平均を用いる。
(iii) こうしてαを変化させて作成した各F2 (x;α) につき、最も適合度の高いkとその時の適合度tを求める。
(iv)次に各F2 (x;α) における適合度tを比較する。この時tが各点からモデル関数までの距離の平均ならば、tをk倍して正規化する。そして最も適合度の高いF2 (x;α) を求める。
【0017】
図7に上記処理のフローチャートを示す。
先ずα=0を初期値に設定し、F2 (x,α)を作成する(図7のステップS1,S2)。k=初期値とし、計測した割り付け量、回収量のデータを1/k倍する(ステップS3,4)。
次に、計測した割り付け量、回収量のデータとF2 (x;α) との適合度tを計算し(ステップS5)、この適合度tと、前回の処理で保存されたtと比較し(ステップS6)、適合度tが最高であるかを判断する(ステップS7)。そうでなければ、ステップS8でtとkを保存し、kを変化させてステップS4に戻る。適合度tが最高であれば、ステップS9でtα=t,kα=kとして、適合度tαを、前回の処理で保存されているtαと比較する(ステップS10)。
そして、適合度tαが最高であるかを判断し(ステップS11)、そうでなければ、ステップS12で、tα,kαを保存し、αを変化させる。
適合度tαが最高であれば、αとkをその値に決定し(ステップS13)、処理を終了する。
【0018】
図8に実測値をモデルにあてはめた例を示す。図8の横軸は割り付けバイト数(kで割った値)、縦軸は回収量であり、この実測値はα=0.5のモデルで、k=12000の時、最も適合度が高かった。
これで割り付け量、回収量のモデル関数として最適なF2 (x;α) と実際のバイト数をモデル上のバイト数に変換する係数kが求められた。
以上により、このシステムの定常状態におけるオブジェクトの寿命分布は、f(x;α) (ただし、f(x;α) はΓ( α) にもとづくΓ分布の確率密度関数、またxは実際のバイト数をkで割った値)、また、死亡率は、F1 (x;α) (ただしF1 (x;α) はΓ( α) にもとづくΓ分布の累積密度関数)となる。このモデルを元に、そのシステムに適する新世代領域のサイズを見積もることができる。例えば、新世代領域の中の90%が不要になった時に新世代GCが起きるような新世代領域サイズは、以下の式のxをk倍したバイト数である。
1 (x)  =0.9
以上のように、本実施例によれば、割り付け量、回収量を計測することにより、そのシステムにおける定常状態におけるオブジェクトの寿命分布を求めることができ、また、これに基づき新世代領域のサイズを見積もることができる。
【0019】
図9は本発明の第2の実施例を示す図である。
本実施例は、上記第1の実施例にさらに、そのシステムにおける定常状態における短寿命オブジェクトの量を推定する短寿命オブジェクト量推定手段6と、フルGC前後のヒープ使用量を計測するフルGCヒープ使用量計測手段7を追加したものである。
図9において、第1の実施例で求めたオブジェクト寿命分布5から、短寿命オブジェクト量推定手段6により、短寿命オブジェクトの定常量を算出する。また、フルGCヒープ使用量計測手段7により、フルGC前後のヒープ使用量を計測する。そして、短寿命オブジェクトの定常量とフルGC前後のヒープ使用量から常駐オブジェクト量8を求める。
【0020】
短寿命オブジェクトとは、定常状態におけるトランザクションに消費されるオブジェクトである。定常状態における短寿命オブジェクトの量は前記第1の実施例で得られた寿命分布モデルから求めることができる。
すなわち、ある瞬間の短寿命オブジェクトの量は、その瞬間に生き残っている短寿命オブジェクトの総和である。割り付けられた後にuバイト経った(新たに割り付けられた)後のバイトの生存率は(1−死亡率)すなわち〔1−F1 (u/k)〕なので、ある瞬間に生き残っているバイトの総和cは、〔1−F1 (x/k)〕のゼロから∞までの総和であり、以下の(1)式で求めることができる。
【0021】
【数1】
Figure 2004133752
【0022】
フルGC前後のヒープ使用量は、新世代GC前後のヒープ使用量同様、たとえばJVMのGC部でGC時に値をファイルに書き出すように変更を加えることで計測できる。
また、サン社製JVMを使うならば−verbose:gc オプションでフルGC前後のヒープ使用量を取得できる。
実際には何回か起きたフルGCにおいてヒープ使用量を計測し平均する。
フルGC後のヒープ使用量をdとすると、フルGC後のヒープ使用量dは、(常駐するオブジェクト量e)+(定常状態での短寿命オブジェクト量c)なので、常駐するオブジェクト量eは(d−e)と見積もることができる。
以上のように、本実施例によれば、第1の実施例で得られた寿命分布モデルを用いて、短寿命オブジェクトの量を見積もり、これに基づき、常駐するオブジェクト量eを見積もることができる。
【0023】
図10は本発明の第3の実施例を示す図である。
本発明の第3の実施例は、第2の実施例に、さらに、時刻を計測する時刻取得手段9と、GC所要時間を計測するGC所要時間取得手段10と、平均割り付け速度を計算する平均割り付け速度計算手段11と、平均回収速度を計算する平均回収速度計算手段12と、ヒープ使用量およびGCの発生をシミュレーションするシミュレーション手段13を追加したものである。
図10において、前記第2の実施例により求めた常駐オブジェクト量8を求める。また、時刻取得手段9により取得した計測開始・終了時刻と、新世代GC時ヒープ使用量取得手段1により得た割り付け量、回収量データ4と、フルGC時ヒープ使用量取得手段7で求めたフルGC前後のヒープ使用量から、平均割り付け速度計算手段11により平均割り付け速度を求める。
ここで、平均割り付け速度は以下のように求められる。
総実行時間は、(総実行時間)=(計測終了時刻)−(計測開始時刻)であり、平均割付速度は、(平均割付速度)=(総割付量)/(総実行時間−総所要GC時間)となる。
さらに、GC所要時間取得手段10で求めたGC所要時間と、上記割り付け量、回収量データ4と、フルGC前後のヒープ使用量から、平均回収速度計算手段12により平均回収速度を求める。
ヒープ・シミュレーション手段13は、オブジェクト寿命分布5と常駐オブジェクト量と平均割り付け速度と平均回収速度に基づき、ヒープ使用量およびGCの発生をシミュレーションする。このシミュレーションにより、最大GC時間を予想することができ、また、シミュレーション時間の中のGC所要時間の和から、GC率を予測することができる。
【0024】
以下、本実施例の上記各手段の処理について説明する。
(1) 平均回収速度の算出
回収速度(1回のGCにおける)は、(回収速度)=(回収残り量)/(GC所要時間)であり、平均回収速度は、計測時間内に起きたGCにおける回収速度の平均である。但し、新世代GCとフルGCは別々に平均する。
ここで、新世代GC時の回収残り量と、フルGC時の回収残り量は、次のようになる。
・(新世代GC時の回収残り量)=(割り付け量)−(回収量)
・(フルGC時の回収残り量)=(フルGC後のヒープ使用量)
【0025】
定常状態に達した後の複数回のGCについて以上を計算し、平均すれば、平均割り付け速度と平均回収速度を求めることができる。
一般に、オブジェクトの回収は新世代GCとフルGCでアルゴリズムが異なるので、回収速度は新世代GCとフルGCについて分けて平均する。
また、何段階か新世代領域を変更してヒープ使用量のデータを取り、最適モデルを作成しておく。
【0026】
(2) 定常状態におけるヒープのシミュレーション
次に、任意のヒープ構成(新世代領域サイズ、旧世代領域サイズ)、寿命分布モデル、平均割り付け速度、平均回収速度(新世代GC、およびフルGCにおける)、常駐オブジェクト量、定常的な短命オブジェクト量より、定常状態におけるヒープのシミュレーションを行う。
新世代サイズをsn 、旧世代サイズをso 、常駐オブジェクト量をe、定常的な短命オブジェクト量をc、割り付け速度をva 、新世代GCにおける回収速度をvn 、フルGCにおける回収速度をvf 、現在の新世代領域における使用量をun 、現在の旧世代領域における使用量をuo とする。
ヒープ使用量の初期値を(常駐オブジェクト量e)+(定常的な短命オブジェクト量c)とする。単位時間ごとにun をva ずつ増加させる。もしun ≧sn になったら、新世代GCの発生をシミュレーションする。
すなわち、割り付け量/回収量の関数F2 (x)を用いると、un バイト割り付けられたときの回収量は、回収量=kF2 (un /k)と予想され、このGCでの回収量bは、回収量b=kF2 (un /k)であるので、回収残り量nは、回収残り量n=un −kF2 (un /k)となる。
また、このGCの所要時間は、所要時間tn =n×vn となり、GC後のuo はuo +n、GC後のun は、un =0となる。これを繰り返す。
【0027】
もし、新世代GC後に、uo ≧so になったら、フルGCの発生をシミュレーションする。前記第2の実施例より定常的な短命オブジェクトの量cは前記(1)式で求めることができる。
従って、フルGC発生後のヒープ使用量uo ’は常に(e+c)と予想されるので、フルGCの所要時間は、所要時間=(e+c)×vf と予想される。
このようにして、シミュレーションより、与えられた時間内でのGCの発生とその時のGC所要時間が求められる。
【0028】
図11は、上記シミュレーションの処理を示すフローチャートである。
初期値として新世代領域の使用量un を0、旧世代領域の使用量uo を(常駐オブジェクト量e)+(定常的な短命オブジェクト量c)とする(ステップS1)。なお、e+cは、フルGC後の平均ヒープ量としてとしてもよい。
ステップS2で、新世代領域の使用量un を、un =un +va (va は割り付け速度)とする。
そして、新世代領域の使用量un ≧新世代領域サイズsn であるかを調べる。新世代領域の使用量un ≧新世代領域サイズsn でなければ、ステップS2に戻り、単位時間毎に新世代領域の使用量un を割り付け速度va だけ増加させる処理を繰り返す。
新世代領域の使用量un ≧新世代領域サイズsn になると、新世代GCの発生のシミュレーションを行う(ステップS4)。
すなわち、前記割り付け量/回収量の関数F2 (x)を用い、回収量bをb=kF2 (un /k)で求め、回収のこり量n=un −b、新世代GC所要時間tn をtn =n×vn (vn は新世代GC回収速度)で求める。そして、GC後の旧世代領域の使用量uo をuo =uo +nとし、GC後の新世代領域の使用量un を0にする。
ステップS5で、GC後の旧世代領域の使用量uo ≧旧世代領域サイズso であるかを調べ、GC後の旧世代領域の使用量uo ≧旧世代領域サイズso でなければ、ステップS2に戻り、GC後の旧世代領域の使用量uo ≧旧世代領域サイズso になるまで、上記処理を繰り返す。
【0029】
GC後の旧世代領域の使用量uo ≧旧世代領域サイズso になると、フルGCの発生をシミュレーションする(ステップS6)。
すなわち、定常的短寿命オブジェクト量cを、前記(1)式で求める。また、旧世代GC所要時間to をto =(e+c)×vf (eは常駐オブジェクト量、vf はフルGC回収速度)により求める。さらに、旧世代領域の使用量uo をuo =e+cとする。
ステップS7で、旧世代領域の使用量uo ≧旧世代領域サイズso であるかを調べ、旧世代領域の使用量uo ≧旧世代領域サイズso でなければ、ステップS2に戻り、上記処理を繰り返す。また、旧世代領域の使用量uo ≧旧世代領域サイズso になると、ステップS8で、Out Of Memoty Error として処理を終了す
る。
【0030】
なお、実際のGCでは新世代または旧世代領域がいっぱいになる前に、たとえば使用率が70%を超えた所でGCが発生するように構成されているものもある。その場合には、たとえば新世代領域での使用率上限が70%、旧世代領域での使用率上限を80%ならば、un ≧sn ×0.7の時に新世代GCが、uo ≧so ×0.8の時にフルGCが発生するようにシミュレーションする。
上記シミュレーションにおける最も長いGC所要時間より、最大GC時間が予想でき、シミュレーション時間の中のGC所要時間の和から、GC率が予想できる。
以上のように、本実施例においては、平均割り付け速度、平均回収速度、寿命分布、常駐オブジェクト量にもとづき、ヒープ使用量、および、GCの発生をシミュレーションすることにより、GC率、および、最大GC時間を予測することができる。
【0031】
(付記1) 世代GCを有するサーバ・システムであって、
新世代GC前後の最も新しい世領域におけるヒープ使用量を計測する手段と、
割り付け量/回収量モデルを作成する手段と、
取得されたヒープ使用量を、上記割り付け量/回収量モデルにあてはめ、そのシステムの定常状態におけるオブジェクトの寿命分布を求める手段を備えた
ことを特徴とするサーバ・システム。
(付記2) 前記定常状態におけるオブジェクトの寿命分布から、そのシステムの定常状態における短寿命オブジェクトの量を推定する手段と、
フルGC後のヒープ使用量を計測する手段と、
上記短寿命オブジェクトの量とフルGC後のヒープ使用量から、そのシステムに常駐するオブジェクトの総量を求める手段を備えた
ことを特徴とする請求項1のサーバ・システム。
(付記3) GC発生時刻を計測する手段と、GC所要時間を計測する手段と、前記フルGC後のヒープ使用量と、上記GC発生時刻およびGC所要時間から、平均割り付け速度と、平均回収速度を計算する手段と、
前記定常状態におけるオブジェクトの寿命分布と、常駐するオブジェクトの総量と、上記平均割り付け速度と、平均回収速度から、ヒープ使用量およびGCの発生をシミュレーションする手段とを備えた
ことを特徴とする請求項2のサーバ・システム。
(付記4) 上記シミュレーション手段を用いて、与えられた領域サイズをもとに、ヒープ使用量およびGCの発生を時系列的にシミュレーションすることで、GC率、および、最大GC時間を予測する手段を備えた
ことを特徴とする請求項3のサーバ・システム。
(付記5) 新世代GC前後の最も新しい世領域におけるヒープ使用量を計測する処理と、
割り付け量/回収量モデルを作成する処理と、
取得されたヒープ使用量を、上記割り付け量/回収量モデルにあてはめ、そのシステムの定常状態におけるオブジェクトの寿命分布を求める処理をコンピュータに実行させる
ことを特徴とする世代GCを有するサーバ・システムにおけるGC解析プログラム。
(付記6) 前記定常状態におけるオブジェクトの寿命分布から、そのシステムの定常状態における短寿命オブジェクトの量を推定する処理と、
フルGC後のヒープ使用量を計測する処理と、
上記短寿命オブジェクトの量とフルGC後のヒープ使用量から、そのシステムに常駐するオブジェクトの総量を求める処理と、
GC発生時刻を計測する処理と、GC所要時間を計測する処理と、
前記フルGC後のヒープ使用量と、計測開始終了時刻およびGC所要時間から、平均割り付け速度と、平均回収速度を計算する処理と、
前記定常状態におけるオブジェクトの寿命分布と、常駐するオブジェクトの総量と、上記平均割り付け速度と、平均回収速度から、ヒープ使用量およびGCの発生をシミュレーションする処理をコンピュータに実行させる
ことを特徴とする世代GCを有するサーバ・システムにおけるGC解析プログラム。
(付記7) 与えられた領域サイズをもとに、ヒープ使用量およびGCの発生を時系列的にシミュレーションし、GC率、および、最大GC時間を予測する処理をコンピュータに実行させる
ことを特徴とする世代GCを有するサーバ・システムにおけるGC解析プログラム。
【0032】
【発明の効果】
以上説明したように、本発明においては以下の効果を得ることができる。
(1)世代GCを有するサーバシステムにおいて、新世代GC前後のヒープ使用量を計測することで、低コストにそのシステムにおけるオブジェクトの寿命分布を求めることができる。これにより、そのシステムに適する新世代領域のサイズを見積もることができる。
(2)フルGC前後のヒープ使用量を計測し、上記オブジェクトの寿命分布より、そのシステムにおける常駐オブジェクトの量を予測することができる。
(3)GC発生時刻とGC所要時間および、上記寿命分布と常駐オブジェクト量に基づいてヒープの使用量とGCの発生をシミュレーションすることにより、GC率および最大GC時間を予測することが可能となる。
【図面の簡単な説明】
【図1】本発明の第1の実施例を示す図である。
【図2】ヒープ使用量の変化の模式図である。
【図3】計測された割り付け量、回収量の例を示す図である。
【図4】標準ガンマ分布の確率密度分布f(x) を示す図である。
【図5】標準ガンマ分布の累積密度分布F1 (x) を示す図である。
【図6】モデル関数F2 (x) を示す図である。
【図7】モデルへのあてはめる手順を示すフローチャートである。
【図8】実測値をモデルにあてはめた例を示す図である。
【図9】本発明の第2の実施例を示す図である。
【図10】本発明の第3の実施例を示す図である。
【図11】シミュレーション手順を示すフローチャートである。
【符号の説明】
1  新世代GC時ヒープ使用量計測手段
2  モデル作成手段
3  モデルあてはめ手段
4  割り付け量、回収データ
5  オブジェクト寿命分布
6  短寿命オブジェクト量推定手段
7  フルGCヒープ使用量計測手段
8  常駐オブジェクト量
9  GC発生時刻取得手段
10 GC所要時間取得手段
11 平均割り付け速度計算手段
12 平均回収速度計算手段
13 シミュレーション手段

Claims (5)

  1. 世代GCを有するサーバ・システムであって、
    新世代GC前後の最も新しい世領域におけるヒープ使用量を計測する手段と、
    割り付け量/回収量モデルを作成する手段と、
    取得されたヒープ使用量を、上記割り付け量/回収量モデルにあてはめ、そのシステムの定常状態におけるオブジェクトの寿命分布を求める手段を備えた
    ことを特徴とするサーバ・システム。
  2. 前記定常状態におけるオブジェクトの寿命分布から、そのシステムの定常状態における短寿命オブジェクトの量を推定する手段と、
    フルGC後のヒープ使用量を計測する手段と、
    上記短寿命オブジェクトの量とフルGC後のヒープ使用量から、そのシステムに常駐するオブジェクトの総量を求める手段を備えた
    ことを特徴とする請求項1のサーバ・システム
  3. GC発生時刻を計測する手段と、GC所要時間を計測する手段と、
    前記フルGC後のヒープ使用量と、上記GC発生時刻およびGC所要時間から、平均割り付け速度と、平均回収速度を計算する手段と、
    前記定常状態におけるオブジェクトの寿命分布と、常駐するオブジェクトの総量と、上記平均割り付け速度と、平均回収速度から、ヒープ使用量およびGCの発生をシミュレーションする手段とを備えた
    ことを特徴とする請求項2のサーバ・システム。
  4. 上記シミュレーション手段を用いて、与えられた領域サイズをもとに、ヒープ使用量およびGCの発生を時系列的にシミュレーションすることで、GC率、および、最大GC時間を予測する手段を備えた
    ことを特徴とする請求項3のサーバ・システム。
  5. 新世代GC前後の最も新しい世領域におけるヒープ使用量を計測する処理と、
    割り付け量/回収量モデルを作成する処理と、
    取得されたヒープ使用量を、上記割り付け量/回収量モデルにあてはめ、そのシステムの定常状態におけるオブジェクトの寿命分布を求める処理をコンピュータに実行させる
    ことを特徴とする世代GCを有するサーバ・システムにおけるGC解析プログラム。
JP2002298634A 2002-10-11 2002-10-11 世代gcを有するサーバ・システム Withdrawn JP2004133752A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002298634A JP2004133752A (ja) 2002-10-11 2002-10-11 世代gcを有するサーバ・システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002298634A JP2004133752A (ja) 2002-10-11 2002-10-11 世代gcを有するサーバ・システム

Publications (1)

Publication Number Publication Date
JP2004133752A true JP2004133752A (ja) 2004-04-30

Family

ID=32287983

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002298634A Withdrawn JP2004133752A (ja) 2002-10-11 2002-10-11 世代gcを有するサーバ・システム

Country Status (1)

Country Link
JP (1) JP2004133752A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014052954A (ja) * 2012-09-10 2014-03-20 Nippon Telegr & Teleph Corp <Ntt> 仮想マシンチューニング値計算装置および仮想マシンチューニング値計算方法
US9715344B2 (en) 2014-03-12 2017-07-25 Samsung Electronics Co., Ltd. Memory device and controlling method of the same

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014052954A (ja) * 2012-09-10 2014-03-20 Nippon Telegr & Teleph Corp <Ntt> 仮想マシンチューニング値計算装置および仮想マシンチューニング値計算方法
US9715344B2 (en) 2014-03-12 2017-07-25 Samsung Electronics Co., Ltd. Memory device and controlling method of the same

Similar Documents

Publication Publication Date Title
JP5152186B2 (ja) コンピュータシステム、管理装置、及びコンピュータシステム管理方法
JP2004005486A (ja) コンピュータアプリケーションのメモリ使用状況を最適化する方法
JP5954430B2 (ja) 運用管理装置、及び、運用管理方法
EP2913756A1 (en) Operation management device and operation management method
CN113327136B (zh) 归因分析方法、装置、电子设备及存储介质
JP2003178040A (ja) ウェブサイトの構成決定支援方法
Dobber et al. Dynamic load balancing and job replication in a global-scale grid environment: A comparison
CN112434308B (zh) 应用漏洞检测方法、装置、电子设备及计算机存储介质
US20080239983A1 (en) Method for integrating downstream performance and resource usage statistics into load balancing weights
CN113268403B (zh) 时间序列的分析预测方法、装置、设备及存储介质
CN111552607A (zh) 应用程序的健康评估方法、装置、设备及存储介质
CN114356577A (zh) 一种系统容量预估方法以及装置
JP2019105927A (ja) 故障確率算出装置、故障確率算出方法及びプログラム
US20070233532A1 (en) Business process analysis apparatus
JP2006340552A (ja) 電力品質評価システムとその方法、およびプログラム
US7287144B2 (en) Hit ratio estimation device, hit ratio estimation method, hit ratio estimation program and recording medium
JP2004133752A (ja) 世代gcを有するサーバ・システム
CN111008114A (zh) 一种磁盘分区监控方法、装置、设备及可读存储介质
CN112350894A (zh) 一种服务节点的性能测试方法、装置、设备及存储介质
CN114528626A (zh) 一种基于三维bim模型的数据集成方法、系统及电子设备
CN108133234A (zh) 基于稀疏子集选择算法的社区检测方法、装置及设备
CN102256271B (zh) 扩容指示信息的获取方法及装置
CN112181825A (zh) 测试案例库构建方法、装置、电子设备及介质
JP6516781B2 (ja) パケット解析装置、方法、およびその非一時的コンピュータ可読媒体
JP6070717B2 (ja) 分散データ処理システム、及び、分散データ処理方法

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20060110