IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2024-59020性能監視プログラムおよび性能監視方法
<>
  • 特開-性能監視プログラムおよび性能監視方法 図1
  • 特開-性能監視プログラムおよび性能監視方法 図2
  • 特開-性能監視プログラムおよび性能監視方法 図3
  • 特開-性能監視プログラムおよび性能監視方法 図4
  • 特開-性能監視プログラムおよび性能監視方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024059020
(43)【公開日】2024-04-30
(54)【発明の名称】性能監視プログラムおよび性能監視方法
(51)【国際特許分類】
   G06F 11/30 20060101AFI20240422BHJP
【FI】
G06F11/30 155
G06F11/30 140A
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2022166490
(22)【出願日】2022-10-17
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】平井 聡
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GA11
5B042MA05
5B042MA08
5B042MC22
5B042MC40
(57)【要約】
【課題】CPU上で動作するプログラムの動作状況に左右されずに、性能情報を収集する。
【解決手段】情報処理装置1は、CPU50のコア60で動作するアプリケーション21の実行の際のコア60の複数の性能情報の収集において、複数の性能情報ごとに、アプリケーション21の動作特性を対応付けて蓄積し、コア60が有するPMC610の数が複数の性能情報の総数より少ない場合、アプリケーション21の動作特性の現在値と最も剥離したアプリケーション21の動作特性を有する性能情報を複数の性能情報の中から選択して、PMC610に割り当てる。
【選択図】図1
【特許請求の範囲】
【請求項1】
プロセッサで動作するプログラムの実行の際の前記プロセッサの複数の性能情報の収集において、
前記複数の性能情報ごとに、前記プログラムの動作特性を対応付けて蓄積し、
前記プロセッサが有するPMC(Performance Monitoring Counter)の数が前記複数の性能情報の総数より少ない場合、前記プログラムの動作特性の現在値と最も剥離した前記プログラムの動作特性を有する性能情報を前記複数の性能情報の中から選択して、前記PMCに割り当てる
処理をコンピュータに実行させる性能監視プログラム。
【請求項2】
前記蓄積する処理は、前記複数の性能情報に関するイベントの取得回数をさらに対応付けて蓄積し、
前記割り当てる処理は、前記複数の性能情報のそれぞれの前記取得回数が同じ回数となるように次回の収集対象を選択し、前記複数の性能情報のそれぞれの前記取得回数が同じ回数になると、前記プログラムの動作特性の現在値と最も剥離した前記プログラムの動作特性の平均値を有する性能情報を選択し、次回の収集対象とする
ことを特徴とする請求項1に記載の性能監視プログラム。
【請求項3】
前記割り当てる処理は、前記プログラムの動作特性の現在値と、前記複数の性能情報ごとの前記プログラムの動作特性の平均値との類似度に応じて前記性能情報を優先的に前記PMCに割り当てる
ことを特徴とする請求項2に記載の性能監視プログラム。
【請求項4】
前記プログラムの動作特性は、前記PMUが有するCPUパイプライン・リソース利用率である
ことを特徴とする請求項1に記載の性能監視プログラム。
【請求項5】
プロセッサで動作するプログラムの実行の際の前記プロセッサの複数の性能情報の収集において、
前記複数の性能情報ごとに、前記プログラムの動作特性を対応付けて蓄積し、
前記プロセッサが有するPMCの数が前記複数の性能情報の総数より少ない場合、前記プログラムの動作特性の現在値と最も剥離した前記プログラムの動作特性を有する性能情報を前記複数の性能情報の中から選択して、前記PMCに割り当てる
処理をコンピュータが実行する性能監視方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、性能監視プログラムなどに関する。
【背景技術】
【0002】
近年、複数の性能情報のデータを収集して、収集したデータを分析して利用する技術が開示されている(例えば、特許文献1~4参照)。
【0003】
また、OSやアプリケーションを含むシステムの性能分析や詳細な動作分析を行うために、CPU(Central Processing Unit)に搭載されたパフォーマンス監視機構(PMU:Performance Monitoring Unit)が利用されている。PMUによって収集される性能情報は、例えば、CPUサイクル数、実行命令数、キャッシュヒット/ミス数等数百種類以上存在する。情報処理装置は、CPU上で動作するプログラムの実行中に、多数の性能情報を収集し、統合的に分析することで、性能のボトルネックを抽出し、プログラムやひいてはシステムの性能の向上に利用する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2017-45098号公報
【特許文献2】特開2014-149645号公報
【特許文献3】米国特許第10678805号明細書
【特許文献4】米国特許出願公開第2017/0085447号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、パフォーマンス監視機構(PMU)を利用する場合、CPU上で動作するプログラムの動作状況に左右されずに、性能情報を収集することが難しいという問題がある。
【0006】
かかる問題について説明する。PMUが収集可能な性能情報は数百種類以上存在するが、同時に収集できる性能情報の数は限定される。すなわち、1つの性能情報は、1本のPMC(Performance Monitoring Counter)によって収集される。PMCの本数は、一般的なCPUで2~8本である。したがって、PMUは、PMCの本数を超える性能情報を収集する場合には、所定期間ごとにPMCに割当てる性能情報を切り替えて収集を行う。
【0007】
CPU上で動作するプログラムが一定の動作状況であれば、PMCはどのタイミングで特定の性能情報を取得しても、同様のデータを取得できる。ところが、CPU上で動作するプログラムが一定の動作状況でない場合には、PMCは特定の性能情報を取得するタイミングによって得られるデータにバラつきが出てしまう。したがって、PMUを利用する場合、CPU上で動作するプログラムの動作状況に左右されずに、性能情報を収集することが難しい。
【0008】
本発明は、1つの側面では、CPU上で動作するプログラムの動作状況に左右されずに、性能情報を収集することを目的とする。
【課題を解決するための手段】
【0009】
1つの態様では、性能監視プログラムは、プロセッサで動作するプログラムの実行の際の前記プロセッサの複数の性能情報の収集において、前記複数の性能情報ごとに、前記プログラムの動作特性を対応付けて蓄積し、前記プロセッサが有するPMCの数が前記複数の性能情報の総数より少ない場合、前記プログラムの動作特性の現在値と最も剥離した前記プログラムの動作特性を有する性能情報を前記複数の性能情報の中から選択して、前記PMCに割り当てる、処理をコンピュータに実行させる。
【発明の効果】
【0010】
1実施態様によれば、CPU上で動作するプログラムの動作状況に左右されずに、性能情報を収集できる。
【図面の簡単な説明】
【0011】
図1図1は、実施例に係る情報処理装置のハードウェア構成の一例を示す図である。
図2図2は、PMUのCPUパイプライン・リソース利用率の取得機能を説明する図である。
図3図3は、実施例に係る管理テーブルの一例を示す図である。
図4図4は、実施例に係る状態情報現在値の一例を示す図である。
図5図5は、実施例に係る性能監視処理のフローチャートの一例を示す図である。
【発明を実施するための形態】
【0012】
以下に、本願の開示する性能監視プログラムおよび性能監視方法の実施例を図面に基づいて詳細に説明する。なお、本発明は、実施例により限定されるものではない。
【実施例0013】
[情報処理装置のハードウェア構成]
図1は、実施例に係る情報処理装置のハードウェア構成の一例を示す図である。図1に示すように、情報処理装置1は、システム・メモリ10と、CPU50とを有する。
【0014】
CPU50は、システム・メモリ10とバスで接続される。CPU50は、複数のコア60を有する。なお、図1で示す情報処理装置1は、2つのCPU50を備える場合であるが、これに限定しないで、3つのCPU50を備える場合であっても、1つのCPU50を備える場合であっても構わない。また、図1で示す情報処理装置1は、1つのCPU50に2つのコア60を備える場合であるが、これに限定しないで、3つのコア60を備える場合であっても、1つのコア60を備える場合であっても構わない。
【0015】
各コア60は、それぞれPMU(Performance Monitoring Unit)61を有する。PMU61は、パフォーマンス監視機構であり、PMC(Performance Monitoring Counter)610を用いて性能情報について発生するイベント(以降、性能情報イベントという)の情報を収集する。PMU61によって収集される性能情報は、例えば、CPUサイクル数、実行命令数、キャッシュヒット/ミス数等数百種類以上存在する。PMU61は、複数のPMC610を有する。PMC610は、性能モニタリングカウンタのことをいう。PMC610の本数は、例えば2~8本であるが、CPU50のスペックによって異なる。したがって、PMU61は、PMC610の本数を超える性能情報を収集する場合には、例えば時分割でPMC610に割当てる性能情報を切り換えて収集する。
【0016】
システム・メモリ10は、オペレーティング・システム20と、アプリケーション21とを有する。オペレーティング・システム20は、性能監視プログラム30と、管理テーブル41と、状態情報現在値42とを含む。
【0017】
性能監視プログラム30は、カーネルモジュールの1つである。性能監視プログラム30は、CPU50のコア60で動作するアプリケーション21を実行する際に、PMU61を使って、アプリケーション21が動作するコア60の複数の性能を監視する。性能監視プログラム30は、PMU制御部31を有する。なお、PMU制御部31の処理については、後述する。
【0018】
管理テーブル41は、性能情報を管理する。例えば、管理テーブル41は、複数の異なる性能情報ごとに、イベントの発生回数の積算値および取得回数を、収集の際のアプリケーション21の動作特性を平均化した平均値に対応付けて記憶する。アプリケーション21の動作特性は、例えば、PMU61が有するCPUパイプライン・リソース利用率の取得機能を用いて取得されれば良い。なお、管理テーブル41の一例については、後述する。
【0019】
ここで、PMU61が有するCPUパイプライン・リソース利用率の取得機能について、図2を参照して説明する。図2は、PMUのCPUパイプライン・リソース利用率の取得機能を説明する図である。
【0020】
図2左図には、CPU内部フロー概念図が示されている。図2左図に示すように、CPUパイプライン・リソース利用率の取得機能は、CPU内部のフローを4つの状態に分類する。4つの各状態は、Frontend、Backend、実行確定(Retired)、実行廃棄(予測ミス)を示す。Frontendは、命令をロード・デコードして、Execution Unitに供給する。Backendは、命令がデータ読出しや書込みである場合に、キャッシュおよびメモリアクセスを行う。そして、各命令は並列に投機的に実行される。実行確定(Retired)は、投機的な実行による命令の実行確定を示す。実行廃棄(予測ミス)は、投機的な実行による分岐予測ミスによる実行破棄を示す。
【0021】
図2右図には、CPUパイプライン・リソース利用率が示されている。CPUパイプライン・リソース利用率は、CPU内部の4つの状態について、リソース利用率を100分率でカウントする。すなわち、CPUパイプライン・リソース利用率の取得機能は、CPU内部の4つの状態の割合を収集する。ここでは、Frontend、Backend、実行確定(Retired)、実行破棄(予測ミス)の4つの状態の割合は、20%、60%、15%、5%を表わしている。CPU内部の4つの状態の割合が、CPUパイプライン・リソース利用率である。そして、CPUパイプライン・リソース利用率は、アプリケーション21の動作特性の判断に使用され、PMC610の切替えに利用される。
【0022】
図1に戻って、状態情報現在値42は、CPUパイプライン・リソース利用率の現在値を保持する。すなわち、状態情報現在値42は、切替えの直前に計測されたCPUパイプライン・リソース利用率を保持する。なお、状態情報現在値42の一例については、後述する。
【0023】
PMU制御部31は、CPU50のコア60で動作するアプリケーション21の実行の際に、PMU61を用いてコア60の複数の異なる性能情報を収集する。PMU制御部31は、1つのPMC610に1つの性能情報を収集対象として割り当てて、PMC610を用いて性能情報について発生するイベントを収集する。
【0024】
また、PMU制御部31は、収集対象の性能情報ごとに、イベントの発生回数の累積値(積算値)および収集対象になった回数(取得回数)を、収集の際のアプリケーション21の動作特性を平均化した平均値に対応付けて管理テーブル41に蓄積する。ここでいうアプリケーション21の動作特性とは、CPUパイプライン・リソース利用率のことである。すなわち、PMU制御部31は、収集対象の各性能情報について、収集対象として収集した際のCPUパイプライン・リソース利用率をPMU61から取得する。そして、PMU制御部31は、取得したCPUパイプライン・リソース利用率と、以前収集対象として収集した際の利用率との平均値を算出して、管理テーブル41に更新する。
【0025】
また、PMU制御部31は、PMC610の本数が複数の性能情報の総数より少ない場合には、一定時間ごとに、PMC610に割当てる性能情報を収集対象として切り替える。
【0026】
例えば、PMU制御部31は、複数の性能情報のそれぞれの取得回数が同じ回数でない場合には、同じ回数となるように、一定時間ごとに、性能情報を切り替えるべく、複数の性能情報から次回の収集対象としての性能情報を選択する。そして、PMU制御部31は、選択した性能情報に切り替えるために、選択した性能情報をPMC610に割当てる。
【0027】
そして、PMU制御部31は、複数の性能情報のそれぞれの取得回数が同じ回数になると、CPUパイプライン・リソース利用率の現在値と最も剥離したCPUパイプライン・リソース利用率の平均値を有する性能情報を次回の収集対象として選択する。CPUパイプライン・リソース利用率の現在値は、切り替え直前の計測時のCPUパイプライン・リソース利用率の値ともいえる。一例として、PMU制御部31は、CPUパイプライン・リソース利用率の現在値と、性能情報ごとに記録されたCPUパイプライン・リソース利用率の平均値を比較する。そして、PMU制御部31は、比較の結果、最も類似度が低いCPUパイプライン・リソース利用率の平均値を有する性能情報を優先的に選択する。最も類似度が低い性能情報を優先的に選択するのは、以下の理由による。全ての性能情報の収集結果(イベント発生回数)は、アプリケーション21の同一の動作特性(CPUパイプライン・リソース利用率)のときに取得されることが望ましい。アプリケーション21の動作特性が異なると、性能にバラつきが出てしまうからである。したがって、PMU制御部31は、CPUパイプライン・リソース利用率(動作特性)の現在値(切り替え直前の計測時の値)と最も剥離したCPUパイプライン・リソース利用率(動作特性)の平均値を有する性能情報を優先的に選択する。これにより、PMU制御部31は、性能情報の収集時のCPUパイプライン・リソース利用率(動作特性)の平滑化を図ることができる。つまり、PMU制御部31は、どの性能情報もCPUパイプライン・リソース利用率(動作特性)を平滑化した状態で情報を収集することとなり、アプリケーション21の実行状況に左右されず、性能情報を収集できる。この結果、PMU制御部31は、アプリケーション21の実行状況に左右されず、性能情報を収集できる。
【0028】
なお、一定時間ごとの切り替えは、時分割を利用すれば良い。一例として、オペレーティング・システム20がLinux(登録商標)である場合には、PMU制御部31は、以下のように処理すれば良い。すなわち、PMU制御部31は、Linuxの標準ツールであるperf(Performance tools for Linux)を用いて、数ミリ秒単位の一定間隔ごとにラウンドロビンでPMC610に割当てる性能情報を切り換えれば良い。
【0029】
[管理テーブルの一例]
ここで、実施例に係る管理テーブル41の一例を、図3を参照して説明する。図3は、実施例に係る管理テーブルの一例を示す図である。図3に示すように、管理テーブル41は、性能情報番号、性能情報名、取得回数、イベント発生回数(積算値)およびCPUパイプライン・リソース利用率(平均値)を対応付けて記憶する。
【0030】
性能情報番号は、性能情報を一意に識別できる番号である。性能情報名は、性能情報を一意に識別できる名前であり、イベントの名前でもある。取得回数は、収集対象になった回数を示す。すなわち、取得回数は、収集対象として取得(収集)した回数である。イベント発生回数(積算値)は、収集の際に発生したイベントの発生回数の積算値である。CPUパイプライン・リソース利用率(平均値)は、Frontend、Backend、RetiredおよびBad SpeculationのCPU内部の4つの状態の割合であり、収集の際の割合の平均値を示す。なお、Ritiredは、実行確定の割合のことをいい、Bad Speculationは、実行廃棄(予測ミス)の割合のことをいう。
【0031】
一例として、性能情報番号が「1」である場合には、性能情報名として「CPU Cycles」、取得回数として「3」、イベント発生回数(積算値)として「21,786,403」が記憶されている。そして、Frontendとして「25(%)」、Backndとして「50(%)」、Retiredとして「20(%)」、Bad Speculationとして「5(%)」が記憶されている。また、性能情報番号が「2」である場合には、性能情報名として「Instructions」、取得回数として「3」、イベント発生回数(積算値)として「23,989,347」が記憶されている。そして、Frontendとして「21(%)」、Backndとして「56(%)」、Retiredとして「19(%)」、Bad Speculationとして「4(%)」が記憶されている。
【0032】
[状態情報現在値の一例]
ここで、実施例に係る状態情報現在値42の一例を、図4を参照して説明する。図4は、実施例に係る状態情報現在値の一例を示す図である。図4に示すように、状態情報現在値42は、CPUパイプライン・リソース利用率の現在値を保持する。状態情報現在値42は、CPUパイプライン・リソース利用率を対応付けて記憶する。CPUパイプライン・リソース利用率は、Frontend、Backend、RetiredおよびBad SpeculationのCPU内部の4つの状態の割合であり、切替え直前の計測時のCPUパイプライン・リソース利用率である。言い換えれば、CPUパイプライン・リソース利用率は、CPUパイプライン・リソース利用率の現在値を示す。
【0033】
なお、PMU制御部31は、複数の性能情報のそれぞれの取得回数が同じ回数でない場合には、同じ回数となるように、一定時間ごとに、性能情報を切り替えるべく、複数の性能情報から次回の収集対象としての性能情報を選択する。そして、PMU制御部31は、複数の性能情報のそれぞれの取得回数が同じ回数になると、CPUパイプライン・リソース利用率の現在値と最も類似度が低いCPUパイプライン・リソース利用率の平均値を有する性能情報を優先的に選択する。CPUパイプライン・リソース利用率は、4つの状態の割合を含む。したがって、類似度は、4つの状態の値を4次元ベクトルとした場合の差分の2乗和の平方根を算出すれば良い。
【0034】
例えば、CPUパイプライン・リソース利用率の現在値を示す(Frontend,Backend,Retired,Bad Speculation)が(x,x,x,x)であるとする。CPUパイプライン・リソース利用率の平均値を示す(Frontend,Backend,Retired,Bad Speculation)が(y,y,y,y)であるとする。すると、類似度d(x,y)は、以下の式(1)により算出される。なお、d(x,y)が大きい程、類似度が低い。
【数1】
【0035】
一例として、CPUパイプライン・リソース利用率の現在値が図4に示すように(30,45,20,5)であるとする。性能情報ごとのCPUパイプライン・リソース利用率(平均値)が図3の管理テーブル41に示されるものとする。すると、性能情報番号が「1」の場合の「CPU Cycles」の類似度は、「7.1」と計算される。性能情報番号が「2」の場合の「Instructions」の類似度は、「14.2」と計算される。性能情報番号が「3」の場合の「Branches」の類似度は、「23.0」と計算される。性能情報番号が「4」の場合の「Cache misses」の類似度は、「42.4」と計算される。したがって、PMU制御部31は、性能情報番号「4」,「3」,「2」,「1」の順で、性能情報を優先的に選択する。
【0036】
[性能監視処理のフローチャート]
ここで、実施例に係る性能監視処理のフローチャートの一例を、図5を参照して説明する。図5は、実施例に係る性能監視処理のフローチャートの一例を示す図である。
【0037】
PMU制御部31は、管理テーブル41を参照して、取得回数が0回の性能情報があるか否かを判定する(ステップS11)。取得回数が0回の性能情報があると判定した場合には(ステップS11;Yes)、PMU制御部31は、取得回数が0回の性能情報について、管理テーブル41の性能情報番号順に、PMC610でカウントするように設定(割り当て)する(ステップS12)。そして、PMU制御部31は、ステップS18に移行する。
【0038】
一方、取得回数が0回の性能情報がないと判定した場合には(ステップS11;No)、PMU制御部31は、管理テーブル41を参照して、他と比べて取得回数が少ない性能情報があるか否かを判定する(ステップS13)。取得回数が少ない性能情報があると判定した場合には(ステップS13;Yes)、PMU制御部31は、取得回数が少ない性能情報の数がPMC610の本数より大きいか否かを判定する(ステップS13A)。
【0039】
取得回数が少ない性能情報の数がPMC610の本数より大きくないと判定した場合には(ステップS13A:No)、PMU制御部31は、管理テーブル41を参照し、取得回数が少ない性能情報をPMC610でカウントするように設定(割り当て)する(ステップS13B)。そして、PMU制御部31は、ステップS18に移行する。
【0040】
一方、取得回数が少ない性能情報の数がPMC610の本数より大きいと判定した場合には(ステップS13A:Yes)、PMU制御部31は、管理テーブル41を参照し、取得回数が少ない性能情報を選択候補とする(ステップS14)。そして、PMU制御部31は、ステップS16に移行する。
【0041】
一方、取得回数が少ない性能情報がないと判定した場合には(ステップS13;No)、PMU制御部31は、取得回数が同一回数であるので、全ての性能情報を選択候補とする(ステップS15)。そして、PMU制御部31は、ステップS16に移行する。
【0042】
ステップS16において、PMU制御部31は、選択候補と直前の計測時とのCPUパイプライン・リソース利用率の類似度を計算する(ステップS16)。例えば、PMU制御部31は、状態情報現在値42に記憶されたCPUパイプライン・リソース利用率と、管理テーブル41に記憶された各選択候補の性能情報のCPUパイプライン・リソース利用率の平均値とを比較する。そして、PMU制御部31は、式(1)を用いて、選択候補と直前の計測時とのCPUパイプライン・リソース利用率の類似度を算出する。
【0043】
そして、PMU制御部31は、最も類似度の低い選択候補の性能情報からPMC610でカウントするように設定(割り当て)する(ステップS17)。そして、PMU制御部31は、ステップS18に移行する。
【0044】
ステップS18において、PMU制御部31は、PMC610のカウントを開始する(ステップS18)。そして、PMU制御部31は、一定時間が経過したか否かを判定する(ステップS19)。一定時間が経過していないと判定した場合には(ステップS19;No)、PMU制御部31は、一定時間が経過するまで、判定処理繰り返す。
【0045】
一方、一定時間が経過したと判定した場合には(ステップS19;Yes)、PMU制御部31は、PMC610のカウントを停止する(ステップS20)。
【0046】
そして、PMU制御部31は、PMC610のカウント値およびCPUパイプライン・リソース利用率を取得し、管理テーブル41を更新する(ステップS21)。例えば、PMU制御部31は、対象の性能情報に割当てたPMC610からカウンタ値を取得し、管理テーブル41に記憶された対象の性能情報に対するイベント発生回数に積算し、管理テーブル41を更新する。PMU制御部31は、PMU61から取得されたCPUパイプライン・リソース利用率の現在値を取得し、管理テーブル41に記憶された対象の性能情報に対するCPUパイプライン・リソース利用率との平均値を算出し、管理テーブル41を更新する。
【0047】
そして、PMU制御部31は、取得回数を1加算し、管理テーブル41を更新する(ステップS22)。例えば、PMU制御部31は、管理テーブル41に記憶された対象の性能情報に対する取得回数を1加算し、加算した値を管理テーブル41に更新する。
【0048】
そして、PMU制御部31は、終了指示があるか否かを判定する(ステップS23)。終了指示がないと判定した場合には(ステップS23;No)、PMU制御部31は、次回の処理を行うべく、ステップS11に移行する。
【0049】
一方、終了指示があると判定した場合には(ステップS23;Yes)、PMU制御部31は、性能監視処理を終了する。
【0050】
[実施例の効果]
上記実施例では、情報処理装置1は、コア60で動作するアプリケーション21の実行の際のコア60の複数の性能情報の収集において、複数の性能情報ごとに、アプリケーション21の動作特性を対応付けて蓄積する。情報処理装置1は、コア60が有するPMC(Performance Monitoring Counter)610の数が複数の性能情報の総数より少ない場合、アプリケーション21の動作特性の現在値と最も剥離したアプリケーション21の動作特性を有する性能情報を複数の性能情報の中から選択して、PMC610に割り当てる。かかる構成によれば、情報処理装置1は、複数の性能情報のいずれもアプリケーション21の動作特性を平滑化した情報を収集できるようになり、アプリケーション21の実行状況に左右されず、性能情報を収集できる。
【0051】
上記実施例では、情報処理装置1は、複数の性能情報に関するイベントの取得回数をさらに対応付けて蓄積する。そして、情報処理装置1は、複数の性能情報のそれぞれの取得回数が同じ回数となるように次回の収集対象を選択し、複数の性能情報のそれぞれの取得回数が同じ回数になると、アプリケーション21の動作特性の現在値と最も剥離したアプリケーション21の動作特性の平均値を有する性能情報を選択し、次回の収集対象とする。かかる構成によれば、情報処理装置1は、複数の異なる性能情報を収集する際のアプリケーション21の動作特性の差を平滑化し、アプリケーション21の動作特性に左右されず、複数の異なる性能情報を収集できる。
【0052】
また、上記実施例では、情報処理装置1は、アプリケーション21の動作特性の現在値と、複数の性能情報ごとのアプリケーション21の動作特性の平均値との類似度に応じて性能情報を優先的にPMC610に割り当てる。かかる構成によれば、情報処理装置1は、類似度を用いることで、次にPMC610に割り当てる性能情報を優先的に割り当てることができる。
【0053】
また、上記実施例では、アプリケーション21の動作特性は、PMU61が有するCPUパイプライン・リソース利用率である。これにより、情報処理装置1は、アプリケーション21を実行する際のCPUパイプライン・リソース利用率に左右されず、複数の異なる性能情報を収集できる。
【0054】
[その他]
実施例では、オペレーティング・システム20内に性能監視プログラム30を備え、性能監視プログラム30が、PMU61を使って、アプリケーション21が動作するコア60の複数の性能を監視すると説明した。しかしながら、性能監視プログラム30は、オペレーティング・システム20内に限定されず、オペレーティング・システム20外でも良く、オペレーティング・システム20用のプログラムであれば良い。
【0055】
また、実施例では、アプリケーション21の動作特性の判断に、PMU61のCPUパイプライン・リソース利用率の4つの状態を用いると説明した。しかしながら、アプリケーション21の動作特性の判断には、PMU61のCPUパイプライン・リソース利用率の別の状態を用いても良い。また、アプリケーション21の動作特性の判断には、PMU61のCPUパイプライン・リソース利用率を用いることに限定されず、他の方法を用いても良い。
【0056】
また、図示した情報処理装置1に含まれる性能監視プログラム30の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、PMU制御部31を、PMC610を用いて収集対象の性能情報について情報を収集する機能部と、収集した情報を管理テーブル41に蓄積する機能部と、一定期間ごとにPMC610に割当てる性能情報を収集対象として切り替える機能と、に分散しても良い。管理テーブル41および状態情報現在値42等を記憶する記憶部(図示しない)を情報処理装置1の外部装置としてネットワーク経由で接続するようにしても良い。
【0057】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0058】
(付記1)プロセッサで動作するプログラムの実行の際の前記プロセッサの複数の性能情報の収集において、
前記複数の性能情報ごとに、前記プログラムの動作特性を対応付けて蓄積し、
前記プロセッサが有するPMCの数が前記複数の性能情報の総数より少ない場合、前記プログラムの動作特性の現在値と最も剥離した前記プログラムの動作特性を有する性能情報を前記複数の性能情報の中から選択して、前記PMCに割り当てる
処理をコンピュータに実行させる性能監視プログラム。
【0059】
(付記2)前記蓄積する処理は、前記複数の性能情報に関するイベントの取得回数をさらに対応付けて蓄積し、
前記割り当てる処理は、前記複数の性能情報のそれぞれの前記取得回数が同じ回数となるように次回の収集対象を選択し、前記複数の性能情報のそれぞれの前記取得回数が同じ回数になると、前記プログラムの動作特性の現在値と最も剥離した前記プログラムの動作特性の平均値を有する性能情報を選択し、次回の収集対象とする
ことを特徴とする付記1に記載の性能監視プログラム。
【0060】
(付記3)前記割り当てる処理は、前記プログラムの動作特性の現在値と、前記複数の性能情報ごとの前記プログラムの動作特性の平均値との類似度に応じて前記性能情報を優先的に前記PMCに割り当てる
ことを特徴とする付記2に記載の性能監視プログラム。
【0061】
(付記4)
前記プログラムの動作特性は、前記PMUが有するCPUパイプライン・リソース利用率である
ことを特徴とする付記1に記載の性能監視プログラム。
【0062】
(付記5)プロセッサで動作するプログラムの実行の際の前記プロセッサの複数の性能情報の収集において、
前記複数の性能情報ごとに、前記プログラムの動作特性を対応付けて蓄積し、
前記プロセッサが有するPMCの数が前記複数の性能情報の総数より少ない場合、前記プログラムの動作特性の現在値と最も剥離した前記プログラムの動作特性を有する性能情報を前記複数の性能情報の中から選択して、前記PMCに割り当てる
処理をコンピュータが実行する性能監視方法。
【0063】
(付記6)プロセッサで動作するプログラムの実行の際の前記プロセッサの複数の性能情報を収集する収集部と、
前記複数の性能情報ごとに、前記プログラムの動作特性を対応付けて蓄積する蓄積部と、
前記プロセッサが有するPMCの数が前記複数の性能情報の総数より少ない場合、前記プログラムの動作特性の現在値と最も剥離した前記プログラムの動作特性を有する性能情報を前記複数の性能情報の中から選択して、前記PMCに割り当てる割当部と、
を有することを特徴とする情報処理装置。
【符号の説明】
【0064】
1 情報処理装置
10 システム・メモリ
20 オペレーティング・システム
21 アプリケーション
30 性能監視プログラム
31 PMU制御部
41 管理テーブル
42 状態情報現在値
50 CPU
60 コア
61 PMU
610 PMC
図1
図2
図3
図4
図5