(57)【要約】      （修正有）【課題】処理装置に組み込まれている「ハードウェアモニタ」と呼ばれるＣＰＵ性能プロファイリングのための論理を利用して、性能解析情報を算出する。【解決手段】「ハードウェアモニタ」機能と、該ハードウェアモニタを用いて採取可能なCPU性能情報及び該情報を採取するCPU性能情報採取プログラムと、処理プログラムによって採取可能な処理性能情報と、CPU性能情報と処理性能情報からダイナミックステップ数あるいは単位処理時間等の性能解析情報を算出する算出処理とを用いる。【選択図】  図１
2006004211.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置および処理プログラムの性能解析に関し、処理プログラムの処理単位当りの性能を計測し比較する性能解析方法おいて、
情報処理装置内の処理装置に組み込まれているハードウェアモニタであるCPU性能プロファイリングのための論理と該ハードウェアモニタを用いてCPU性能情報を採取し、
前記情報処理装置で実行される処理プログラムの処理性能情報を採取し、
該CPU性能情報と該処理性能情報からダイナミックステップ数あるいは処理時間等の性能解析情報を算出し、
前記情報処理装置での処理プログラムの実行に関するCPU性能情報と処理性能情報を採取し、該CPU性能情報と該処理性能情報から性能解析情報を算出することで、ダイナミックステップ数あるいは処理時間等の性能解析情報を採取することを特徴とする処理プログラムの性能解析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびソフトウェアの性能解析に関し、特に処理単位当りの性能を計測し比較する性能解析方法、この方法を実現するための装置およびこの方法実施するためのプログラムに関するものである。
【背景技術】
【０００２】
情報処理装置およびソフトウェアの処理性能を向上させるには、現状の処理性能を測定・解析して、処理性能向上の阻害要因を特定する事が重要である。この処理性能を測る指標としては、ある処理単位当りに情報処理装置内で実行される命令数を示す「ダイナミックステップ数」、またはある処理単位当りに情報処理装置が処理に必要とする時間を示す「単位処理時間」がある。
【０００３】
処理プログラムのダイナミックステップ数あるいは単位処理時間を求める場合、人手によってアセンブリ言語のソースステートメント数を数え、さらに処理プログラムが実行される際の実行順序を推定してダイナミックステップ数を算出し、さらに処理プログラムが実行されるCPUの処理性能から単位処理時間を算出する、という方法が考えられる。
【０００４】
また、特許文献１に示される様に、処理プログラムのソースコードを改変し処理プログラム内の各マクロの実行回数を測定すると言う方法がある。これは、各マクロ毎のダイナミックステップ数、単位処理時間は上述の人手による手法により予め推定しておき、該方法で測定されたマクロ実行回数結果と組み合わせて算出する、と言う方法である。
【０００５】
【特許文献１】特開平6-266585号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし上述した様に、これらの方法では、以下の課題がある。
(1)性能評価対象となる処理プログラムのソースコードが手元に無い場合、アセンブリ言語のソースステートメント数を数える事が出来ない、
(2)何らかの理由により、例えば既に顧客先にて該処理プログラムが実行中であり処理プログラムを入れ替える事が出来ない為、該処理プログラムのソースコードあるいは処理プログラム自身を改変できない場合、マクロの実行回数を測定出来ない、
(3)マクロの実行回数に応じてダイナミックステップ数、単位処理時間を算出する方法の為、予め各マクロ毎のソースステートメント数を算出しておく必要がある、といったものである。
【０００７】
本発明では、性能評価対象となる情報処理装置または処理プログラムにおいて、より容易に（例えば、処理プログラムのソースステートメント数を数える事無く、さらに処理プログラムの改変を行う事無く）ダイナミックステップ数あるいは単位処理時間等の性能解析情報を算出する技術を提供する、ことを目的とする。
【課題を解決するための手段】
【０００８】
前述の目的を実現するために、本発明では、処理装置（以下、CPU）に組み込まれている「ハードウェアモニタ」と呼ばれるCPU性能プロファイリングのための論理を利用して、性能解析情報を算出するものである。
【０００９】
より具体的には、「ハードウエアモニタ」機能と、該ハードウェアモニタを用いて採取可能なCPU性能情報及び該情報を採取するCPU性能情報採取プログラムと、処理プログラムによって採取可能な処理性能情報と、CPU性能情報と処理性能情報からダイナミックステップ数あるいは単位処理時間等の性能解析情報を算出する算出処理と、を用いる。
【発明の効果】
【００１０】
本発明によれば、より容易に性能解析を実行することが可能になる。
【発明を実施するための最良の形態】
【００１１】
図1に発明の実施形態の例を示す。
100は情報処理装置を、110は100で実行される処理プログラムを、120は情報処理装置に搭載されるCPUを、それぞれ示している。110および120は共に100において1つあっても複数あっても良い。
【００１２】
また120にはハードウェアモニタ(121)と呼ばれるCPU性能プロファイリングのための専用論理が設置されている。121は例えば特開平8-30494号公報に示される様な、CPUでの処理を邪魔すること無くCPU性能情報を採取するCPU性能プロファイリング機能を提供するもので、例えばCPU性能情報として実行命令数あるいは処理における消費サイクル数等を採取する機能を有する。
【００１３】
さらに121を用いてCPU性能情報を採取するCPU性能情報採取プログラム(130)が100で実行される。130は121に対してCPU性能情報採取についての制御を行う。130は110とは独立したプログラムであっても、また110と統合されたプログラムであっても良い。
一方、110はその実行に関する処理性能情報を採取する機能を有する。これは例えば110内に設置される処理投入キュー(111)を各処理が通過する際に採取される仕組みになっている。
【００１４】
さらに130によって採取されたCPU性能情報を格納する140、110によって採取された処理性能情報を格納する141がそれぞれ設置される。140、141は互いに独立した格納先であっても、統合された格納先であっても良い。また140、141は100内に搭載されていても、100の外に設置されていても良い。
【００１５】
また140、141に格納されたCPU性能情報および処理性能情報を用いて性能解析情報を算出する算出処理(142)を有する。142は100で実行されても、100とは異なる情報処理装置で実行されても良い。また142は110あるいは130と統合されていても良い。
【００１６】
さらに、142によって求められた性能解析情報を格納する143を有する。143は100内に搭載されていても、100の外に設置されていても良い。
そして143に格納された性能解析情報を表示する表示処理(144)を有する。144は100で実行されても、100とは異なる情報処理装置で実行されても良い。また144は110、130あるいは142と統合されていても良い。
【００１７】
次に、本実施形態での性能解析情報取得方法の例について述べる。
110での処理は各々処理単位ごとに区切られて、外部からの処理要求として投入され、処理が完了した後に処理応答として外部に返信される。
110に対する処理要求(180)は、処理単位毎に例えば111に一旦保持され、順番待ちをした後に処理のCPU投入要求(181)として120に投入され、処理が完了した後に処理応答(182)として返される。
【００１８】
上述で各単位毎の処理が120で実行される一方で、130は121に対して測定すべきCPU性能情報・測定開始・測定終了を制御することで、CPU性能情報を採取する。
具体的には130は121に対してCPU性能情報採取要求(183)を通じて、目的とするCPU性能情報、例えば実行命令数、消費サイクル数、キャッシュヒット回数等を、ある時刻(T0)からある時刻(T1)まで測定するように通知する。
121は130からの要求(183)に応じてCPU性能情報を採取し、CPU性能情報採取応答(184)を通じて測定結果を130に返信する。
こうして採取されたCPU性能情報はCPU性能情報保存(185)を通じて130から140に保存される。
【００１９】
図2に、140に保存されるCPU性能情報の形式の1例を示す。
200はCPU性能情報を保存しておくテーブルを示しており、テーブルにはその項目として例えば、対応する時刻(210)、実行命令数(211)、消費サイクル数(212)、キャッシュヒット回数(213)等が含まれている。
【００２０】
各項目は対応する時刻毎にCPU性能情報が記録されており、例えば210の時刻T0の欄では、期間T0〜T1の間に120が実行した実行命令数i0が211に、120が実行した命令を処理するのに掛かった消費サイクル数C0が212に、120にて発生したキャッシュヒット回数H0が213に、それぞれ記録されている。
【００２１】
上述のCPU性能情報は各時刻毎に同様に記録されており、各欄は130が新たなCPU性能情報を採取する毎に200に付け加えられて行く。
【００２２】
上述のCPU性能情報を130が採取する一方で、処理性能情報が採取される。
処理性能情報は例えば、111を通過する処理単位の数を数えることにより実現される。あるいは、120に投入された181の数、110を通過した182の数を数えること等を用いても良い。
【００２３】
なお、ここでは100上で実行される110によって処理性能情報を採取する場合を実施例にしているが、例えば110とは別のプログラムが180、181または182の数を数える等の方法により、処理性能情報を採取しても良い。
上述の方法により採取された処理性能情報は処理性能情報保存(186)を通じて141に保存される。
【００２４】
図3に、141に保存される処理性能情報の形式の1例を示す。
300は処理性能情報を保存しておくテーブルを示しており、テーブルにはその項目として例えば、対応する時刻(310)、処理実行数(311)等が含まれている。
各項目は対応する時刻毎に処理性能情報が記録されており、例えば310の時刻T0の欄では、期間T0〜T1の間に110が実行した処理実行数J0が311に、それぞれ記録されている。
上述の処理性能情報は各時刻毎に同様に記録されており、各欄は例えば110が新たな処理性能情報を採取する毎に300に付け加えられて行く。
【００２５】
この様にして得られた140および141の情報を元に、142がダイナミックステップ数あるいは単位処理時間等の性能解析情報を算出する。
【００２６】
具体的には、142は目的とする性能解析情報を算出するのに必要なCPU性能情報および処理性能情報を190あるいは191を通じて読出す。読出す情報は該性能解析情報を計算するのに必要な物のみで良いため、140および141の情報全てを用いる必要は無い。
【００２７】
また、本実施例では採取されたCPU性能情報あるいは処理性能情報が、140あるいは141にそれぞれ一旦保存される場合を想定しているが、140あるいは141の様な保存先を省略して、直接CPU性能情報あるいは処理性能情報を142が130あるいは110から読出しても良い。
【００２８】
142は上述の読出し情報を元に性能解析情報を例えば後述の計算方法により算出し、192を通じて143に保存する。
図4に143に保存される性能解析情報の形式の1例を示す。
400は性能解析情報を保存しておくテーブルを示しており、テーブルにはその項目として例えば、対応する時刻(410)、ダイナミックステップ数(411)、単位処理時間(412)、MIPS数(413)、CPU利用率(414)、処理スループット(415)等が含まれている。
各項目は対応する時刻毎に性能解析情報が記録されており、例えば410の時刻T0の欄では、期間T0〜T1の間でのダイナミックステップ数D0が411に、単位処理時間E0が412に、120が単位時間当りに実行できる命令数を表すMIPS数M0が413に、単位時間当りにどのぐらいの割合で120を利用しているかを表すCPU利用率B0が414に、単位時間当りにどのぐらいの処理を実行することができるかを表す処理スループットP0が415に、それぞれ記録されている。
【００２９】
上述の性能解析情報は各時刻毎に同様に記録されており、各欄は142が新たな性能解析情報を算出する毎に400に付け加えられて行く。
【００３０】
それぞれの項目についての計算方法は例えば以下の様になる。
期間T0〜T1の間でのダイナミックステップ数D0は、例えば同一期間に採取されたCPU性能情報である実行命令数i0が200中の211から、また同一期間に採取された処理性能情報である処理実行数J0が300中の311から、それぞれ読み出され、「D0 = i0 / J0」として計算される。計算結果は400中の411の対応する欄に保存される。
【００３１】
同様に期間T0〜T1の間での単位処理時間E0は、例えば同一期間に採取されたCPU性能情報である消費サイクル数C0が200中の212から、また同一期間に採取された処理性能情報である処理実行数J0が300中の311から、それぞれ読み出され、「E0 = C0 / J0」として計算される。この計算方法ではE0は120でのCPUサイクル数として算出されるが、代わりにこの値を120のクロック周波数を用いて求めた実時間で表しても良い。
【００３２】
同様に期間T0〜T1の間でのMIPS数M0は、例えば同一期間に採取されたCPU性能情報である実行命令数i0が200中の211から、また消費サイクル数C0が200中の212から、それぞれ読み出され、さらに別途求められる120のクロック周波数Fを用いて、「M0 = i0 * F / C0」として算出される。ここで単位をM（メガ）に合わせるために、さらにM0を1000000で除算した値を用いても良い。
【００３３】
同様に期間T0〜T1の間でのCPU利用率B0は、例えば同一期間に採取された消費サイクル数C0が200中の212から読み出され、さらに別途求められる120のクロック周波数Fを用いて、「B0 = C0 / F / (T1 - T0)」として算出される。ここでB0をパーセンテージに直すためにさらに100で乗算して値を用いても良い。
【００３４】
同様に期間T0〜T1の間での処理スループットP0は、例えば同一期間に採取された処理性能情報である処理実行数J0が300中の311から読み出され、「P0 = J0 / (T1 - T0)」として算出される。
【００３５】
図5に143に保存される性能解析情報の別の形式の1例を示す。
500は性能解析情報を保存しておくテーブルを示しており、テーブルにはその項目として例えば、対応する期間(510)、ダイナミックステップ数(511)、単位処理時間(512)、MIPS数(513)、CPU利用率(514)、処理スループット(515)等が含まれている。
各項目は対応する期間の性能解析情報が記録されており、例えば510の期間T0〜Tn（但しnは自然数。以降も同様）の欄では、期間T0〜Tnの間での平均ダイナミックステップ数Daが511に、平均単位処理時間Eaが512に、平均MIPS数Maが513に、平均CPU利用率Baが514に、平均処理スループットPaが515に、それぞれ記録されている。
【００３６】
上述の性能解析情報は各期間毎に同様に記録されており、各欄は142が新たな性能解析情報を算出する毎に500に付け加えられて行く。
【００３７】
それぞれの項目についての計算方法は例えば以下の様になる。
期間T0〜Tnの間での平均ダイナミックステップ数Daは、例えば同一期間に採取されたCPU性能情報である実行命令数i0〜in-1が200中の211から、また同一期間に採取された処理性能情報である処理実行数J0〜Jn-1が300中の311から、それぞれ読み出され、「Da = (i0〜in-1)の総和 / (J0〜Jn-1)の総和」として計算される。計算結果は400中の411の対応する欄に保存される。
【００３８】
同様に期間T0〜Tnの間での平均単位処理時間Eaは、例えば同一期間に採取されたCPU性能情報である消費サイクル数C0〜Cn-1が200中の212から、また同一期間に採取された処理性能情報である処理実行数J0〜Jn-1が300中の311から、それぞれ読み出され、「Ea = (C0〜Cn-1)の総和 / (J0〜Jn-1)の総和」として計算される。この計算方法ではEaは120でのCPUサイクル数として算出されるが、代わりにこの値を120のクロック周波数を用いて求めた実時間で表しても良い。
【００３９】
同様に期間T0〜Tnの間での平均MIPS数Maは、例えば同一期間に採取されたCPU性能情報である実行命令数i0〜in-1が200中の211から、また消費サイクル数C0〜Cn-1が200中の212から、それぞれ読み出され、さらに別途求められる120のクロック周波数Fを用いて、「Ma = (i0〜in-1)の総和 * F / (C0〜Cn-1)の総和」として算出される。ここで単位をM（メガ）に合わせるために、さらにMaを1000000で除算した値を用いても良い。
同様に期間T0〜Tnの間での平均CPU利用率Baは、例えば同一期間に採取された消費サイクル数C0〜Cn-1が200中の212から読み出され、さらに別途求められる120のクロック周波数Fを用いて、「Ba = (C0〜Cn-1)の総和 / F / (Tn - T0)」として算出される。ここでBaをパーセンテージに直すためにさらに100で乗算して値を用いても良い。
同様に期間T0〜Tnの間での処理スループットPaは、例えば同一期間に採取された処理性能情報である処理実行数J0〜Jn-1が300中の311から読み出され、「Pa = (J0〜Jn-1)の総和 / (Tn - T0)」として算出される。
上述の方法によって143に保存された性能解析情報は、144によって表示を行うことが出来る。
【００４０】
具体的には、144は143より193を通じて表示に必要な性能解析情報を読出し、目的とする形式に配置・整形して表示する。なお143に保存されている全ての情報を表示しなくても良い。
【００４１】
表示の形式は、例えば図4の様に時刻毎の性能解析情報を各項目ごとに時系列で表形式に表示する、あるいは例えば図5の様にある期間の性能解析結果を各項目の平均値毎に表形式で表示する、と言うものがある。
あるいは別の表示形式として、例えば図6に示すように性能解析情報の中のある時刻のものを表示する、というものが考えられる。
あるいは別の表示形式として、例えば図7に示すように各時刻毎の性能解析情報を各項目毎に、時刻を横軸に、解析値を縦軸にプロットしたグラフ形式で表示する、というものが考えられる。
【００４２】
以上説明した様に本実施例によれば、マクロ毎の実行回数を記録する必要が無い、さらに処理プログラムのソースステートメント数を数える必要が無いため、マクロ実行回数記録のための処理プログラムの変更を行うこと無く、かつ処理プログラムのソースステートメントを見ること無しに、ダイナミックステップ数あるいは単位処理時間等の性能解析情報を正確に採取する方法を提供することが可能となる。
【００４３】
なお、本実施例では性能解析情報としてダイナミックステップ数あるいは単位処理時間を例に説明しているが、121および130にて採取するCPU性能解析情報を変更することで、例えば100および120上の記憶装置の性能指標である単位処理当りのキャッシュミス発生率、あるいは120上の浮動少数点演算装置の性能指標である単位処理当りのFLOPS値、等の本実施例とは別の性能解析情報を得ることが可能であることは自明である。
また、本実施例では性能解析情報の算出にCPU性能情報および処理性能情報の双方を用いる場合を例に説明しているが、例えばMIPS数あるいはCPU利用率等の処理性能情報に依存しない性能解析情報のみを算出する場合には、CPU性能情報のみを採取することで目的とする性能解析情報を得ることが可能であることは自明である。
従来の方法では、情報処理装置で実行される処理プログラムが変更される度に、処理プログラム毎にアセンブリ言語のソースステートメント数を数える、あるいは処理プログラム毎にソースコードを改変し処理プログラム内の各マクロの実行回数を測定する必要があったのに対して、本発明の方法では、CPUに組み込まれている「ハードウェアモニタ」と呼ばれるCPU性能プロファイリングのための論理と、該ハードウェアモニタを用いて採取可能なCPU性能情報及び該情報を採取するCPU性能情報採取プログラムとを用いて、ダイナミックステップ数あるいは単位処理時間等の性能解析情報を採取するため、
情報処理装置で実行される処理プログラムを任意に置き換える事が可能である点、
MIPS数あるいはCPU利用率等の従来技術では採取出来なかった性能解析情報を採取することが可能である点、に本発明の効果がある。
【産業上の利用可能性】
【００４４】
本実施例では処理プログラムのダイナミックステップ数および単位処理時間を算出することを例に説明しているが、一方でMIPS数、CPU利用率、処理スループット等が採取可能であることから、情報処理装置、処理プログラムまたはCPUの性能監視手段として利用することが考えられる。
【００４５】
あるいは本実施例により採取可能な性能解析情報を元に、情報処理装置、処理プログラムまたはCPUの性能指標として利用することが考えられる。
あるいは本実施例により採取可能な性能解析情報を元に、情報処理装置またはCPUの最大処理性能を予測あるいは算出することで、情報処理装置の最適な規模を算出する手段、あるいは情報処理装置における最適なCPU台数を予測・算出する手段として利用することが考えられる。
【００４６】
あるいは本実施例により採取可能な性能解析情報を元に、異なる情報処理装置あるいはCPU毎に該性能解析情報を求めておき、これらを比較することで、処理プログラムを異なる情報処理装置あるいはCPUで実行させる場合の処理性能を予測・算出する手段として利用することが考えられる。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施例の性能解析方法により、処理プログラム及び情報処理装置の性能解析を実施する方法の構成を示す図である。
【図２】図1の性能解析方法において、CPU性能情報採取プログラムによって採取されるCPU性能情報の形式の1例を示す図である。
【図３】図1の性能解析方法において、処理プログラムによって採取される処理性能情報の形式の1例を示す図である。
【図４】図1の性能解析方法において、算出処理によって求められる性能解析情報の形式およびその表示形式の1例を示す図である。
【図５】図1の性能解析方法において、算出処理によって求められる性能解析情報の形式およびその表示形式の別の1例を示す図である。
【図６】図1の性能解析方法において、算出処理によって求められる性能解析情報の表示形式の別の1例を示す図である。
【図７】図1の性能解析方法において、表示処理によってグラフ化された性能解析情報の形式の1例を示す図である。
【符号の説明】
【００４８】
100：情報処理装置
110：処理プログラム
111：処理投入キュー
120：CPU
121：ハードウェアモニタ
130：CPU性能情報採取プログラム
140：CPU性能情報
141：処理性能情報
142：性能解析情報の算出処理
143：性能解析情報
144：性能解析情報の表示処理
180：処理プログラムに対する処理要求
181：処理のCPU投入要求
182：処理応答
183：CPU性能情報採取要求
184：CPU性能情報採取応答
185：CPU性能情報保存
186：処理性能情報保存
190：算出処理にて用いられるCPU性能情報読出し
191：算出処理にて用いられる処理性能情報読出し
192：性能解析情報保存
193：表示処理に用いられる性能解析情報読出し
200：CPU性能情報テーブル
210：CPU性能情報採取時刻
211：実行命令数保存領域
212：消費サイクル数保存領域
213：キャッシュヒット回数保存領域
300：処理性能情報テーブル
310：処理性能情報採取時刻
311：処理実行数保存領域
400：性能解析情報テーブル
410：性能解析情報対応時刻
411：ダイナミックステップ数保存領域
412：単位処理時間保存領域
413：MIPS数保存領域
414：CPU利用率保存領域
415：処理スループット保存領域
500：性能解析情報テーブル
510：性能解析情報対応期間
511：ダイナミックステップ数保存領域
512：単位処理時間保存領域
513：MIPS数保存領域
514：CPU利用率保存領域
515：処理スループット保存領域
600：性能解析情報テーブル
610：性能解析情報対応時刻
611：ダイナミックステップ数表示領域
612：単位処理時間表示領域
613：MIPS数表示領域
614：CPU利用率表示領域
615：処理スループット表示領域
710：ダイナミックステップ数グラフ
711：単位処理時間グラフ
712：CPU利用率グラフ
【図１】
2006004211.tif 000003
【図２】
2006004211.tif 000004
【図３】
2006004211.tif 000005
【図４】
2006004211.tif 000006
【図５】
2006004211.tif 000007
【図６】
2006004211.tif 000008
【図７】
2006004211.tif 000009