(57)【要約】【課題】仮想マシンのＧＣ時のプログラム停止時間を予測する。【解決手段】仮想マシン停止時間予測装置が、通信ノードに用いられる仮想マシンのＧＣ時のプログラム停止時間予測値を計算するとき、ＧＣ動作パラメータに加え、この仮想マシンに用いられるアプリケーションのアプリケーションモデル（１制御信号あたりの短命制御信号オブジェクト数（Ｂ１）、１コールあたりの長命コールオブジェクト数（Ｂ２）、短命制御信号オブジェクト平均保留時間（Ｂ３）、短命制御信号オブジェクトのサイズ（Ｂ４）および長命コールオブジェクトのサイズ（Ｂ５））と、トラヒックモデル（単位時間あたりのコール発生数（Ａ１）および１コールあたりの制御信号数（Ａ２））とを用いる。【選択図】図２
2014052953.tif 000002
【特許請求の範囲】
【請求項１】
通信ノードに仮想マシンを用いる場合におけるＧＣ（ガベージコレクション）時のプログラム停止時間予測値を計算する仮想マシン停止時間予測装置であって、
前記仮想マシンは、メモリ上のＮＥＷ領域のＧＣの方式としてスカベンジＧＣを採用し、前記メモリ上のＯＬＤ領域のＧＣの方式としてＣＭＳ（Concurrent Mark & Sweep）を採用する仮想マシンであり、
前記仮想マシンに用いられるアプリケーションは、他の端末装置が前記仮想マシンにアクセスしてから処理を終了するまでの一連の動作を、複数の制御信号が関連するコールとして管理し、前記コールに対するオブジェクトとして１以上の長命コールオブジェクトを生成し、前記制御信号に対するオブジェクトとして１以上の短命制御信号オブジェクトを生成するアプリケーションであり、
前記アプリケーションにおける、単位時間あたりのコール発生数と、前記コール１つあたりの制御信号数とを示したトラヒックモデル情報と、
前記制御信号１つあたりの短命制御信号オブジェクト数と、前記コール１つあたりの長命コールオブジェクト数と、短命制御信号オブジェクト平均保留時間と、前記短命制御信号オブジェクトのサイズと、前記長命コールオブジェクトのサイズとを示したアプリケーションモデル情報と、
前記スカベンジＧＣが行われるＮＥＷ領域のサイズと、前記スカベンジＧＣにおけるＮＥＷ領域のオブジェクト１つあたりのマークおよびコピー時間と、前記ＣＭＳにおけるＯＬＤ領域にコピーされたオブジェクト１つあたりのリマーク時間とを示したＧＣ動作パラメータ情報との入力を受け付け、記憶部に記憶し、
前記記憶部の、前記トラヒックモデル情報、前記アプリケーションモデル情報および前記ＧＣ動作パラメータ情報を用いて、
以下の式（１）〜式（４）により前記仮想マシンにおけるＧＣ時のプログラム停止時間予測値を計算し、出力する停止時間予測部を備えることを特徴とする仮想マシン停止時間予測装置。
プログラム停止時間予測値＝スカベンジＧＣ停止時間予測値＋リマーク停止時間予測値…式（１）
ただし、
スカベンジＧＣ停止時間予測値＝（単位時間あたりのコール発生数×コール１つあたりの制御信号数×制御信号１つあたりの短命制御信号オブジェクト数×短命制御信号オブジェクト平均保留時間＋スカベンジＧＣ周期×単位時間あたりのコール発生数×コール１つあたりの長命コールオブジェクト数）×スカベンジＧＣにおけるＮＥＷ領域のオブジェクト１つあたりのマークおよびコピー時間…式（２）
スカベンジＧＣ周期＝ＮＥＷ領域のサイズ／（単位時間あたりのコール発生数×コール１つあたりの長命コールオブジェクト数×長命コールオブジェクトのサイズ＋単位時間あたりのコール発生数×コール１つあたりの制御信号数×制御信号１つあたりの短命制御信号オブジェクト数×短命制御信号オブジェクトのサイズ）…式（３）
リマーク停止時間予測値＝（単位時間あたりのコール発生数×コール１つあたりの制御信号数×制御信号１つあたりの短命制御信号オブジェクト数×短命制御信号オブジェクト平均保留時間＋スカベンジＧＣ周期×単位時間あたりのコール発生数×コール１つあたりの長命コールオブジェクト数）×ＣＭＳにおけるＯＬＤ領域にコピーされたオブジェクト１つあたりのリマーク時間…式（４）
【請求項２】
前記停止時間予測部が、複数の前記仮想マシンからなるシステムにおけるＧＣ時のプログラム停止時間予測値を計算するとき、
前記仮想マシンそれぞれの前記トラヒックモデル情報、前記アプリケーションモデル情報および前記ＧＣ動作パラメータ情報を用いて、
前記式（１）〜式（４）により前記仮想マシンそれぞれにおけるＧＣ時のプログラム停止時間予測値を計算して合計し、前記システムにおけるＧＣ時のプログラム停止時間予測値とすることを特徴とする請求項１に記載の仮想マシン停止時間予測装置。
【請求項３】
通信ノードに仮想マシンを用いる場合におけるＧＣ（ガベージコレクション）時のプログラム停止時間予測値を計算するプログラム停止時間予測値計算方法であって、
前記仮想マシンは、メモリ上のＮＥＷ領域のＧＣの方式としてスカベンジＧＣを採用し、前記メモリ上のＯＬＤ領域のＧＣの方式としてＣＭＳ（Concurrent Mark & Sweep）を採用する仮想マシンであり、
前記仮想マシンに用いられるアプリケーションは、他の端末装置が前記仮想マシンにアクセスしてから処理を終了するまでの一連の動作を、複数の制御信号が関連するコールとして管理し、前記コールに対するオブジェクトとして１以上の長命コールオブジェクトを生成し、前記制御信号に対するオブジェクトとして１以上の短命制御信号オブジェクトを生成するアプリケーションであり、
前記プログラム停止時間予測値を計算する仮想マシン停止時間予測装置が、
前記アプリケーションにおける、単位時間あたりのコール発生数と、前記コール１つあたりの制御信号数とを示したトラヒックモデル情報と、
前記制御信号１つあたりの短命制御信号オブジェクト数と、前記コール１つあたりの長命コールオブジェクト数と、短命制御信号オブジェクト平均保留時間と、前記短命制御信号オブジェクトのサイズと、前記長命コールオブジェクトのサイズとを示したアプリケーションモデル情報と、
前記スカベンジＧＣが行われるＮＥＷ領域のサイズと、前記スカベンジＧＣにおけるＮＥＷ領域のオブジェクト１つあたりのマークおよびコピー時間と、前記ＣＭＳにおけるＯＬＤ領域にコピーされたオブジェクト１つあたりのリマーク時間とを示したＧＣ動作パラメータ情報との入力を受け付け、記憶部に記憶するステップと、
前記記憶部の、前記トラヒックモデル情報、前記アプリケーションモデル情報および前記ＧＣ動作パラメータ情報を用いて、
以下の式（１）〜式（４）により前記仮想マシンにおけるＧＣ時のプログラム停止時間予測値を計算し、出力するステップとを実行することを特徴とするプログラム停止時間予測値計算方法。
プログラム停止時間予測値＝スカベンジＧＣ停止時間予測値＋リマーク停止時間予測値…式（１）
ただし、
スカベンジＧＣ停止時間予測値＝（単位時間あたりのコール発生数×コール１つあたりの制御信号数×制御信号１つあたりの短命制御信号オブジェクト数×短命制御信号オブジェクト平均保留時間＋スカベンジＧＣ周期×単位時間あたりのコール発生数×コール１つあたりの長命コールオブジェクト数）×スカベンジＧＣにおけるＮＥＷ領域のオブジェクト１つあたりのマークおよびコピー時間…式（２）
スカベンジＧＣ周期＝ＮＥＷ領域のサイズ／（単位時間あたりのコール発生数×コール１つあたりの長命コールオブジェクト数×長命コールオブジェクトのサイズ＋単位時間あたりのコール発生数×コール１つあたりの制御信号数×制御信号１つあたりの短命制御信号オブジェクト数×短命制御信号オブジェクトのサイズ）…式（３）
リマーク停止時間予測値＝（単位時間あたりのコール発生数×コール１つあたりの制御信号数×制御信号１つあたりの短命制御信号オブジェクト数×短命制御信号オブジェクト平均保留時間＋スカベンジＧＣ周期×単位時間あたりのコール発生数×コール１つあたりの長命コールオブジェクト数）×ＣＭＳにおけるＯＬＤ領域にコピーされたオブジェクト１つあたりのリマーク時間…式（４）
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Java（登録商標）VM（バーチャルマシン）等の仮想マシンのプログラム停止時間予測装置およびプログラム停止時間予測値計算方法に関する。
【背景技術】
【０００２】
Java（登録商標）VM等の仮想マシンを用いたシステムにおいてガベージコレクション（ＧＣ）時には、オブジェクトのコピーやチェック（マーク）のために、システムがある程度の時間停止してしまう。Java（登録商標）VMにおけるＧＣの仕組みは、以下の非特許文献１，２に開示されている。一般的に仮想マシンを用いたシステムでは、処理モデルの異なる様々なアプリケーションが搭載されるため、ＧＣによるプログラム停止時間を予測する（見積もる）ことは困難であった。このため、仮想マシンのＧＣによるプログラム停止時間は、システム開発者が、システムを実際に動作させることで測定していた。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】チューニングのためのJavaVM講座（前編）[online]、[平成２４年８月１０日検索]、インターネット<URL: http://www.atmarkit.co.jp/fjava/rensai3/javavm02/javavm02_1.html >
【非特許文献２】チューニングのためのJavaVM講座（後編）[online]、[平成２４年８月１０日検索]、インターネット<URL: http://www.atmarkit.co.jp/fjava/rensai3/javavm02/javavm02_2.html >
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、ＳＩＰ（Session Initiation Protocol）サーバ等の通信ノードのように、大量処理を行いつつ、かつ、低レイテンシ（遅延時間をできるだけ少なくすること）を求められるシステムにて仮想マシンを用いるには、システム開発前に、ＧＣによるプログラム停止時間を予測することが重要である。しかし、前記したとおり、仮想マシンを用いたシステムでは、処理モデルの異なる様々なアプリケーションが搭載されるため、ＧＣによるプログラム停止時間を予測する（見積もる）ことは困難であった。そこで、本発明は、前記した問題を解決し、通信ノードに仮想マシンを用いる場合において、ＧＣによるプログラム停止時間を予測する手段を提供することを目的とする。
【課題を解決するための手段】
【０００５】
前記した課題を解決するため、本発明は、通信ノードに仮想マシンを用いる場合におけるＧＣ（ガベージコレクション）時のプログラム停止時間予測値を計算する仮想マシン停止時間予測装置であって、前記仮想マシンは、メモリ上のＮＥＷ領域のＧＣの方式としてスカベンジＧＣ方式を採用し、前記メモリ上のＯＬＤ領域のＧＣの方式としてＣＭＳ（Concurrent Mark & Sweep）方式を採用する仮想マシンであり、前記仮想マシンに用いられるアプリケーションは、他の端末装置が前記仮想マシンにアクセスしてから処理を終了するまでの一連の動作を、複数の制御信号が関連するコールとして管理し、前記コールに対するオブジェクトとして１以上の長命コールオブジェクトを生成し、前記制御信号に対するオブジェクトとして１以上の短命制御信号オブジェクトを生成するアプリケーションであり、前記アプリケーションにおける、単位時間あたりのコール発生数（Ａ１）と、前記コール１つあたりの制御信号数（Ａ２）とを示したトラヒックモデル情報と、前記制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）と、前記コール１つあたりの長命コールオブジェクト数（Ｂ２）と、短命制御信号オブジェクト平均保留時間（Ｂ３）と、前記短命制御信号オブジェクトのサイズ（Ｂ４）と、前記長命コールオブジェクトのサイズ（Ｂ５）とを示したアプリケーションモデル情報と、前記スカベンジＧＣが行われるＮＥＷ領域のサイズ（Ｃ１）と、前記スカベンジＧＣにおけるＮＥＷ領域のオブジェクト１つあたりのマークおよびコピー時間（Ｃ２）と、前記ＣＭＳにおけるＯＬＤ領域にコピーされたオブジェクト１つあたりのリマーク時間（Ｃ３）とを示したＧＣ動作パラメータ情報との入力を受け付け、記憶部に記憶し、前記記憶部の、前記トラヒックモデル情報、前記アプリケーションモデル情報および前記ＧＣ動作パラメータ情報を用いて、以下の式（１）〜式（４）により前記仮想マシンにおけるＧＣ時のプログラム停止時間予測値を計算し、出力する。
プログラム停止時間予測値＝スカベンジＧＣ停止時間予測値＋リマーク停止時間予測値…式（１）
ただし、
スカベンジＧＣ停止時間予測値＝（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクト平均保留時間（Ｂ３）＋スカベンジＧＣ周期×単位時間あたりのコール発生数（Ａ１）×コール１つあたりの長命コールオブジェクト数（Ｂ２））×スカベンジＧＣにおけるＮＥＷ領域のオブジェクト１つあたりのマークおよびコピー時間（Ｃ２）…式（２）
スカベンジＧＣ周期＝ＮＥＷ領域のサイズ（Ｃ１）／（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの長命コールオブジェクト数（Ｂ２）×長命コールオブジェクトのサイズ（Ｂ５）＋単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクトのサイズ（Ｂ４））…式（３）
リマーク停止時間予測値＝（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクト平均保留時間（Ｂ３）＋スカベンジＧＣ周期×単位時間あたりのコール発生数（Ａ１）×１コールあたりの長命コールオブジェクト数（Ｂ２））×ＣＭＳにおけるＯＬＤ領域にコピーされたオブジェクト１つあたりのリマーク時間（Ｃ３）…式（４）
【０００６】
このように、通信ノードに仮想マシンを用いる場合において、この仮想マシンのＧＣ時のプログラム停止時間予測値を計算するために、本発明の仮想マシン停止時間予測装置は、（１）トラヒックモデル情報、（２）アプリケーションモデル情報および（３）仮想マシンのＧＣ動作パラメータ情報を用いる。ここで、従来のＷｅｂ系のシステムでは、１台のサーバ（仮想マシン）に多数のアプリケーションが動作し、トラヒック条件もそのアプリケーションそれぞれ異なるため、（１）トラヒックモデル情報および（２）アプリケーションモデル情報を用いてプログラム停止時間予測値を計算することは困難であった。しかし、仮想マシンの用いられるコンピュータが、ＳＩＰサーバ等の通信ノードであれば、ほとんどのトラヒックは単一のアプリケーションで処理されることが一般的である。そこで、本発明の発明者はこの点に着目し、通信ノードに用いられる仮想マシンのプログラム停止時間予測値を計算する際、（１）トラヒックモデル情報および（２）アプリケーションモデル情報を用いて計算する本発明を考案するに至った。
【０００７】
ここで、本発明で想定する仮想マシンに用いられるアプリケーションは、他の端末装置が当該仮想マシンにアクセスしてから処理を終了するまでの一連の動作を、複数の制御信号が関連するコールとして管理する。そして、仮想マシンが１つのコールを処理する際に、コールはメモリ上に比較的長時間存在することから、１つのコールに対するオブジェクトとして１以上の長命コールオブジェクトを生成する。一方、仮想マシンが１つの制御信号を処理する際、制御信号はメモリ上に比較的短時間しか存在しないため、１つの制御信号に対するオブジェクトとして１以上の短命制御信号オブジェクトを生成するものとする。
【０００８】
この仮想マシンがＧＣを行う際には、非特許文献１，２に記載されるとおり、メモリをＮＥＷ領域とＯＬＤ領域とに分割してＧＣを行う。なお、仮想マシンによってはＮＥＷ領域はさらにＥｄｅｎ領域、２面のＳｕｒｖｉｖｏｒ領域に分けられるものもあるが、ここでは仮想マシンの動作設定をかえることで、それらについても２面のＳｕｒｖｉｖｏｒ領域を使わないようにし、Ｅｄｅｎ領域のみとした仮想マシンを前提としている。また、ＮＥＷ領域のＧＣの方式として、スカベンジＧＣ方式をとり、ＯＬＤ領域のＧＣの方式として、ＣＭＳ（Concurrent Mark & Sweep）方式をとる。このそれぞれの領域のＧＣにおいて、仮想マシンのプログラム停止時間が発生する。
【０００９】
このため、本発明において、プログラム停止時間予測値＝スカベンジＧＣ停止時間予測値＋リマーク停止時間予測値…式（１）としている。つまり、プログラム停止時間予測値を、ＮＥＷ領域のスカベンジＧＣによるプログラム停止時間（ＮＥＷ領域のライブオブジェクト（生存するオブジェクト）をマークし、ＯＬＤ領域にコピーする時間）と、ＯＬＤ領域のＣＭＳにおけるリマーク（スカベンジＧＣによりＮＥＷ領域からＯＬＤ領域にコピーされたオブジェクトに対するマーク）に要する時間との合計値としている。なお、ＯＬＤ領域のＣＭＳにおけるリマークは、ＯＬＤ領域において、ＮＥＷ領域からコピーされたオブジェクトをメモリ上からsweep（スィープ。解放）しないようにするために行われるマークである。なお、ＣＭＳでは、もともとＯＬＤ領域にあったオブジェクトをマークする際には停止しない。もともとＯＬＤ領域にあったオブジェクトはリマークを実施する前に、プログラム実行と並行してマークするため、プログラムが停止するのは、スカベンジＧＣによりＮＥＷ領域からＯＬＤ領域にコピーされたオブジェクトに対するマーク（リマーク）の際のみである。よって、プログラム停止時間が最も長くなるのは、スカベンジＧＣとリマーク停止の時間が連続する場合であり、式（１）において、プログラム停止時間予測値を、スカベンジＧＣ停止時間予測値にリマーク停止時間予測値（式（４）で定義）を加算した値としている。
【００１０】
前記したとおり、スカベンジＧＣにおけるプログラム停止時間はＮＥＷ領域にあるライブオブジェクト（長命コールオブジェクトおよび短命制御信号オブジェクト）を、マークし、ＯＬＤ領域にコピーする時間に相当する。よって、本発明において、スカベンジＧＣ停止時間予測値を、式（２）に示すように、
（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクト平均保留時間（Ｂ３）＋スカベンジＧＣ周期×単位時間あたりのコール発生数（Ａ１）×コール１つあたりの長命コールオブジェクト数（Ｂ２））×スカベンジＧＣにおけるＮＥＷ領域のオブジェクト１つあたりのマークおよびコピー時間（Ｃ２）…式（２）
としている。
【００１１】
式（２）における（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクト平均保留時間（Ｂ３））は、スカベンジＧＣ時においてＮＥＷ領域に生存する短命制御信号オブジェクト数の平均値を示す。
【００１２】
また、式（２）における（スカベンジＧＣ周期×単位時間あたりのコール発生数（Ａ１）×コール１つあたりの長命コールオブジェクト数（Ｂ２））は、スカベンジＧＣ周期の間に発生する長命コールオブジェクト数を示す。つまり、スカベンジＧＣ時にＮＥＷ領域に生存する長命コールオブジェクト数を示す。
【００１３】
なお、式（２）において、スカベンジＧＣ周期の間に発生する短命制御信号オブジェクト数を、（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクト平均保留時間（Ｂ３））としているのは、短命制御信号オブジェクトの生存時間がスカベンジＧＣ周期よりも短いことが想定されるからである。つまり、スカベンジＧＣが行われるときに、ＮＥＷ領域に短命制御信号オブジェクトがすべて存続しているとは限らないからである。
【００１４】
さらに、ＮＥＷ領域でスカベンジＧＣが行われる契機は、ＮＥＷ領域がサイズいっぱいまで使用されることである。このため、式（２）で用いるスカベンジＧＣ周期を、式（３）に示すように、
スカベンジＧＣ周期＝ＮＥＷ領域のサイズ（Ｃ１）／（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの長命コールオブジェクト数（Ｂ２）×長命コールオブジェクトのサイズ（Ｂ５）＋単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクトのサイズ（Ｂ４））…式（３）
としている。
【００１５】
式（３）における（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの長命コールオブジェクト数（Ｂ２）×長命コールオブジェクトのサイズ（Ｂ５）は、単位時間あたりＮＥＷ領域に生存する長命コールオブジェクトの合計サイズを示す。
【００１６】
また、式（３）における（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクトのサイズ（Ｂ４））は、単位時間あたりＮＥＷ領域に生存する短命制御信号オブジェクトの合計サイズ（合計サイズの平均値）を示す。
【００１７】
また、リマーク停止時間予測値については、スカベンジＧＣによりＮＥＷ領域からＯＬＤ領域にコピーされたオブジェクト数（つまり、スカベンジ周期を迎えたときにＮＥＷ領域に存在するライブオブジェクト数）×ＣＭＳにおけるＯＬＤ領域にコピーされたオブジェクトの１つあたりのリマーク時間と考えることができる。よって、リマーク停止時間予測値を、式（４）に示すように、
リマーク停止時間予測値＝（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクト平均保留時間（Ｂ３）＋スカベンジＧＣ周期×単位時間あたりのコール発生数（Ａ１）×１コールあたりの長命コールオブジェクト数（Ｂ２））×ＣＭＳにおけるＯＬＤ領域にコピーされたオブジェクト１つあたりのリマーク時間（Ｃ３）…式（４）
としている。
【００１８】
このようにすることで、仮想マシン停止時間予測装置は、仮想マシンにおけるＧＣによるプログラム停止時間予測値を計算することができる。
【００１９】
また、本発明は、仮想マシン停止時間予測装置の前記停止時間予測部が、複数の前記仮想マシンからなるシステムにおけるＧＣ時のプログラム停止時間予測値を計算するとき、前記仮想マシンそれぞれの前記トラヒックモデル情報、前記アプリケーションモデル情報および前記ＧＣ動作パラメータ情報を用いて、前記式（１）〜式（４）により前記仮想マシンそれぞれにおけるＧＣ時のプログラム停止時間予測値を計算して合計し、前記システムにおけるＧＣ時のプログラム停止時間予測値とする。
【００２０】
このようにすることで、システムが複数の仮想マシンからなる場合における、ＧＣによるプログラム停止時間の最大値を予測することができる。
【発明の効果】
【００２１】
本発明によれば、通信ノードに仮想マシンを用いる場合におけるＧＣによるプログラム停止時間予測値を計算できる。
【図面の簡単な説明】
【００２２】
【図１】本実施の形態の仮想マシン停止時間予測装置の機能ブロック図である。
【図２】本実施の形態のトラヒックモデル情報およびアプリケーションモデル情報を説明するための図である。
【図３】仮想マシンにおけるＧＣを説明するための図である。
【図４】複数のサーバからなるシステムにおけるプログラム停止時間予測値の計算処理を説明するための図である。
【発明を実施するための形態】
【００２３】
以下、図面を参照しながら、本発明の仮想マシン停止時間予測装置を実施するための形態を説明する。まず、図１を用いて、本実施の形態の仮想マシン停止時間予測装置１０の構成を説明する。
【００２４】
＜構成＞
仮想マシン停止時間予測装置１０は、アプリケーションモデル情報（後記）、トラヒックモデル情報（後記）およびＧＣ（ガベージコレクション）動作パラメータ情報（後記）の入力を受け付けると、これらの情報に基づき、仮想マシンにおけるＧＣ時のプログラム停止時間の予測値（プログラム停止時間予測値）を計算し、出力する。この仮想マシン停止時間予測装置１０の機能は、入力部１１、停止時間予測部１２および出力部１３に分けられる。
【００２５】
入力部１１および出力部１３は、入出力インタフェースから構成される。また、停止時間予測部１２は、この仮想マシン停止時間予測装置１０の備えるＣＰＵ（Central Processing Unit。図示省略）がメインメモリ（図示省略）にプログラムを展開し、実行することにより実現する。なお、このプログラムは、仮想マシン停止時間予測装置１０の備える補助記憶部（図示省略）の所定領域に格納されるものとする。なお、この停止時間予測部１２を、専用回路により実現するようにしてもよい。
【００２６】
入力部１１は、アプリケーションモデル情報の入力を受け付けるアプリケーションモデル入力部１１１、トラヒックモデル情報の入力を受け付けるトラヒックモデル入力部１１２およびＧＣ動作パラメータ情報の入力を受け付けるＧＣ動作パラメータ入力部１１３を備える。また、出力部１３は、仮想マシンのＧＣによるプログラム停止時間予測値を出力する停止時間予測値出力部１３１を備える。停止時間予測部１２は、アプリケーションモデル情報、トラヒックモデル情報およびＧＣ動作パラメータ情報に基づき、停止時間予測アルゴリズムにより、仮想マシンのＧＣによるプログラム停止時間予測値を計算し、計算したプログラム停止時間予測値を停止時間予測値出力部１３１経由で外部装置等に出力する。
【００２７】
ここで、仮想マシンは、例えば、Java（登録商標）VM（バーチャルマシン）であり、ＳＩＰ（Session Initiation Protocol）サーバ等の通信ノードに用いられるものとする。そして、この仮想マシンに用いられるアプリケーション（アプリケーションプログラム）は、他の端末装置等が、この仮想マシンにアクセスしてから処理を終了するまでの一連の動作を、複数の制御信号が関連するコールとして管理するものとする。また、この１つのコールには、複数の制御信号が関連するものとする。
【００２８】
例えば、アプリケーションが電話アプリケーションである場合を考える。この場合、１つの電話呼が１つのコールであり、このコールには「接続開始」や「接続終了」といった制御信号が関連する。そして、このようなアプリケーションにより仮想マシンは、コールに対し１以上のオブジェクトを生成し、制御信号に対し１以上のオブジェクトを生成する。ここで、１つのコールに対する処理は、仮想マシンの用いるメモリ上に比較的長い時間存在することから、１つのコールに対し生成されるオブジェクトを長命コールオブジェクトとする。一方、１つの制御信号については、その処理についてオブジェクトを生成したとしても比較的短時間（所定時間）で処理が完了してメモリ上から削除されるので、１つの制御信号に対して生成されるオブジェクトを短命制御信号オブジェクトとする。
【００２９】
仮想マシンのＧＣは、メモリのＮＥＷ領域およびＯＬＤ領域それぞれで行われるが、それぞれの領域で方式があり、ここでは、ＮＥＷ領域のＧＣの方式として、スカベンジＧＣ方式を採用し、ＯＬＤ領域のＧＣの方式として、ＣＭＳ方式を採用する場合を説明する。Java（登録商標）VMが生成したライブオブジェクトは所定のスカベンジＧＣ周期になるとマークされ、ＮＥＷ領域から、ＯＬＤ領域にコピーされる。そして、ＮＥＷ領域において当該オブジェクトのために確保されていた領域は解放される。ここで、ＯＬＤ領域にコピーされたオブジェクトに対し、チェック（リマーク）がされる。スカベンジＧＣにおけるＮＥＷ領域のマークおよびコピーの時間およびＣＭＳにおけるＯＬＤ領域にコピーされたオブジェクトのリマークの時間が、仮想マシンのＧＣによるプログラム停止時間となる。
【００３０】
本実施の形態で扱うトラヒックモデル（トラヒックモデル情報）、アプリケーションモデル（アプリケーションモデル情報）およびＧＣ動作パラメータ情報について説明する。
【００３１】
＜トラヒックモデル情報＞
トラヒックモデル情報は、仮想マシンが用いるアプリケーションに関する、以下の情報を含む（図２（ａ）参照）。
・単位時間あたりのコール発生数（Ａ１）
・１コールあたり（コール１つあたり）の制御信号数（Ａ２）
なお、このようなトラヒックモデル情報を用いることで、停止時間予測部１２は、例えば、ＮＥＷ領域の単位時間あたりの制御信号発生数（単位時間あたりのコール発生数（Ａ１）×１コールあたりの制御信号数（Ａ２））を求めることができる。
【００３２】
＜アプリケーションモデル情報＞
また、アプリケーションモデル情報は、仮想マシンが用いるアプリケーションに関する、以下の情報を含む（図２（ｂ）参照）。
・１制御信号あたり（制御信号１つあたり）の短命制御信号オブジェクト数（Ｂ１）
・１コールあたり（コール１つあたり）の長命コールオブジェクト数（Ｂ２）
・短命制御信号オブジェクト平均保留時間（Ｂ３）
・短命制御信号オブジェクトのサイズ（Ｂ４）
・長命コールオブジェクトのサイズ（Ｂ５）
【００３３】
＜ＧＣ動作パラメータ情報＞
さらに、ＧＣ動作パラメータ情報は、以下の情報を含む。
・スカベンジＧＣが行われるＮＥＷ領域のサイズ（Ｃ１）
・スカベンジＧＣにおけるＮＥＷ領域のオブジェクト１つあたりのマークおよびコピー時間（Ｃ２）
・ＣＭＳにおけるＯＬＤ領域にコピーされたオブジェクト１つあたりのリマーク時間（Ｃ３）
【００３４】
停止時間予測部１２は、前記したトラヒックモデル（トラヒックモデル情報）、アプリケーションモデル（アプリケーションモデル情報）およびＧＣ動作パラメータ情報を用いて、停止時間予測アルゴリズムにより仮想マシンのＧＣによるプログラム停止時間予測値を計算する。この停止時間予測アルゴリズムは、前記したトラヒックモデル（トラヒックモデル情報）、アプリケーションモデル（アプリケーションモデル情報）およびＧＣ動作パラメータ情報を用いて、以下の式（１）〜式（４）により仮想マシンのプログラム停止時間予測値を計算するためのアルゴリズムである。
【００３５】
プログラム停止時間予測値＝スカベンジＧＣ停止時間予測値ｔ１＋リマーク停止時間予測値ｔ２…式（１）
ただし、
スカベンジＧＣ停止時間予測値ｔ１＝（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクト平均保留時間（Ｂ３）＋スカベンジＧＣ周期×単位時間あたりのコール発生数（Ａ１）×コール１つあたりの長命コールオブジェクト数（Ｂ２））×スカベンジＧＣにおけるＮＥＷ領域のオブジェクト１つあたりのマークおよびコピー時間（Ｃ２）…式（２）
スカベンジＧＣ周期Ｔ＝ＮＥＷ領域のサイズ（Ｃ１）／（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの長命コールオブジェクト数（Ｂ２）×長命コールオブジェクトのサイズ（Ｂ５）＋単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクトのサイズ（Ｂ４））…式（３）
リマーク停止時間予測値ｔ２＝（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクト平均保留時間（Ｂ３）＋スカベンジＧＣ周期×単位時間あたりのコール発生数（Ａ１）×１コールあたりの長命コールオブジェクト数（Ｂ２））×ＣＭＳにおけるＯＬＤ領域にコピーされたオブジェクト１つあたりのリマーク時間（Ｃ３）…式（４）
【００３６】
前記した式（１）〜式（４）を、図２（ａ）、（ｂ）および図３を参照しながら説明する。なお、図３に示すグラフ２０１の細線は、ＮＥＷ領域サイズのうちオブジェクト（ライブオブジェクトおよび非ライブオブジェクト）により占有されるサイズを示す。特に、グラフ２０１の太線はＮＥＷ領域サイズのうちライブオブジェクトにより占有されるサイズを示す。また、グラフ２０２は、ＯＬＤ領域サイズのうち、オブジェクト（ライブオブジェクトおよび非ライブオブジェクト）により占有されるサイズを示す。このライブオブジェクトとは、ルート集合と呼ばれる参照のもととなっているオブジェクトから参照をたどっていったときに参照でつながっているオブジェクトのことである。非ライブオブジェクトとは、メモリ上のオブジェクトのうち、このライブオブジェクト以外のオブジェクトのことである。ＧＣにおいては、この非ライブオブジェクトのメモリ領域が解放される。
【００３７】
前記したとおり、仮想マシンは、ＮＥＷ領域上に生成したオブジェクト（短命制御信号オブジェクトおよび長命コールオブジェクト）が、ＮＥＷ領域サイズいっぱいになると、すなわちスカベンジＧＣ周期Ｔを迎えるとスカベンジＧＣを行う。これにより、ＮＥＷ領域のライブオブジェクトがマークされ、ＯＬＤ領域にコピーされ、ＮＥＷ領域において当該オブジェクトのために確保されていた領域は解放される。例えば、図３に示すように、仮想マシンはＮＥＷ領域の短命制御信号オブジェクトおよび長命コールオブジェクトのうち、ライブオブジェクトをＯＬＤ領域にコピーする。そして、ＮＥＷ領域において、放棄済オブジェクト（非ライブオブジェクト）およびコピーされたライブオブジェクトに割り当てられていた領域は解放され、ＮＥＷ領域サイズのうちオブジェクトにより占有されるサイズが０になる（グラフ２０１参照）。なお、このスカベンジＧＣ周期Ｔは、短命制御信号オブジェクト平均保留時間（平均生存時間）よりも長いことが想定されるので、短命制御信号オブジェクトは、スカベンジＧＣ周期Ｔを迎える前に放棄済オブジェクト（非ライブオブジェクト）となる可能性がある。また、仮想マシンは、ＯＬＤ領域のライブオブジェクトのマークを行い、その後、ＮＥＷ領域からコピーされたライブオブジェクトのリマークを行う。そして、ＯＬＤ領域でマークおよびリマークされたオブジェクト（ライブオブジェクト）以外のオブジェクト（放棄済オブジェクト）のスィープを行う。つまり、放棄済オブジェクトに割り当てられていた領域の解放が行われる。これにより、ＯＬＤ領域サイズのうちオブジェクトにより占有されるサイズが減少する（グラフ２０２参照）。
【００３８】
ここで、仮想マシンのＧＣによるプログラム停止時間は、（１）スカベンジＧＣにおけるＮＥＷ領域のオブジェクト１つあたりのマークおよびコピー時間（スカベンジＧＣ停止時間予測値ｔ１）と、（２）ＯＬＤ領域にコピーされたオブジェクトのリマークの時間（リマーク停止時間予測値ｔ２）との合計値である。よって、プログラム停止時間予測値＝スカベンジＧＣ停止時間予測値ｔ１＋リマーク停止時間予測値ｔ２…式（１）となる。
【００３９】
ここで、スカベンジＧＣにおけるプログラム停止時間ｔ１は、ＮＥＷ領域にあるライブオブジェクト（長命コールオブジェクトおよび短命制御信号オブジェクト）を、マークし、ＯＬＤ領域にコピーする時間に相当する。よって、スカベンジＧＣ停止時間予測値ｔ１を、式（２）に示すように、
スカベンジＧＣ停止時間予測値ｔ１＝（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクト平均保留時間（Ｂ３）＋スカベンジＧＣ周期Ｔ×単位時間あたりのコール発生数（Ａ１）×コール１つあたりの長命コールオブジェクト数（Ｂ２））×スカベンジＧＣにおけるＮＥＷ領域のオブジェクト１つあたりのマークおよびコピー時間（Ｃ２）…式（２）
としている。
【００４０】
式（２）における（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクト平均保留時間（Ｂ３））は、スカベンジＧＣ時においてＮＥＷ領域に生存する短命制御信号オブジェクト数の平均値を示す。
【００４１】
また、式（２）における（スカベンジＧＣ周期Ｔ×単位時間あたりのコール発生数（Ａ１）×コール１つあたりの長命コールオブジェクト数（Ｂ２））は、スカベンジＧＣ周期Ｔの間に発生する長命コールオブジェクト数を示す。つまり、スカベンジＧＣ時にＮＥＷ領域に生存する長命コールオブジェクト数を示す。
【００４２】
なお、式（２）において、スカベンジＧＣ周期Ｔの間に発生する短命制御信号オブジェクト数を、（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクト平均保留時間（Ｂ３））としているのは、短命制御信号オブジェクトの生存時間がスカベンジＧＣ周期Ｔよりも短いことが想定されるからである。つまり、スカベンジＧＣが行われるときに、ＮＥＷ領域に短命制御信号オブジェクトがすべて存続（生存）しているとは限らないからである。
【００４３】
さらに、前記したとおり、ＮＥＷ領域でスカベンジＧＣが行われる契機は、ＮＥＷ領域がサイズいっぱいまで使用されることである。このため、式（２）で用いるスカベンジＧＣ周期Ｔを、式（３）に示すように、
スカベンジＧＣ周期Ｔ＝ＮＥＷ領域のサイズ（Ｃ１）／（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの長命コールオブジェクト数（Ｂ２）×長命コールオブジェクトのサイズ（Ｂ５）＋単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクトのサイズ（Ｂ４））…式（３）
としている。
【００４４】
式（３）における（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの長命コールオブジェクト数（Ｂ２）×長命コールオブジェクトのサイズ（Ｂ５））は、単位時間あたりＮＥＷ領域に生存する長命コールオブジェクトの合計サイズを示す。
【００４５】
また、式（３）における（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクトのサイズ（Ｂ４））は、単位時間あたりＮＥＷ領域に生存する短命制御信号オブジェクトの合計サイズ（合計サイズの平均値）を示す。
【００４６】
また、リマーク停止時間予測値ｔ２については、スカベンジＧＣによりＮＥＷ領域でマークされ、ＯＬＤ領域にコピーされたオブジェクト数（つまり、スカベンジ周期の間に発生したオブジェクト数）×ＣＭＳにおけるＯＬＤ領域にコピーされたオブジェクトの１つあたりのリマーク時間と考えることができる。よって、リマーク停止時間予測値ｔ２を、式（４）に示すように、
リマーク停止時間予測値ｔ２＝（単位時間あたりのコール発生数（Ａ１）×コール１つあたりの制御信号数（Ａ２）×制御信号１つあたりの短命制御信号オブジェクト数（Ｂ１）×短命制御信号オブジェクト平均保留時間（Ｂ３）＋スカベンジＧＣ周期×単位時間あたりのコール発生数（Ａ１）×１コールあたりの長命コールオブジェクト数（Ｂ２））×ＣＭＳにおけるＯＬＤ領域にコピーされたオブジェクト１つあたりのリマーク時間（Ｃ３）…式（４）
としている。
【００４７】
以上説明した停止時間予測アルゴリズムによれば、仮想マシン停止時間予測装置１０の停止時間予測部１２は、トラヒックモデル（トラヒックモデル情報）、アプリケーションモデル（アプリケーションモデル情報）およびＧＣ動作パラメータ情報を用いて仮想マシンのＧＣ時のプログラム停止時間の予測値を計算することができる。これにより、Java（登録商標）VM等の仮想マシンを用いた通信ノードのソフトウェア開発前に、ＧＣによるプログラム停止時間の予測値を得ることができるので、通信ノードの通信処理遅延時間の要件を満たしつつ、仮想マシンで動作させる見積もりを得ることができる。従って、通信ノードのソフトウェア開発中に仮想マシンのＧＣ時のプログラム停止により、通信ノードの通信処理遅延時間の要件を満たすことができず、ソフトウェアを別言語で作り直さなくてはいけないという事態を避けることができる。
【００４８】
なお、仮想マシン停止時間予測装置１０の停止時間予測部１２は、複数の仮想マシン（サーバ２０）からなるシステムにおけるＧＣ時のプログラム停止時間予測値を計算するようにしてもよい。例えば、図４に示すように、システムがサーバ２０（サーバ２０ａ，２０ｂ，…，２０ｎ）により構成される場合を考える。この場合、図１の仮想マシン停止時間予測装置１０の停止時間予測部１２は、入力部１１経由で入力されたサーバ２０（サーバ２０ａ，２０ｂ，…，２０ｎ）それぞれのアプリケーションモデル情報、トラヒックモデル情報およびＧＣ動作パラメータ情報を用いて、サーバ２０（サーバ２０ａ，２０ｂ，…，２０ｎ）それぞれのプログラム停止時間予測値を計算する。そして、これらのプログラム停止時間予測値を合計し、システムにおけるＧＣ時のプログラム停止時間予測値（システム全体の最大停止時間予測値）を計算し、この計算結果を出力部１３経由で出力する。このようにすることで、システムが複数の仮想マシンからなる場合のＧＣ時のプログラム停止時間の最大値を予測することができる。これにより、システムの通信処理遅延時間を予測しやすくなる。
【符号の説明】
【００４９】
１０    仮想マシン停止時間予測装置
１１    入力部
１２    停止時間予測部
１３    出力部
２０    サーバ
１１１  アプリケーションモデル入力部
１１２  トラヒックモデル入力部
１１３  ＧＣ動作パラメータ入力部
１３１  停止時間予測値出力部
【図１】
2014052953.tif 000003
【図２】
2014052953.tif 000004
【図３】
2014052953.tif 000005
【図４】
2014052953.tif 000006