(57)【要約】【課題】ソフトウェアの性能測定における測定値より有意な値を抽出するプログラム、測定装置及び測定方法を提供する。【解決手段】コンピュータプログラムは、コンピュータに、取得した複数の測定値の分布パターンを判定し、判定した前記測定値の分布パターンに従って、前記取得した複数の測定値から有意な測定値を抽出し、抽出した前記有意な測定値から、前記複数の測定値に係る測定の結果値を算出する処理を実行させることを特徴とする。【選択図】図１
2014013445.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
取得した複数の測定値の分布パターンを判定し、
判定した前記測定値の分布パターンに従って、前記取得した複数の測定値から有意な測定値を抽出し、
抽出した前記有意な測定値から、前記複数の測定値に係る測定の結果値を算出する、
処理を実行させることを特徴とするプログラム。
【請求項２】
前記分布パターンの判定は
前記複数の測定値を分級し、
各分級区間に含まれる測定値の度数を求め、
度数が１以上である一又は連続する複数の前記分級区間を評価区間として特定し、
特定した評価区間の数に基づいて行う、
処理を実行させることを特徴とする請求項１に記載のプログラム。
【請求項３】
前記分布パターンを判定する処理で、前記評価区間が１つと判定された場合、前記有意な測定値としてすべての測定値を抽出し、
前記分布パターンを判定する処理で、前記評価区間が２つと判定された場合、前記評価区間毎に度数を算出し、前記取得した複数の測定値全数に前記２つの評価区間の度数の合計が占める割合を算出し、算出した割合が所定の閾値を超過していると判定したとき、前記有意な測定値として度数が大きい方の評価区間に含まれる測定値を抽出し、
前記分布パターンを判定する処理で、前記評価区間が３つ以上と判定された場合、前記評価区間毎に度数を算出し、度数が大きい上位３つの評価区間を特定し、前記取得した複数の測定値全数に前記上位３つの評価区間の度数の合計が占める割合を算出し、算出した割合が所定の閾値を超過していると判定したとき、前記有意な測定値として度数が１位である評価区間に含まれる測定値を抽出する、
処理を実行させることを特徴とする請求項２に記載のプログラム。
【請求項４】
前記取得した複数の測定値の一部又は全部を、各集合の要素の数が同一となるようＮ個（Ｎは２以上の自然数）の測定値集合に分け、
前記要素の数を、２から、前記取得した測定値の全数をＮで除して得た商の整数部の値まで変化させた場合のそれぞれに対して、
各測定値集合について、分布パターンを判定し、判定した分布パターンに従い、有意な測定値を抽出し、抽出した有意な測定値より各測定値集合についての結果値を算出し、
算出した測定値集合についての結果値の平均値及び標準偏差を求め、標準偏差と平均値との比率が所定値以下である場合、前記要素の数を有意と判定する処理を行い、
有意であると判定された上記要素の数の最小値を、その後の測定で取得すべき測定値の全数とする、
処理を実行させることを特徴とする請求項３に記載のプログラム。
【請求項５】
前記結果値は、前記抽出した有意な測定値の平均値である
ことを特徴とする請求項１から４のいずれか一項に記載のプログラム。
【請求項６】
取得した複数の測定値の分布パターンを判定する判定部と、
判定した測定値の分布パターンに従って、前記取得した複数の測定値から有意な測定値を抽出する抽出部と、
該抽出した有意な測定値から、前記複数の測定値に係る測定の結果値を算出する結果値算出部と
を含むことを特徴とする測定装置。
【請求項７】
コンピュータが、
取得した複数の測定値の分布パターンを判定し、
判定した測定値の分布パターンに従って、前記取得した複数の測定値から有意な測定値を抽出し、
該抽出した有意な測定値から、前記複数の測定値に係る測定の結果値を算出する、
処理を実行することを特徴とする測定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソフトウェアの性能測定における測定値より有意な値を抽出するプログラム、測定装置及び測定方法に関する。
【背景技術】
【０００２】
コンピュータシステムの負荷を監視する技術、計測データより異常データを取り除く技術は知られている（例えば、特許文献１、特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１９３２３８号公報
【特許文献２】特開２００４−２４１４１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記した技術ではコンピュータシステムの負荷の監視は行えるものの、個々のソフトウェアの性能測定は行えない。また、統計的な分布から外れたデータを異常データとして除外するという従来技術は、統計的な分布に従わないソフトウェアの性能測定データには適用できない。
【０００５】
１つの側面では、本発明は、ソフトウェアの性能測定における測定値より有意な値を抽出するプログラム、測定装置及び測定方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一態様のプログラムは、コンピュータに、取得した複数の測定値の分布パターンを判定し、判定した前記測定値の分布パターンに従って、前記取得した複数の測定値から有意な測定値を抽出し、抽出した前記有意な測定値から、前記複数の測定値に係る測定の結果値を算出する処理を実行させる。
【発明の効果】
【０００７】
一態様によれば、取得した複数の測定値の分布パターンを検出し、分布パターンに従って、測定値の抽出を行うので、有意な測定値を抽出することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係る性能測定装置のハードウェア構成の一例を示すブロック図である。
【図２】測定値の分布パターンを概念的に示すグラフである。
【図３】測定値の分布パターンを概念的に示すグラフである。
【図４】測定値の分布パターンを概念的に示すグラフである。
【図５】閾値設定テーブルのレコードレイアウトの一例を示す説明図である。
【図６】測定値の分布パターンを判別する処理についてのフローチャートである。
【図７】測定値の分布パターンを判別する処理についてのフローチャートである。
【図８】測定値の分布パターンを判別する処理についてのフローチャートである。
【図９】測定値の一例を示すテーブルである。
【図１０】評価区間毎の下端、上端、度数（ＫＯＳＵ）を示す表の抜粋である。
【図１１】評価区間と度数との関係を示す棒グラフである。
【図１２】ピーク検出結果を示す表である。
【図１３】測定値の一例を示すテーブルである。
【図１４】評価区間と度数との関係を示す棒グラフである。
【図１５】ピーク検出結果を示す表である。
【図１６】測定値の一例を示すテーブルである。
【図１７】評価区間と度数との関係を示す棒グラフである。
【図１８】測定値Ｐ（ｊ）の平均値、標準偏差、標準偏差／平均値を示す表である。
【図１９】測定値の一例を示すテーブルである。
【図２０】評価区間と度数との関係を示す棒グラフである。
【図２１】ピーク検出結果を示す表である。
【図２２】分布パターンを判定するのに用いる変数の値を示す表である。
【図２３】１回の評価当たりの必要最小測定回数を求める処理手順の一例を示すフローチャートである。
【図２４】１回の評価当たりの必要最小測定回数を求める処理手順の一例を示すフローチャートである。
【図２５】閾値設定テーブルのレコードレイアウトの一例を示す説明図である。
【図２６】１回の評価当たりの必要最小測定回数を求める処理手順の一例を示すフローチャートである。
【図２７】１回の評価当たりの必要最小測定回数を求める処理手順の一例を示すフローチャートである。
【図２８】１作業あたりの測定結果と１回の性能測定結果との関係を概念的に示す説明図である。
【図２９】性能測定を行う場合の準備作業の手順を示したフローチャートである。
【図３０】測定項目テーブルのレコードレイアウトの一例を示す説明図である。
【図３１】測定作業の処理手順を示すフローチャートである。
【図３２】測定値の格納領域の一例を示す説明図である。
【図３３】測定結果テーブルのレコードレイアウトの一例を示す説明図である。
【図３４】実施の形態１から３に係る性能測定装置の動作を示す機能ブロック図である。
【図３５】実施の形態４に係る性能測定装置のハードウェア群を示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
以下、本発明をその実施の形態を示す図面に基づき具体的に説明する。
図１は実施の形態１に係る性能測定装置のハードウェア構成の一例を示すブロック図である。性能測定装置はＣＰＵ(Central Processing Unit)１、ＲＡＭ（Random AccessMemory）２、ＲＯＭ（Read Only Memory）３、データベース４、操作部５、通信部６を含む。性能測定装置は例えばパーソナルコンピュータ、サーバコンピュータを用いて構成される。
【００１０】
ＣＰＵ１はバスを介してハードウェア各部と接続されている。ＣＰＵ１はＲＯＭ３に記憶された制御プログラム３Ｐに従いハードウェア各部を制御する。ＲＡＭ２は例えばＳＲＡＭ（Static ＲＡＭ）、ＤＲＡＭ（Dynamic ＲＡＭ）、フラッシュメモリ等である。ＲＡＭ２はＣＰＵ１によるプログラムの実行時に発生する種々のデータを一時的に記憶する。データベース４は性能測定を行うための各種データ（閾値設定テーブル、測定値等）を記憶している。操作部５は性能測定を行う際の設定等を入力するのに用いられる。通信部６はネットワークＮを介して、他のコンピュータと通信する機能を備える。ネットワークＮはＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）、インターネット、パケット交換網等である。
【００１１】
図２、３、４は測定値の分布パターンを概念的に示すグラフである。図２、３、４の縦軸はいずれも度数である。図２、３、４の横軸はいずれも測定値である。度数分布グラフは測定値毎に度数を示す棒グラフとなるが、測定値を補間して連続値とした場合の線グラフとしている。以下の説明において、ピークとは度数が１以上の連続した区間を言う。図２は測定結果が有意な場合のパターンである。図２Ａは度数がピークとなる点がＰ１の１点のみであり、理想的な測定結果である。図２Ｂは度数がピークとなる点がＰ１、Ｐ２の２点である。図２ＢのＰ２は測定時にパトロール処理が実行され、悪い測定値が出た場合であると考えられる。パトロール処理とは、例えば各ＩＯ（ディスク、ＬＡＮ）に異常が発生していないかを、定期的にアクセスを発生させることで監視する処理を示す。図２Ｃは度数がピークとなる点がＰ１、Ｐ２、Ｐ３、Ｐ４の４点である。Ｐ２、Ｐ３はメモリキャッシュやディスクキャッシュのヒット等により、良い測定値が出た場合と考えられる。Ｐ４は図２Ｂ同様に、パトロール処理により悪い測定値が出た場合と考えられる。図２Ｂの場合、Ｐ２近傍の測定値を取り除き、図２Ｃの場合、Ｐ２及びＰ３近傍の測定値を取り除き、Ｐ１近傍の測定値のみを用いることで、有意な測定結果を得られる。
このように、どのパターンにおいても、１回の測定における各測定値の分布は最も多くの測定値が“ある値”（以下、「特定値」と記す。）の前後に集中する。
【００１２】
図３、４は測定結果が有意でない場合のパターンである。図３Ａではピークは１つであるが、ピークが始まる測定値とピークが終わる測定値との値の絶対値が大きくなっている。このような場合は有意な値が定まらないので、全体としても有意な測定ではない。図３ＢはピークＰ１、Ｐ２、Ｐ３の三点である。Ｐ２が最も度数が大きいが、他のＰ１、Ｐ３もＰ２と同様な度数となっていることから、いずれが真のピークの点であるのか判別不可能である。よって、有意な計測結果とは認められない。図３Ｃは度数がピークとなる点が、Ｐ１からＰ５の５点あり、どの点が真の測定値を示しているのか、判別することは不可能である。図４は度数がピークとなる点が、Ｐ１からＰ６の６点あり、どの点が真の測定値を示しているのか、判別することは不可能である。
図２から４に示したように、ここで測定が有意な場合とは全ての測定値が４個程度のいずれかの特定値付近に集中していることであり、測定結果として信頼性があることを言う。有意な値とは、もっとも度数が大きいピークに含まれる測定値のことであり、測定項目に対する測定結果として、確からしいと判定される値である。
【００１３】
図５は閾値設定テーブルｔ１のレコードレイアウトの一例を示す説明図である。閾値設定テーブルｔ１はパラメータ欄、値欄を含む。閾値設定テーブルｔ１はパラメータに対応付けて閾値が記憶されている。図６、図７及び図８は測定値の分布パターンを判別する処理についてのフローチャートである。
【００１４】
性能測定装置のＣＰＵ１は評価する測定値をＲＡＭ２に確保した配列Ｐ（ｊ）  ｊ＝１，２，３，…，ＣＯＵＮＴに設定する（ステップＳ１）。ＣＯＵＮＴは測定値の数であり、処理を開始する前に設定されているものとする。測定値はユーザが直接、操作部５を用いて入力しても良いし、ネットワークＮと接続された他のコンピュータからネットワークＮを介して通信部６より読み込むこととしても良い。ＣＰＵ１はすべての測定値の中から最小値Ｍｉｎ（Ｐ（ｊ））、最大値Ｍａｘ（Ｐ（ｊ））を求め、最小値をＳ、最大値をＬに設定する（ステップＳ２）。ＣＰＵ１は最小値Ｓ、最大値Ｌより全評価区間の下端ＬＯＷ＿Ｌｉｍ、上端ＵＰ＿Ｌｉｍを、以下の式により求める（ステップＳ３）。
ＬＯＷ＿Ｌｉｍ  ＝  Ｓ／（１＋ｃ）
ＵＰ＿Ｌｉｍ  ＝  Ｌ／（１−ｃ）
ここで、ｃは度数を求める値に幅を持たせるため係数（区間係数）であり、閾値設定テーブルｔ１に予め設定されている値を用いる。また、ＬＯＷ＿Ｌｉｍは小数点以下を切り捨て、ＵＰ＿Ｌｉｍは小数点以下を切り上げて、整数値とする。
【００１５】
ＣＰＵ１は区間代表値の最小値ＬＯＷ、最大値ＵＰを、以下の式により求める（ステップＳ４）。
ＬＯＷ  ＝  ＬＯＷ＿Ｌｉｍ−１
ＵＰ  ＝  ＵＰ＿Ｌｉｍ＋１
Ｓ／（１＋ｃ）、Ｌ／（１−ｃ）が整数値の場合、それぞれ上端がＳ、下端がＬになるため、ＬＯＷ＿Ｌｉｍ、ＵＰ＿Ｌｉｍから所定の値、ここでは１ずらした値をＬＯＷ、ＵＰとしている。
ここで区間代表値は測定値の度数を求める区間ごとの代表値であり、区間のほぼ中央の値である。
【００１６】
ＣＰＵ１は度数を求める最初の区間の下端ＳＥＣＬＯＷ（１）、ＳＥＣＵＰ（１）の値を以下の式により求める（ステップＳ５）。
ＳＥＣＬＯＷ（１）  ＝  ＬＯＷ＊（１−ｃ）
ＳＥＣＵＰ（１）  ＝  ＬＯＷ＊（１＋ｃ）
ＳＥＣＬＯＷ（）、ＳＥＣＵＰ（）は配列であり、ＲＡＭ２等に予め記憶領域が確保されているものとする。
【００１７】
ＣＰＵ１はループ変数ｉに１を設定する（ステップＳ６）。
【００１８】
ＣＰＵ１は以下を満たすＰ（ｊ）［ｊ＝１，…ＣＯＵＮＴ］の数をカウントし、その結果を度数ＫＯＳＵ（ｉ）に設定する（ステップＳ７）。度数ＫＯＳＵ（ｉ）は配列であり、ＲＡＭ２等に予め記憶領域が確保されているものとする。
ＳＥＣＬＯＷ（ｉ）  ≦  Ｐ（ｊ）  ＜  ＳＥＣＵＰ（ｉ）
【００１９】
ＣＰＵ１はループ変数ｉを１増加させる（ステップＳ８）。
【００２０】
ＣＰＵ１は次に度数を求める区間の下端ＳＥＣＬＯＷ（ｉ）、ＳＥＣＵＰ（ｉ）の値を以下の式により求める（ステップＳ９）。
ＳＥＣＬＯＷ（ｉ）  ＝  （ＬＯＷ＋ｉ−１）＊（１−ｃ）
ＳＥＣＵＰ（ｉ）  ＝  （ＬＯＷ＋ｉ−１）＊（１＋ｃ）
【００２１】
ＣＰＵ１は度数を求める区間の下端が、全区間の上端を超えていないかを判定する（ステップＳ１０）。超えていない場合（ステップＳ１０でＮＯ）、ＣＰＵ１は処理をステップＳ７に戻す。超えている場合（ステップＳ１０でＹＥＳ）、ＣＰＵ１は処理をステップＳ１１に移す。度数を求める区間の下端が全区間の上端を超えている場合は、全ての区間について、度数を求めたということである。以上の処理により測定値が区間（分級区間）に分級されたこととなる。
【００２２】
以下の処理で、度数のピークを調べる。ピークとは度数が１以上の区間である。連続する複数区間の度数が１以上となる場合は度数が１以上となる一群の区間を１つのピーク（評価区間）とする。処理対象とする区間の度数ＫＯＳＵ（ｊ）と１つ前の区間の度数ＫＯＳＵ（ｊ−１）との値により、ピークであるか否かの判定が可能である。
【００２３】
ＣＰＵ１はループ変数ｉを０に初期化する（ステップＳ１１）。ＣＰＵ１はループ変数ｊを２に初期化する（ステップＳ１２）。ループ変数ｉはピークに関する値で、ピーク上端、下端を格納する配列のインデクスとして用いられるとともに、ピークの数を表す。ループ変数ｊは度数ＫＯＳＵ（）のインデクスとして用いられ、処理対象区間を表す。
【００２４】
ＣＰＵ１は１つ前の区間の度数ＫＯＳＵ（ｊ−１）が０であるかを判定する（ステップＳ１３）。度数ＫＯＳＵ（ｊ−１）が０でない場合（ステップＳ１３でＮＯ）、ＣＰＵ１は処理対象区間の度数ＫＯＳＵ（ｊ）が０であるかを判定する（ステップＳ１４）。度数ＫＯＳＵ（ｊ）が０でない場合（ステップＳ１４でＮＯ）、ピークの途中であるので、ＣＰＵ１は次の区間を処理対象とするため処理をステップＳ１９に移す。
【００２５】
度数ＫＯＳＵ（ｊ）が０である場合（ステップＳ１４でＹＥＳ）、ピークの最後が検出されたので、ＣＰＵ１はピークの上端ＰＥＡＫＵＰ（ｉ）を以下の式で設定する（ステップＳ１５）。
ＰＥＡＫＵＰ（ｉ）  ＝  ＬＯＷ＋ｊ−２
ＣＰＵ１は処理をＳ１９に移す。
【００２６】
度数ＫＯＳＵ（ｊ−１）が０である場合（ステップＳ１３でＹＥＳ）、ＣＰＵ１は度数ＫＯＳＵ（ｊ）が０であるかを判定する（ステップＳ１６）。度数ＫＯＳＵ（ｊ）が０でない場合（ステップＳ１６でＮＯ）、ピークの始まりが検出されたので、ＣＰＵ１はピークの下端ＰＥＡＫＬＯＷ（ｉ＋１）を以下の式で設定する（ステップＳ１７）。
ＰＥＡＫＬＯＷ（ｉ＋１）  ＝  ＬＯＷ＋ｊ−１
ＣＰＵ１はループ変数ｉを１増加させる（ステップＳ１８）。ＣＰＵ１は処理をステップＳ１９に移す。
【００２７】
度数ＫＯＳＵ（ｊ）が０である場合（ステップＳ１６でＹＥＳ）、ピークではないので、ＣＰＵ１は処理をステップＳ１９に移す。
【００２８】
ＣＰＵ１は次の区間の度数を処理対象とするため、ループ変数ｊを１増加させる（ステップＳ１９）。ＣＰＵ１はループ変数ｊがＵＰより大きいか否かを判定する（ステップＳ２０）。ｊがＵＰより大きくない、すなわち、ＵＰ以下の場合（ステップＳ２０でＮＯ）、ＣＰＵ１は処理をステップＳ１３に戻す。ｊがＵＰより大きい場合（ステップＳ２０でＹＥＳ）は区間の上端まで度数を調べたことを示しているので、ＣＰＵ１はステップＳ２１以降の処理にて、分布パターンを調べる。ＣＰＵ１は変数Ｎに変数ｉの値を設定する（ステップＳ２１）。変数Ｎはピークの個数を表している。ＣＰＵ１はループ変数ｉに１を設定する（ステップＳ２２）。
【００２９】
ＣＰＵ１は各ピーク区間に入る測定値の個数を求める。すなわち、値がＰＥＡＫＬＯＷ（ｉ）以上で、ＰＥＡＫＵＰ（ｉ）未満であるＰ（ｊ）の個数をカウントし、ＰＥＡＫＳＵＭ（ｉ）に設定する（ステップＳ２３）。ＣＰＵ１はループ変数ｉの値を１増加させる（ステップＳ２４）。ＣＰＵ１はループ変数ｉの値が変数Ｎの値より大きいか否かを判定する（ステップＳ２５）。ループ変数ｉの値が変数Ｎの値より大きくない場合（ステップＳ２５でＮＯ）、ＣＰＵ１は処理をステップＳ２３に戻す。ループ変数ｉの値がＮの値より大きい場合（ステップＳ２５でＹＥＳ）、すべてのピーク区間について、測定値の個数が求まったので、ＣＰＵ１は測定値の分布を調べる。
なお、ピーク区間の度数を求める場合（ステップＳ１３からＳ２０）と、測定値の全体の分布（ステップＳ７からＳ１０）とでは、区間の上限値、下限値の計算方法が異なっているが、いずれか一方に合わせても良い。
【００３０】
図８に移り、ＣＰＵ１は変数Ｎが１でないか否かを判定する（ステップＳ２６）。変数Ｎが１でない場合（ステップＳ２６でＹＥＳ）、ＣＰＵ１はＰＥＡＫＳＵＭ（ｉ）が最大となるｉを求め、そのｉの値をＩ１に設定する（ステップＳ２７）。Ｉ１で表されるピーク区間をピーク１と記す。同様に、ＣＰＵ１はＰＥＡＫＳＵＭ（ｉ）の値が２番目、３番目に大きい値となるｉを求め、Ｉ２、Ｉ３にそれぞれそのｉの値を設定する（ステップＳ２８）。Ｉ２、Ｉ３で表されるピーク区間をそれぞれピーク２、ピーク３と記す。
【００３１】
なお、度数ＫＯＳＵ（ｉ）が最大となるｉが複数ある場合は区間番号が小さい順にＩ１、Ｉ２、Ｉ３とする。また、Ｎ＝２の場合はＩ３＝０とし、以下に示すＲＡＴ１（Ｉ３）、ＲＡＴ２（Ｉ３）はそれぞれ、ＲＡＴ１（Ｉ３）＝０、ＲＡＴ２（Ｉ３）＝０とする。
【００３２】
ＣＰＵ１は各ピークに入る測定値が測定値全体に占める割合を、以下の式により求める（ステップＳ２９）。
ＲＡＴ１（Ｉ１）  ＝  ＰＥＡＫＳＵＭ（Ｉ１）／ＣＯＵＮＴ
ＲＡＴ１（Ｉ２）  ＝  ＰＥＡＫＳＵＭ（Ｉ２）／ＣＯＵＮＴ
ＲＡＴ１（Ｉ３）  ＝  ＰＥＡＫＳＵＭ（１３）／ＣＯＵＮＴ
【００３３】
ＣＰＵ１はピーク１に含まれる測定値を除いた測定値全体の中で、ピーク２、ピーク３の測定値が占める割合を、以下の式により求める（ステップＳ３０）。
ＲＡＴ２（Ｉ２）  ＝  ＰＥＡＫＳＵＭ（Ｉ２）／（ＣＯＵＮＴ−ＰＥＡＫＳＵＭ（Ｉ１））
ＲＡＴ２（Ｉ３）  ＝  ＰＥＡＫＳＵＭ（Ｉ３）／（ＣＯＵＮＴ−ＰＥＡＫＳＵＭ（Ｉ１））
【００３４】
ＣＰＵ１はＲＡＴ１（Ｉ１）が０．５より大きいか否かを判定する（ステップＳ３１）。すなわち、ピーク１に含まれる測定値が全体の５０％以上を占めるか否かを判定する。ＲＡＴ１（Ｉ１）が０．５以下である場合（ステップＳ３１でＮＯ）、ＣＰＵ１は測定項目が有意でない旨の表示を表示部（図示しない）に行い（ステップＳ４４）、処理を終了する。ここで、測定値のバラツキが大きく、測定結果は信頼性に乏しいということを、測定項目が有意でないという。ステップＳ３１でＮＯとなる場合の分布の例は図３Ｂである。
【００３５】
ＲＡＴ１（Ｉ１）が０．５より大きい場合（ステップＳ３１でＹＥＳ）、ＣＰＵ１はピーク１、ピーク２、ピーク３それぞれに含まれる測定値が全体に占める割合の合計ＲＡＴ１（Ｉ１）＋ＲＡＴ１（Ｉ２）＋ＲＡＴ１（Ｉ３）が０．９より大きいか否かを判定する（ステップＳ３２）。すなわち、ピーク１、ピーク２、ピーク３のいずれかに含まれる測定値の数が、測定値全体の９０％より大きい割合を占めるかを判定する。
【００３６】
ピーク１、ピーク２、ピーク３のいずれかに含まれる測定値の数が、測定値全体の９０％より大きい割合を占めていない場合（ステップＳ３２でＮＯ）、ＣＰＵ１は測定項目が有意でない旨の表示を表示部（図示しない）に行い（ステップＳ４４）、処理を終了する。ステップＳ３２でＮＯとなる場合の分布の例は図３Ｃである。ピーク１、ピーク２、ピーク３のいずれかに含まれる測定値の数が、測定値全体の９０％より大きい割合を占めている場合（ステップＳ３２でＹＥＳ）、ＣＰＵ１はピーク１に含まれる測定値の平均値を求める。すなわち、ＰＥＡＫＬＯＷ（Ｉ１）≦Ｐ（ｊ）＜ＰＥＡＫＵＰ（Ｉ１）を満たすＰ（ｊ）を抽出し、それらの平均値ＡＶＥＲを求める（ステップＳ３３）。
【００３７】
ＣＰＵ１はピーク１に含まれる測定値の全体に占める割合ＲＡＴ１（Ｉ１）が０．９すなわち９０％（閾値）より大きいか判定する（ステップＳ３４）。９０％より大きい場合（ステップＳ３４でＹＥＳ）、ＣＰＵ１は特定値の個数に１を設定し、特定値に平均値ＡＶＥＲを設定する（ステップＳ３５）。ＣＰＵ１は検出されたパターンとしてパターン３を設定し、測定結果として平均値ＡＶＥＲを設定し（ステップＳ３６）、処理を終了する。パターン３の分布の例は図２Ｂである。
【００３８】
ＲＡＴ１（Ｉ１）が０．９以下である場合（ステップＳ３４でＮＯ）、ＣＰＵ１はピーク２とピーク３とに含まれる測定値が、ピーク１の測定値を除いた残りの測定値の中で占める割合ＲＡＴ２（Ｉ２）＋ＲＡＴ２（Ｉ３）が０．９（閾値）より大きいか判定する（ステップＳ３７）。０．９より大きい場合（ステップＳ３７でＹＥＳ）、ＣＰＵ１は特定値の個数にＮを設定し、特定値に平均値ＡＶＥＲを設定する（ステップＳ３８）。ＣＰＵ１は検出されたパターンとしてパターン２を設定し、測定結果として平均値ＡＶＥＲを設定し（ステップＳ３９）、処理を終了する。パターン２の分布の例は図２Ｃである。
【００３９】
ＲＡＴ２（Ｉ２）＋ＲＡＴ２（Ｉ３）が０．９以下の場合（ステップＳ３７でＮＯ）、ＣＰＵ１は測定項目が有意でない旨の表示を表示部（図示しない）に行い（ステップＳ４４）、処理を終了する。ステップＳ３７でＮＯとなる場合の分布の例は図４である。
【００４０】
ピークの数が１つの場合（ステップＳ２６でＮＯ）、ＣＰＵ１は測定値Ｐ（ｊ）の平均値と、標準偏差を求める（ステップＳ４０）。ＣＰＵ１は標準偏差を平均値で除した値が、予め設定した値ｄより小さいか否か判定する（ステップＳ４１）。ここで、ｄは測定値が１つの値付近に集中しているか否かを判定するための閾値であり、閾値設定テーブルｔ１に予め設定されている値を用いる。
【００４１】
標準偏差を平均値で除した値がｄより小さい場合（ステップＳ４１でＹＥＳ）、ＣＰＵ１は特定値の個数に１を設定し、特定値に平均値ＡＶＥＲを設定する（ステップＳ４２）。ＣＰＵ１は検出されたパターンとしてパターン１を設定し、測定結果として平均値ＡＶＥＲを設定し（ステップＳ４３）、処理を終了する。パターン１の分布の例は図２Ａである。標準偏差を平均値で除した値がｄ以上である場合（ステップＳ４１でＮＯ）、ＣＰＵ１は測定項目が有意でない旨の表示を表示部（図示しない）に行い（ステップＳ４４）、処理を終了する。ステップＳ４１でＮＯとなる場合の分布の例は図３Ａである。
【００４２】
次に、上述した処理について、サンプルデータを用いて、図６〜８を参照しつつ、その処理を説明する。
【００４３】
サンプルデータ１の処理
図９は測定値の一例を示すテーブルである。これらのデータはＲＡＭ２またはデータベース４に記憶されている、または通信部６を介して、他のコンピュータから読み込み可能であるとする。図９に示すデータは６０個の測定値からなるから、ＣＯＵＮＴ＝６０である。
【００４４】
ＣＰＵ１はＲＡＭ２の配列Ｐ（ｊ）  ｊ＝１，２，…６０の領域を確保し、図９に示すデータを配列Ｐ（ｊ）に設定する（図６ステップＳ１）。次に、ＣＰＵ１は測定値の最小値４３を変数Ｓに、最大値５０３を変数Ｌに設定する（ステップＳ２）。ＣＰＵ１はＬＯＷ＿Ｌｉｍ、ＵＰ＿Ｌｉｍを設定する（ステップＳ３）。なお、ここで区間係数ｃは０．０５とする。
ＬＯＷ＿Ｌｉｍ  ＝  ４３／（１＋０．０５）  ＝  ４０（整数値に切り捨て）
ＵＰ＿Ｌｉｍ  ＝  ５０３／（１−０．０５）  ＝  ５３０（整数値に切り上げ）
となる。
【００４５】
ＣＰＵ１は評価区間の下端ＬＯＷ、上端ＵＰを求める（ステップＳ４）。
ＬＯＷ  ＝  ＬＯＷ＿Ｌｉｍ−１  ＝  ４０−１  ＝  ３９
ＵＰ  ＝  ＵＰ＿Ｌｉｍ＋１  ＝  ５３０＋１  ＝  ５３１
となる。
【００４６】
ＣＰＵ１は最初の評価区間の下端ＳＥＣＬＯＷ（１）、上端ＳＥＣＵＰ（１）を求める（ステップＳ５）。以下、各評価区間を区間と数字で表す。ＬＯＷ、ＵＰの値と、その間の数字を用い、最初の評価区間を区間３９、その次の評価区間を区間４０、その次を区間４１と表す。最後の評価区間は区間５３１となる。
ＳＥＣＬＯＷ（１）  ＝  ＬＯＷ＊（１−ｃ）  ＝  ３９＊（１−０．０５）  ＝  ３７．０５
ＳＥＣＵＰ（１）  ＝  ＬＯＷ＊（１＋ｃ）  ＝  ３９＊（１＋０．０５）  ＝  ４０．９５
【００４７】
ＣＰＵ１は変数ｉに１を設定する（ステップＳ６）。ＣＰＵ１は区間３９に含まれるＰ（ｊ）をカウントし、度数ＫＯＳＵ（ｉ）に設定する（ステップＳ７）。
ＫＯＳＵ（１）  ＝  ０
である。ＣＰＵ１は変数ｉを１増加させる（ステップＳ８）。ＣＰＵ１は次の評価区間（区間４０）の下端ＳＥＣＬＯＷ（２）、ＳＥＣＵＰ（２）を求める（ステップＳ９）。
ＳＥＣＬＯＷ（２）  ＝  （３９＋２−１）＊（１−０．０５）  ＝  ３８
ＳＥＣＵＰ（２）  ＝  （３９＋２−１）＊（１＋０．０５）  ＝  ４２
である。
【００４８】
ＣＰＵ１はループの終了条件、（ＬＯＷ＋ｉ−１）がＵＰより大きいか判定する（ステップＳ１０）。ＬＯＷ＋ｉ−１  ＝  ４０、ＬＯＷ  ＝  ５３１であるので、判定はＮＯである。ＣＰＵ１は処理をステップＳ７に戻す。ＣＰＵ１は区間４０に含まれるＰ（ｊ）をカウントし、度数ＫＯＳＵ（ｉ）に設定する（ステップＳ７）。
ＫＯＳＵ（２）  ＝  ０
である。同様な処理を区間５３１（ｉ＝４９１）についてまで、ＣＰＵ１は行う。
【００４９】
図１０は評価区間毎の下端、上端、度数（ＫＯＳＵ）を示す表の抜粋である。図１１は評価区間と度数との関係を示す棒グラフである。横軸が区間番号、縦軸が度数ＫＯＳＵ（ｉ）である。
【００５０】
次に、ＣＰＵ１はピークの検出を行う。初期設定として、ＣＰＵ１は変数ｉに０を設定する（ステップＳ１１）。ＣＰＵ１は変数ｊに２を設定する（ステップＳ１２）。ＣＰＵ１は最初の区間（区間３９）の度数ＫＯＳＵ（ｊ−１＝１）が０であるか否かを判定する（図７ステップＳ１３）。区間３９の度数は図１０に示すように０であるので、ＹＥＳとＣＰＵ１は判定する。ＣＰＵ１は度数ＫＯＳＵ（ｊ＝２）が０であるか否かを判定する（ステップＳ１６）。度数ＫＯＳＵ（２）も０であるので、ＹＥＳとＣＰＵ１は判定する。ＣＰＵ１は変数ｊを１増加させる（ステップＳ１９）。ＣＰＵ１はループの終了条件、ｊがＵＰより大きいかを判定する（ステップＳ２０）。ｊ＝３、ＵＰ＝５３１であるので、ＣＰＵ１はＮＯと判定し、処理をステップＳ１３に戻す。
【００５１】
ＣＰＵ１は区間４０の度数ＫＯＳＵ（２）が０であるか否か判定する（ステップＳ１３）。区間４０の度数であるから、ＹＥＳとＣＰＵ１は判定する。ＣＰＵ１は区間４１の度数ＫＯＳＵ（３）が０であるか否かを判定する（ステップＳ１６）。度数は１であるから、ＣＰＵ１はＮＯと判定する。ＣＰＵ１はＰＥＡＫＬＯＷ（ｉ＋１＝１）を設定する（ステップＳ１７）。
ＰＥＡＫＬＯＷ（１）  ＝  ＬＯＷ＋ｊ−１  ＝  ３９＋３−１  ＝  ４１
である。すなわち、最初のピークは区間４１から始まることを示す。
【００５２】
ＣＰＵ１はｉを１増加させる（ステップＳ１８）。ｉ＝１となる。ＣＰＵ１はｊを１増加させる（ステップＳ１９）。ｊ＝４となる。区間４１の度数ＫＯＳＵ（ｊ−１＝３）、区間４２の度数ＫＯＳＵ（ｊ＝４）は共に、０ではないから、ＣＰＵ１はステップＳ１３、ステップＳ１４において、共にＮＯと判定する。ＣＰＵ１はステップＳ１９を実行し、処理をステップＳ１３に戻す。同様な処理が繰り返される。
【００５３】
区間５３の度数＝１、区間５４の度数＝０であるので、ｊ＝１６となったとき、ＫＯＳＵ（ｊ−１＝１５）＝１、ＫＯＳＵ（ｊ＝１６）＝０となる。ステップＳ１３はＮＯ、ステップＳ１４はＹＥＳと、ＣＰＵ１は判定する。ＣＰＵ１はＰＥＡＫＵＰ（ｉ＝１）を設定する（ステップＳ１５）。
ＰＥＡＫＵＰ（ｉ）  ＝  ＬＯＷ＋ｊ−２  ＝  ３９＋１６−２  ＝  ５３
である。
【００５４】
以下、同様な処理が繰り返され、ピークの検出が行なわれる。図１２はピーク検出結果を示す表である。ピークは２つであり、区間４１から始まり区間５３で終わるピークと、区間４７８から始まり区間５２９で終わるピークである。ＰＥＡＫＳＵＭ（１）は値が４１以上、５３未満の測定値の数であるから５５、ＰＥＡＫＳＵＭ（２）は値が４７８以上５２９未満の測定値の数であるから５である。
【００５５】
次に、ＣＰＵ１は分布パターンの検出を行う。ＣＰＵ１はピークの数Ｎが１であるか否かを判定する（図８ステップＳ２６）。ここではＮ＝２であるから、ステップＳ２６においてＣＰＵ１はＹＥＳと判定する。ＣＰＵ１はＰＥＡＫＳＵＭ（ｉ）が最大となるｉを求めＩ１とする（ステップＳ２７）。ここではＩ１＝１となる。ＣＰＵ１はＰＥＡＫＳＵＭ（ｉ）の値が２番目、３番目の値となるｉを求め、それぞれＩ２、Ｉ３とする（ステップＳ２８）。ここではＩ２＝２である。３番目となる値はないので、Ｉ３＝０とする。Ｉ１に対応した区間がピーク１、Ｉ２に対応した区間がピーク２である。
【００５６】
ＣＰＵ１は各ピークに入る測定値の数が、全体の測定値数に占める割合を求める（ステップＳ２９）。ここでは
ＲＡＴ１（Ｉ１）  ＝  ＰＥＡＫＳＵＭ（Ｉ１）／ＣＯＵＮＴ  ＝  ５５／６０  ＝  ０．９２
ＲＡＴ１（Ｉ２）  ＝  ＰＥＡＫＳＵＭ（Ｉ２）／ＣＯＵＮＴ  ＝  ５／６０  ＝  ０．０８
ＲＡＴ１（Ｉ３）  ＝  ０
である。
【００５７】
ＣＰＵ１はピーク１に含まれる測定値を除いた測定値全体の中で、ピーク２、ピーク３の測定値が占める割合を、求める（ステップＳ３０）。ここでは
ＲＡＴ２（Ｉ２）  ＝  ＰＥＡＫＳＵＭ（Ｉ２）／（ＣＯＵＮＴ−ＰＥＡＫＳＵＭ（Ｉ１））  ＝  ５／（６０−５５）  ＝  １
ＲＡＴ３（Ｉ３）  ＝  ０
である。
【００５８】
ＣＰＵ１はピーク１に含まれる測定値の数が全測定値数に占める割合ＲＡＴ１（Ｉ１）が０．５より大きいか判定する（ステップＳ３１）。ここではＲＡＴ１（Ｉ１）＝０．９２であるので、ＣＵＰ１はＹＥＳと判定する。ＣＰＵ１はピーク１、ピーク２、ピーク３のそれぞれに含まれる測定値の数が全測定値数に占める割合ＲＡＴ１（Ｉ１）、ＲＡＴ１（Ｉ２）、ＲＡＴ１（Ｉ３）の合計が、０．９より大きいか判定する（ステップＳ３２）。ここではＲＡＴ１（Ｉ３）＝０であり、ＲＡＴ１（Ｉ１）＝０．９２、ＲＡＴ１（Ｉ２）＝０．０８であるので、合計は１である。ＣＰＵ１はＹＥＳと判定する。
【００５９】
ＣＰＵ１はピーク１に含まれる測定値の平均値を求め、その値を平均値ＡＶＥＲに設定する（ステップＳ３３）。ここでは５５個の測定値が該当し、その値の合計は２５５３であるので、
ＡＶＥＲ  ＝  ２５５３／５５  ＝  ４６．４である。
【００６０】
ＣＰＵ１はピーク１に含まれる測定値の数が全測定値数に占める割合ＲＡＴ１（Ｉ１）が０．９より大きいか判定する（ステップＳ３４）。ここで、ＲＡＴ１（Ｉ１）＝０．９２であるので、ＣＰＵ１はＹＥＳと判定する。ＣＰＵ１は特定値の個数に１を設定し、特定値に平均値ＡＶＥＲを設定する（ステップＳ３５）。ＣＰＵ１は分布パターンが３であること、測定結果は４６．４である旨を出力し（ステップＳ３６）、終了する。
【００６１】
サンプルデータ２の処理
図１３は測定値の一例を示すテーブルである。測定値数ＣＯＵＮＴ＝９０である。図１４は評価区間と度数との関係を示す棒グラフである。横軸が区間番号、縦軸が度数ＫＯＳＵ（ｉ）である。図１４は、図１３の測定値を図６に示すフローチャートに従いＣＰＵ１が処理を行った場合の途中経過を表したものである。ステップＳ１０でＮＯと判定された時点で得られるものである。なお、区間係数ｃ＝０．０５である。
【００６２】
図１５はピーク検出結果を示す表である。図７に示すフローチャートのステップＳ２１からステップＳ２５までの処理をＣＰＵ１が行い、ステップＳ２５でＹＥＳと判定された時点で得られるものである。図１５に示すように、ピークは４つあり、測定値の数ＰＥＡＫＳＵＭ（ｉ）の上位３つは５４、２３、１０であるから、
ＰＥＡＫＳＵＭ（Ｉ１＝３）＝５４、
ＰＥＡＫＳＵＭ（Ｉ２＝１）＝２３、
ＰＥＡＫＳＵＭ（Ｉ３＝３）＝１０
となる。
【００６３】
図８のステップＳ２９に示す処理により、ＲＡＴ１（Ｉ１）、ＲＡＴ１（Ｉ２）、ＲＡＴ１（Ｉ３）を求めると、以下のようになる。
ＲＡＴ１（Ｉ１）  ＝  ５４／９０  ＝  ０．６
ＲＡＴ１（Ｉ２）  ＝  ２３／９０  ＝  ０．２６
ＲＡＴ１（Ｉ３）  ＝  １０／９０  ＝  ０．１１
【００６４】
図８のステップＳ３０に示す処理により、ＲＡＴ２（Ｉ２）、ＲＡＴ２（Ｉ３）を求めると、以下のようになる。
ＲＡＴ２（Ｉ２）  ＝  ２３／（９０−５４）  ＝  ０．６４
ＲＡＴ２（Ｉ３）  ＝  １０／（９０−５４）  ＝  ０．２８
【００６５】
上記の結果より、ＣＰＵ１は図８のステップＳ３１でＹＥＳ、ステップＳ３２でＹＥＳと、判定する。ステップＳ３３で計算する平均値ＡＶＥＲは１６２である。
【００６６】
ＣＰＵ１はステップＳ３４でＮＯ、ステップＳ３７でＹＥＳと判定し、ステップＳ３８、Ｓ３９を実行する。特定値の個数＝４、特定値＝ＡＶＥＲ＝１６２、パターン＝パターン２、測定結果＝１６２となる。
【００６７】
サンプルデータ３の処理
図１６は測定値の一例を示すテーブルである。図１７は評価区間と度数との関係を示す棒グラフである。横軸が区間番号、縦軸が度数ＫＯＳＵ（ｉ）である。区間係数ｃ＝０．０５として区間の下端、上端を定め、度数ＫＯＳＵ（ｉ）を求めている。図１７に示すように、ピークは１つである。従って、図８のステップＳ２６において、ＣＰＵ１はＮＯと判定する。ＣＰＵ１は測定値Ｐ（ｊ）の平均値ＡＶＥＲと標準偏差を求める（図８ステップＳ４０）。ＣＰＵ１は標準偏差／平均値が閾値ｄより小さいかを判定する（ステップＳ４１）。図１８は測定値Ｐ（ｊ）の平均値、標準偏差、標準偏差／平均値を示す表である。閾値ｄは、図５に示す閾値設定テーブルｔ１に設定してあり、その値は０．０５である。ここでは標準偏差／平均値＝０．０４であるから、ステップＳ４１においてＣＰＵ１はＹＥＳと判定する。
【００６８】
ＣＰＵ１は特定値の個数を１、特定値をＡＶＥＲ＝４７．１８と設定する（ステップＳ４２）。ＣＰＵ１はパターンとしてパターン１、測定結果をＡＶＥＲ＝４７．１８と設定する（ステップＳ４３）、ＣＰＵ１は処理を終了する。
【００６９】
サンプルデータ４の処理
図１９は測定値の一例を示すテーブルである。図２０は評価区間と度数との関係を示す棒グラフである。横軸が区間番号、縦軸が度数ＫＯＳＵ（ｉ）である。区間係数ｃ＝０．０５として区間の下端、上端を定め、度数ＫＯＳＵ（ｉ）を求めている。図２０に示すようにピークが６個となっている。図２１はピーク検出結果を示す表である。図２１に示す結果より、ＣＰＵ１は、Ｉ１＝１、Ｉ２＝２、Ｉ３＝３と定める（図８ステップＳ２７、Ｓ２８）。
【００７０】
図２２は分布パターンを判定するのに用いる変数の値を示す表である。ＲＡＴ１（Ｉ１）は０．５より大きいので、ＣＰＵ１はステップＳ３１でＹＥＳと判定する。ＲＡＴ１（Ｉ１）＋ＲＡＴ１（Ｉ２）＋ＲＡＴ１（Ｉ３）の値は、０．９より大きいので、ＣＰＵ１はステップＳ３２でＹＥＳと判定する。ＲＡＴ１（Ｉ１）は０．９より大きくないので、ＣＰＵ１はステップＳ３４でＮＯと判定する。ＲＡＴ２（Ｉ２）＋ＲＡＴ２（Ｉ３）は０．９より大きくないので、ＣＰＵ１はステップＳ３７でＮＯと判定する。したがって、設定項目は有意でないと判定される。
【００７１】
以上のように、実施の形態１では測定値より有意な値を抽出し、有意な値の平均値を求めることにより、有意な測定結果を得ることが可能となる。
【００７２】
実施の形態２
実施の形態２では１回の性能測定において、測定の必要最小回数を求める処理を行う。本実施の形態において、性能測定装置のハードウェア構成は上述の実施の形態１と同様であるので、省略する。
【００７３】
ソフトウェアの性能測定においては項目毎に最小回数は異なる。例えば、ＣＰＵを占有する処理は、測定値のばらつきはなく、ほぼ一定の値になるため少ない回数でよい。ディスクからデータを読み込む処理はヘッドのディスク上の位置の変化、管理ブロックにまたがる/またがらない等、条件により異なるため、多数の回数が必要である。現状、測定回数は評価者の経験によるところが大きい。そこで、実施の形態２では性能項目毎に試行を行うことで、その項目の特性を調べ、最小回数を求める。
【００７４】
ここで、性能測定は、以下のように行うものとする。１回当たりの性能測定は、「Ｍ回の評価」を行うものとする。各評価を行うには、「ｋ回の測定」を行うものとする。すなわち、１回の性能測定を行うためには、ｋ＊Ｍ回の測定を行い、ｋ＊Ｍ個の測定値を取得することとなる。最小回数を求めるとは、ｋの最小値を求めることである。具体的には、１回の評価あたりの測定回数（ｋ）を変化させ、各測定回数（ｋ）における評価を複数回（Ｍ回）実施する。複数回（Ｍ回）の評価結果が近い値になっていれば、その測定回数における性能測定は有意とみなす。こうして得た有意な「１回の評価当たりの測定回数」の最小値を、必要最小回数とする。例えば、「１回の評価当たりの測定回数」を、３２回、６４回、１２８回、２５６回、・・・のように変える。「１回の評価当たりの測定回数＝３２」の測定を５０回、同＝６４の測定を５０回、・・・のように、複数回実行する。１回目の平均値を“平均値(１)”、２回目を“平均値(２)”、として、平均値(１)・・・平均値(５０)の差を評価する。同じ条件における性能測定結果であるから、その結果に差が生じないはずである。差が小さい場合は、「１回の評価当たりの測定回数＝ｋ」の性能測定は有効とみなす。差が大きい場合は、「１回の評価当たりの測定回数＝ｋ」の性能測定は有効でないとみなす。もし、すべてのｋに対して有効でなければ、該当の性能測定項目は有効でなく、再作成が必要である。
【００７５】
図２３、２４は１回の評価当たりの必要最小測定回数を求める処理手順の一例を示すフローチャートである。図２５は閾値設定テーブルｔ２のレコードレイアウトの一例を示す説明図である。上述の実施の形態１の閾値設定テーブルｔ１と同様であるが、パラメータｒ、ｍｉｎが追加されている。パラメータｒは性能測定結果のばらつきを評価する際に用いるパラメータである。パラメータｍｉｎは１回の評価当たりの必要最小測定回数（以下、「最小測定回数」と記す）の最低値であり、求めた最小測定回数がｍｉｎ未満の場合は、最小測定回数はｍｉｎとする。
【００７６】
性能測定装置のＣＰＵ１は全測定回数Ｎ、試行測定回数Ｍ（請求項に記載の「Ｎ」に対応）の入力を受付ける（ステップＳ５０）。全測定回数Ｎは測定回数を表す。すなわち、Ｎ回測定を行い、Ｎ個の測定値が取得されているということである。Ｍは試行評価回数であり、１回当たりの性能測定において測定値の評価を行う回数（請求項に記載の「集合の要素数」に対応）である。例えば、１回につきｋ回の測定を行い、測定値の評価を行う。なお、評価を行うｋ回分の測定値の集合が請求項に記載の「測定値集合」に相当し、ｋの値が請求項に記載の「集合の要素の数」に相当する。それをＭ回行い、得た結果を最終的な性能測定結果とするということである。この場合、合計でｋ＊Ｍ個の測定値を取得することとなる。したがって、ＮはＭよりも充分大きな値である必要がある。なお、Ｎ、Ｍは２のべき乗であるとする。全測定回数Ｎ＝２＾Ｌ１、試行測定回数Ｍ＝２＾Ｌ２と表すことが可能である。Ｌ２＞Ｌ１である。ＣＰＵ１はＬ１、Ｌ２を入力として受付けることとしても良い。
【００７７】
図２３に示したように、ＣＰＵ１は分布パターンの判定を行う（ステップＳ５１）。処理の内容は上述の実施の形態１における処理と同様であるので、説明を省略する。なお、ここでの判定では、Ｎ個の測定値データすべてを用いて行う。最小測定回数を求める測定項目が有意な値を計測できる項目であるのか否かを判定するので、正確な判定結果を得るためになるべく多くの測定値を使うべきだからである。
【００７８】
ＣＰＵ１は測定項目が有意であるか否かを判定する（ステップＳ５２）。測定項目が有意でない場合（ステップＳ５２でＮＯ）、その旨を表示部（図示しない）に表示して（ステップＳ７０）、ＣＰＵ１は処理を終了する。
【００７９】
測定項目が有意である場合（ステップＳ５２でＹＥＳ）、ＣＰＵ１はループ変数ｉに１を設定する（ステップＳ５３）。ＣＰＵ１は１回の評価あたりの測定回数を示す変数ｋに２^ｉを設定する（ステップＳ５４）。ＣＰＵ１は変数ｘに０を設定する（ステップＳ５５）。ＣＰＵ１はｋ回分の測定値を配列Ｐ（ｊ）に設定する（ステップＳ５６）。ＣＰＵ１は分布パターンの判定を行う（ステップＳ５１）。処理の内容は上述のステップＳ５１と同様であるから、同じ符号としている。
【００８０】
ＣＰＵ１は分布パターン判定処理で得た平均値ＡＶＥＲを配列ＡＶＥＲ（ｘ＋１）に設定する（ステップＳ５７）。ＣＰＵ１は変数ｘの値を１増加させる（ステップＳ５８）。ＣＰＵ１は変数ｘの値が、Ｍ以上であるかを判定する（ステップＳ５９）。ｘの値がＭ以上でない場合（ステップＳ５９でＮＯ）、評価の回数がＭ回に達していないので、ＣＰＵ１は処理をステップＳ５６に戻す。ｘの値がＭ以上の場合（ステップＳ５９でＹＥＳ）、Ｍ回の評価を行ったことになるので、ＣＰＵ１はループ処理を抜けステップＳ６０に移す。
【００８１】
図２４に示したように、ＣＰＵ１はＭ回の評価で得たＭ個の評価結果、ここでは平均値ＡＶＥＲ（１）〜ＡＶＥＲ（Ｍ）のＭ個の値の平均値ＡＶＥＲＡＧＥ（ｋ）、標準偏差Ｈ（ｋ）を求める（ステップＳ６０）。ＣＰＵ１は平均値ＡＶＥＲ（１）〜ＡＶＥＲ（Ｍ）のばらつきの度合いが一定範囲内であるか判定する（ステップＳ６１）。具体的にはＨ（ｋ）／ＡＶＥＲＡＧＥ（ｋ）の値と、閾値ｒの大小関係を判定する。閾値ｒは上述したように閾値テーブルｔ２に設定されている値を用いる。Ｈ（ｋ）／ＡＶＥＲＡＧＥ（ｋ）の値が閾値ｒより小さい場合（ステップＳ６１でＹＥＳ）、ＣＰＵ１は平均値ＡＶＥＲ（１）〜ＡＶＥＲ（Ｍ）のＭ個の値はばらつきが小さいものと判定し、配列Ｓ（ｋ）に”有意”と設定する（ステップＳ６２）。Ｈ（ｋ）／ＡＶＥＲＡＧＥ（ｋ）の値が閾値ｒ以上の場合（ステップＳ６１でＮＯ）、ＣＰＵ１は平均値ＡＶＥＲ（１）〜ＡＶＥＲ（Ｍ）のＭ個の値はばらつきが大きいものと判定し、配列Ｓ（ｋ）に”有意でない”と設定する（ステップＳ６３）。
【００８２】
ＣＰＵ１はループ変数ｉの値を１増加させる（ステップＳ６４）。ＣＰＵ１はループ変数ｉが（Ｌ１−Ｌ２）以下であるか否かを判定する（ステップＳ６５）。ｉの値が（Ｌ１−Ｌ２）以下である場合（ステップＳ６５でＹＥＳ）、ｋの取りうる値すべてについての処理が終了していないので、ＣＰＵ１は処理をステップＳ５４（図２３）に戻す。ｉの値が（Ｌ１−Ｌ２）より大きい場合（ステップＳ６５でＮＯ）、ｋの取りうる値すべてについての処理が終了しているので、ＣＰＵ１は処理をステップＳ６６に進める。
【００８３】
ＣＰＵ１は配列Ｓ（ｋ）を検索し、Ｓ（ｋ）の値が”有意”であるｋの値を抽出し、その最小値をｋ＿ｍｉｎに設定する（ステップＳ６６）。ＣＰＵ１はｋ＿ｍｉｎの値が最小測定回数の最低値ｍｉｎの値より大きいか否かを判定する（ステップＳ６７）。ｋ＿ｍｉｎの値がｍｉｎの値より大きい場合（ステップＳ６７でＹＥＳ）、ＣＰＵ１は最小測定回数をｋ＿ｍｉｎとする（ステップＳ６８）。ｋ＿ｍｉｎの値が最小測定回数のｍｉｎの値以下である場合（ステップＳ６７でＮＯ）、ＣＰＵ１は最小測定回数をｍｉｎとする（ステップＳ６９）。ＣＰＵ１は処理を終了する。
【００８４】
以上のように、実施の形態２では実施の形態１における効果に加えて、最小測定回数を求めることが可能である。測定結果を得る際には、最小測定回数と等しい回数の測定を行えば良いので、最小限の労力で性能測定の測定結果を得ることが可能となる。
【００８５】
変形例
実施の形態２において、最小測定回数を求めるためにはユーザは全測定回数Ｎ、試行測定回数Ｍの入力を必要とした。変形例では、試行測定回数Ｍの値は計算により求めるので、ユーザによる入力は不要となる。図２６、２７は１回の評価当たりの必要最小測定回数を求める処理手順の一例を示すフローチャートである。処理内容は実施の形態２とほぼ同様であるので、異なる点を主に説明する。
【００８６】
性能測定装置のＣＰＵ１は全測定回数Ｎの入力を受付ける（ステップＳ５０’）。なお、Ｎは２のべき乗で、Ｎ＝２＾Ｌ１であるとする。
ステップＳ５４にてｋの値を設定後、Ｍ＝Ｎ／ｋとする（ステップＳ７１）。
ステップＳ５４からステップＳ６４のループ処理の終了条件はｉがＬ１−１より多くなった場合である（ステップＳ６５’）。
その他の処理については実施の形態１と同様であるので説明を省略する。
【００８７】
実施の形態３
実施の形態３では実施の形態２までの内容を踏まえ、運用システムにおいて性能測定を行う場合について説明する。
運用システムにおいては、業務へ与える影響を最小限にするために、深夜、早朝など業務時間帯ではない時間帯に性能測定を行う必要がある。しかしながら、それらの時間帯はＯＳパッチの適用、データのコールドバックアップなど他の作業も計画されている場合もある。そのため、１作業あたりの測定回数をさらに減らしたいという要望がある。それに対応するために、１作業あたりの測定回数を１／ｎとし、ｎ回分の作業で得た測定値をまとめて１回の性能測定結果とする。ｎをまとめ回数と呼ぶ。すなわち、実施の形態２で求めた必要最小測定回数の測定を１作業で行うのではなく、１作業では（必要最小測定回数）＊１／ｎ回の測定を行う。ｎ回分の作業で得た測定値をまとめて１回の性能測定結果とする。
【００８８】
図２８は１作業あたりの測定結果と１回の性能測定結果との関係を概念的に示す説明図である。ｎ回の測定作業を行うと１回分の性能測定結果が得られるので、初回の性能測定結果、初回（ｎ回分）は、ｎ回測定作業を行った時点で得られることとなる。それ以降は、用いる測定値をスライドすることで性能測定結果を得ることが可能となる。今回の性能測定結果は、ｎ−１回前から今回までのｎ回分の測定値から求まる。前回の性能測定結果との比較をする場合は、ｎ回前から１回前までのｎ回分の測定値から、前回の性能測定結果を求め、比較すれば良い。
【００８９】
１作業あたりの測定回数を１／ｎとして運用した場合、性能の劣化は緩やかに現れる点を考慮しておく必要がある。例えば、まとめ回数が５（ｎ＝５）で、４月１日に適用した障害修正で１０％劣化、５月１日に行ったパラメータ変更で５％劣化していたとする。４月１日の測定結果は２％（＝１０／５％）劣化となる。５回分の測定値のうち４回分（３月２８日〜３１日）の測定値は劣化が発生する前のデータだからである。同様に５月１日の測定結果は１％（＝５／５％）劣化となる。
【００９０】
次に性能測定を行う場合の作業手順について説明する。図２９は性能測定を行う場合の準備作業の手順を示したフローチャートである。性能測定装置のＣＰＵ１は試行測定回数Ｍ、必要最小測定回数を受付ける（ステップＳ８１）。ＣＰＵ１は性能測定に用いるコマンドを受付ける（ステップＳ８２）。コマンドは、例えば、ディスクのリード時間を計測するコマンド、ｐｉｎｇのような応答を受け取るネットワークコマンド、ソート処理を行うコマンド、データのバックアップ・リストアを行うコマンドなどである。
【００９１】
ＣＰＵ１は最小測定回数の算出を行う（ステップＳ８３）。上述の実施の形態２で示したとおりである。ステップＳ８２で指定されたコマンド毎に最小測定回数を算出する。また、測定項目として有意でないと判定されたコマンドは、処理対象のコマンドから除外する。ＣＰＵ１はコマンド、許容範囲（％）、実施回数、まとめ回数の指定を受付ける（ステップＳ８４）。許容範囲（％）は、性能劣化の判定に用いる閾値であり、今回の性能測定の結果が前回の性能測定の結果と比較して許容範囲よりも悪化している場合に、警告を発することとする。実施回数は１回の性能測定結果を得るために測定を行う回数であり、ステップＳ８３で算出した最小測定回数以上の値を設定する。まとめ回数は、上述したように１回の測定作業で行う測定回数である。ＣＰＵ１はコマンド、許容範囲、実施回数、まとめ回数を対応付けたものを、測定項目テーブルｔ３としてデータベース４に記憶する（ステップＳ８５）。
【００９２】
図３０は測定項目テーブルｔ３のレコードレイアウトの一例を示す説明図である。測定項目テーブルｔ３は、測定項目名欄、測定コマンド格納場所欄、許容範囲欄、実施回数欄、まとめ回数欄を含む。測定項目名欄は測定項目のＩＤを設定する。測定コマンド格納場所欄は、性能測定対象となるマシンにおける測定コマンドの絶対パスを格納する。許容範囲欄、実施回数欄、まとめ回数欄は上述したとおりである。
【００９３】
図３１は性能測定作業の処理手順を示すフローチャートである。ＣＰＵ１は測定項目の指定を受付ける（ステップＳ８６）。ＣＰＵ１は指定された測定項目について測定を行う（ステップＳ８７）。ＣＰＵ１は測定結果を前回の測定結果と比較し、劣化しているか否かを判定する（ステップＳ８８）。劣化している場合（ステップＳ８８でＹＥＳ）、ＣＰＵ１は劣化の範囲が許容範囲であるか否かを判定する（ステップＳ８９）。許容範囲内でない場合、すなわち許容範囲を超えている場合（ステップＳ８９でＮＯ）、ＣＰＵ１は警告を発する（ステップＳ９０）。警告方法は画面にメッセージを表示する、ビープ音を鳴らす、管理者の電子メールを送信するなどである。ＣＰＵ１は処理を終了する。劣化が生じていない場合（ステップＳ８８でＮＯ）、劣化が許容範囲内の場合（ステップＳ８９でＹＥＳ）、ＣＰＵ１は処理を終了する。
【００９４】
図３２は測定値の格納領域の一例を示す説明図である。項目名毎に、項目名と測定値が格納されている。図３３は測定結果テーブルｔ４のレコードレイアウトの一例を示す説明図である。測定結果テーブルｔ４は、測定項目名欄、初回からの通算回数欄、測定開始時刻欄、測定終了時刻欄、パターン欄、測定結果欄、判定（前回比較）欄、判定（初期値比較）欄を含む。測定項目名欄は測定項目のＩＤが記憶される。上述の測定項目テーブルｔ３の測定項目名に定義されている値である。初回からの通算回数欄は測定項目が定義された後に、性能測定が実行された通算回数が記憶される。測定開始時刻欄、測定終了時刻欄はそれぞれ測定処理を開始した時刻、測定処理を終了した時刻が記憶される。パターン欄は測定値の分布パターンを示す数字が記憶される。測定結果欄は測定結果として得た測定値の値が記憶される。判定（前回比較）欄は前回の測定結果と比較して性能劣化が見られた場合に、劣化の割合が許容範囲であればＯＫ、許容範囲を超えていればＮＧが記憶される。判定（初期値比較）欄は比較対象が初回の測定結果であり、劣化が許容範囲を超えているか否かで、ＯＫまたはＮＧが記憶される。
【００９５】
性能測定の処理はオペレータが起動しても良いし、バッチ処理として決められた時間に起動するようにしても良い。バッチ処理とする場合には、図３１のステップＳ８６における測定項目の指定は測定項目名を記載したファイルを読み込むことにより行う。また、ステップＳ９０の警告は、管理者のメールを送信する、または警告内容をファイルに書き込むようにする。
【００９６】
本実施の形態では、性能測定を日々行うことにより、性能劣化を的確に捉えることが可能となる。
【００９７】
実施の形態４
図３４は実施の形態１から３に係る性能測定装置の動作を示す機能ブロック図である。性能測定装置は取得部１１、判定部１２、抽出部１３、結果値算出部１４、最小測定回数算出部１５を含む。ＣＰＵ１が制御プログラム３Ｐ等を実行することにより、性能測定装置は以下のように動作する。取得部１１は性能測定に係る複数の測定値を取得する。判定部１２は取得した複数の測定値の分布パターンを判定する。抽出部１３は判定した測定値の分布パターンに従って、前記取得した複数の測定値から有意な測定値を抽出する。結果値算出部１４は抽出した有意な測定値から、性能測定結果である結果値を求める。最小測定回数算出部１５は１回の性能測定において測定値を取得すべき数であって、最小の値である最小測定回数を求める。
【００９８】
判定部１２は、分級区間決定部１２ａ、分級部１２ｂ、度数算出部１２ｃ、ピーク特定部１２ｄ、分布パターン判定部１２ｅを含む。分級区間決定部１２ａは複数の分級区間を定める。分級部１２ｂは複数の測定値を複数の分級区間に分級する（振り分ける）。度数算出部１２ｃは分級区間毎に振り分けられた測定値の度数を求める。ピーク特定部１２ｄは度数が１以上である１又は連続する複数の分級区間をピークと定める。分布パターン判定部１２ｅはピークの数により、分布パターンを判定する。
【００９９】
最小測定回数算出部１５は測定値集合生成部１５ａ、有意性判定部１５ｂを含む。測定値集合生成部１５ａは仮の最小測定回数（ｋ）を定め、取得した測定値をｋ個ずつの集合に分け、ｋ個の測定値からなる測定値集合をＭ個生成する。有意性判定部１５ｂは各測定値群それぞれについて、分布パターンを定め、定めた分布パターンに従い、有意な測定値を抽出し、抽出した測定値より結果値を求める。求めたＭ個の結果値の平均値及び標準偏差を求め、標準偏差と平均値の比率が所定値以下である場合、仮の最小測定回数（ｋ）を有意と判定する。最小測定回数算出部１５は仮の測定値の数（ｋ）を２からＮ／Ｍ以下の値まで変化させ、有意性判定部１５ｂにより有意であるか否かを判定し、有意である最小のｋを最小測定回数とする。判定結果に基づいて、通知内容を決定する。
【０１００】
図３５は実施の形態４に係る性能測定装置のハードウェア群を示すブロック図である。性能測定装置を動作させるためのプログラムは、ディスクドライブ等の読み取り部７にＣＤ−ＲＯＭ、ＤＶＤ（Digital Versatile Disc）ディスク、メモリーカード、またはＵＳＢ(UniversalSerial Bus)メモリ等の可搬型記録媒体７Ａを読み取らせてデータベース４に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ７Ｂを性能測定装置内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網Ｎを介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下に、その内容を説明する。
【０１０１】
図３５に示す性能測定装置は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体７Ａまたは半導体メモリ７Ｂから読み取り、或いは、通信網Ｎを介して他のサーバコンピュータ（図示せず）からダウンロードする。当該プログラムは、制御プログラム３Ｐとしてインストールされ、ＲＡＭ２にロードして実行される。これにより、上述した性能測定装置として機能する。
【０１０２】
本実施の形態４は以上の如きであり、その他は実施の形態１から３と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１０３】
上述した実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上述した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【０１０４】
以上の実施の形態１乃至３を含む実施形態に関し、さらに以下の付記を開示する。
【０１０５】
（付記１）
コンピュータに、
取得した複数の測定値の分布パターンを判定し、
判定した前記測定値の分布パターンに従って、前記取得した複数の測定値から有意な測定値を抽出し、
抽出した前記有意な測定値から、前記複数の測定値に係る測定の結果値を算出する、
処理を実行させることを特徴とするプログラム。
【０１０６】
（付記２）
前記分布パターンの判定は
前記複数の測定値を分級し、
各分級区間に含まれる測定値の度数を求め、
度数が１以上である一又は連続する複数の前記分級区間を評価区間として特定し、
特定した評価区間の数に基づいて行う、
処理を実行させることを特徴とする付記１に記載のプログラム。
【０１０７】
（付記３）
前記分布パターンを判定する処理で、前記評価区間が１つと判定された場合、前記有意な測定値としてすべての測定値を抽出し、
前記分布パターンを判定する処理で、前記評価区間が２つと判定された場合、前記評価区間毎に度数を算出し、前記取得した複数の測定値全数に前記２つの評価区間の度数の合計が占める割合を算出し、算出した割合が所定の閾値を超過していると判定したとき、前記有意な測定値として度数が大きい方の評価区間に含まれる測定値を抽出し、
前記分布パターンを判定する処理で、前記評価区間が３つ以上と判定された場合、前記評価区間毎に度数を算出し、度数が大きい上位３つの評価区間を特定し、前記取得した複数の測定値全数に前記上位３つの評価区間の度数の合計が占める割合を算出し、算出した割合が所定の閾値を超過していると判定したとき、前記有意な測定値として度数が１位である評価区間に含まれる測定値を抽出する、
処理を実行させることを特徴とする付記２に記載のプログラム。
【０１０８】
（付記４）
前記取得した複数の測定値の一部又は全部を、各集合の要素の数が同一となるようＮ個（Ｎは２以上の自然数）の測定値集合に分け、
前記要素の数を、２から、前記取得した測定値の全数をＮで除して得た商の整数部の値まで変化させた場合のそれぞれに対して、
各測定値集合について、分布パターンを判定し、判定した分布パターンに従い、有意な測定値を抽出し、抽出した有意な測定値より各測定値集合についての結果値を算出し、
算出した測定値集合についての結果値の平均値及び標準偏差を求め、標準偏差と平均値との比率が所定値以下である場合、前記要素の数を有意と判定する処理を行い、
有意であると判定された上記要素の数の最小値を、その後の測定で取得すべき測定値の全数とする、
処理を実行させることを特徴とする付記３に記載のプログラム。
【０１０９】
（付記５）
前記結果値は、前記抽出した有意な測定値の平均値である
ことを特徴とする付記１から４に記載のプログラム。
【０１１０】
（付記６）
取得した複数の測定値の分布パターンを判定する判定部と、
判定した測定値の分布パターンに従って、前記取得した複数の測定値から有意な測定値を抽出する抽出部と、
該抽出した有意な測定値から、前記複数の測定値に係る測定の結果値を算出する結果値算出部と
を含むことを特徴とする測定装置。
【０１１１】
（付記７）
コンピュータが、
取得した複数の測定値の分布パターンを判定し、
判定した測定値の分布パターンに従って、前記取得した複数の測定値から有意な測定値を抽出し、
該抽出した有意な測定値から、前記複数の測定値に係る測定の結果値を算出する、
処理を実行することを特徴とする測定方法。
【符号の説明】
【０１１２】
１  ＣＰＵ
２  ＲＡＭ
３  ＲＯＭ
３Ｐ  制御プログラム
４  データベース
５  操作部
６  通信部
７  読み取り部
７Ａ  可搬型記録媒体
７Ｂ  半導体メモリ
１１  取得部
１２  判定部
１２ａ  分級区間決定部
１２ｂ  分級部
１２ｃ  度数算出部
１２ｄ  ピーク特定部
１２ｅ  分布パターン判定部
１３  抽出部
１４  結果値算出部
１５  最小測定回数算出部
１５ａ  測定値集合生成部
１５ｂ  有意性判定部
ｔ１、ｔ２  閾値設定テーブル
ｔ３  測定項目テーブル
ｔ４  測定結果テーブル
【図１】
2014013445.tif 000003
【図２】
2014013445.tif 000004
【図３】
2014013445.tif 000005
【図４】
2014013445.tif 000006
【図５】
2014013445.tif 000007
【図６】
2014013445.tif 000008
【図７】
2014013445.tif 000009
【図８】
2014013445.tif 000010
【図９】
2014013445.tif 000011
【図１０】
2014013445.tif 000012
【図１１】
2014013445.tif 000013
【図１２】
2014013445.tif 000014
【図１３】
2014013445.tif 000015
【図１４】
2014013445.tif 000016
【図１５】
2014013445.tif 000017
【図１６】
2014013445.tif 000018
【図１７】
2014013445.tif 000019
【図１８】
2014013445.tif 000020
【図１９】
2014013445.tif 000021
【図２０】
2014013445.tif 000022
【図２１】
2014013445.tif 000023
【図２２】
2014013445.tif 000024
【図２３】
2014013445.tif 000025
【図２４】
2014013445.tif 000026
【図２５】
2014013445.tif 000027
【図２６】
2014013445.tif 000028
【図２７】
2014013445.tif 000029
【図２８】
2014013445.tif 000030
【図２９】
2014013445.tif 000031
【図３０】
2014013445.tif 000032
【図３１】
2014013445.tif 000033
【図３２】
2014013445.tif 000034
【図３３】
2014013445.tif 000035
【図３４】
2014013445.tif 000036
【図３５】
2014013445.tif 000037