JP6131829B2 - 情報処理装置、情報処理装置の解析方法および情報処理装置の解析プログラム - Google Patents

情報処理装置、情報処理装置の解析方法および情報処理装置の解析プログラム Download PDF

Info

Publication number
JP6131829B2
JP6131829B2 JP2013227686A JP2013227686A JP6131829B2 JP 6131829 B2 JP6131829 B2 JP 6131829B2 JP 2013227686 A JP2013227686 A JP 2013227686A JP 2013227686 A JP2013227686 A JP 2013227686A JP 6131829 B2 JP6131829 B2 JP 6131829B2
Authority
JP
Japan
Prior art keywords
function
time
information
cpu
unit
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.)
Expired - Fee Related
Application number
JP2013227686A
Other languages
English (en)
Other versions
JP2015088068A (ja
Inventor
聡 平井
聡 平井
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 JP2013227686A priority Critical patent/JP6131829B2/ja
Publication of JP2015088068A publication Critical patent/JP2015088068A/ja
Application granted granted Critical
Publication of JP6131829B2 publication Critical patent/JP6131829B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、情報処理装置、情報処理装置の解析方法および情報処理装置の解析プログラムに関する。
プログラムを実行した情報処理装置から実行中の処理内容を示す情報などを収集し、収集した情報について集計処理を行なって得た集計結果に基づいて、実行した当該プログラムの動作の確認を行なう、いわゆるプログラムの性能分析が従来行なわれている(例えば、特許文献1参照)。
特開2011−164839号公報
しかしながら、従来のプロファイラによる解析では、実行時間に占めるアイドル時間の割合が高くなっているという事象しか把握できなかった。このため、従来の技術においては、プログラムの実行がなされないため、性能への影響を与えるアイドル状態を作り出すアイドル原因となる関数を的確に特定できないという問題があった。
一つの側面では、本発明はより精度良くアイドル原因となる関数を特定することが可能となる情報処理装置等を提供することを目的とする。
本願に開示する情報処理装置は、プログラムを実行する演算処理部と、実行中の関数を示す情報である関数情報を所定間隔で採取するとともに、前記関数情報と前記関数情報とを採取した時刻であるサンプリング時刻を記憶部に記憶する関数情報採取部と、前記演算処理部がアイドル状態に移行した場合、移行時刻を取得して前記記憶部に記憶する移行取得部と、前記記憶部に記憶した移行時刻と、前記記憶部に記憶したサンプリング時刻のうち前記移行時刻直前のサンプリング時刻との差分、及び、前記サンプリング時刻に対応する関数情報を抽出する抽出部と、該抽出部が抽出した各関数情報に対応する差分の分布に基づき、アイドル原因となる関数を特定する特定部とを備える。
一つの側面では、より精度良くアイドル原因となる関数を特定することが可能となる。
情報処理装置のハードウェア群を示すブロック図である。 サンプリング処理のイメージを示す説明図である。 サンプリングテーブルのレコードレイアウトを示す説明図である。 移行時刻テーブルのレコードレイアウトを示す説明図である。 差分テーブルのレコードレイアウトを示す説明図である。 統計テーブルのレコードレイアウトを示す説明図である。 サンプリングテーブルの生成処理の手順を示すフローチャートである。 移行時刻の取得処理手順を示すフローチャートである。 差分及び関数の取得処理手順を示すフローチャートである。 アイドル原因となる可能性の高い関数の抽出処理手順を示すフローチャートである。 サンプリング結果を示す説明図である。 統計テーブルに記憶されたデータの変化を示すグラフである。 実施の形態2に係る関数の特定処理手順を示すフローチャートである。 実施の形態2に係る関数の特定処理手順を示すフローチャートである。 実施の形態3に係るコンピュータのハードウェア群を示すブロック図である。 サンプリング処理のイメージを示す説明図である。 終了時刻テーブルのレコードレイアウトを示す説明図である。 終了差分テーブルのレコードレイアウトを示す説明図である。 移行統計テーブルのレコードレイアウトを示す説明図である。 終了統計テーブルのレコードレイアウトを示す説明図である。 実施の形態2に係る統計テーブルのレコードレイアウトを示す説明図である。 終了時刻の取得処理手順を示すフローチャートである。 終了時刻に係る差分及び関数の抽出処理手順を示すフローチャートである。 アイドル原因となる可能性の高い関数の抽出処理手順を示すフローチャートである。 重み付け処理の手順を示すフローチャートである。 上述した形態のコンピュータの動作を示す機能ブロック図である。 実施の形態5に係るコンピュータのハードウェア群を示すブロック図である。
実施の形態1
以下実施の形態を、図面を参照して説明する。図1は情報処理装置1のハードウェア群を示すブロック図である。情報処理装置1は解析対象となるパーソナルコンピュータ、サーバコンピュータ、携帯電話機、ゲーム機、ブックリーダまたはPDA(Personal Digital Assistant)等である。以下では情報処理装置1をコンピュータ1と読み替えて説明する。コンピュータ1は制御部としてのCPU(Central Processing Unit)11、RAM(Random Access Memory)12、入力部13、表示部14、時計部18、記憶部15、及び通信部16等を含む。CPU11は、バス17を介してハードウェア各部と接続されている。CPU11は記憶部15に記憶された制御プログラム15Pに従いハードウェア各部を制御する。RAM12は例えばSRAM(Static RAM)、DRAM(Dynamic RAM)、フラッシュメモリ等である。RAM12は、記憶部としても機能し、CPU11による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
入力部13はマウス、キーボードまたはタッチパネル等の入力デバイスであり、受け付けた操作情報をCPU11へ出力する。表示部14は液晶ディスプレイまたは有機ELディスプレイ等であり、CPU11の指示に従い各種情報を表示する。通信部16は通信モジュールであり、通信網を介して他のコンピュータ(図示せず)との間で情報の送受信を行う。
時計部18は時刻の情報をCPU11へ出力する。記憶部15はハードディスクまたは大容量メモリであり、制御プログラム15P、OS(Operating System)151、ユーザプログラム153、サンプリングテーブル154、移行時刻テーブル155、差分テーブル156及び統計テーブル157等を記憶している。CPU11は、RAM12にユーザプログラム153をロードする。CPU11は、OS151の一機能であるプロファイラ152により予め定めた間隔で割り込みを発生させる。プロファイラ152は、割り込みによる定期的なサンプリング処理により、プロセスを特定するための識別情報(以下、PIDという)、実行命令アドレス及び割り込んだ際の時刻(以下、サンプリング時刻という)を取得する。
実行命令アドレスはOS151及びユーザプログラム153から読み出されたサンプリング対象の関数が記憶されているRAM12上のアドレスである。なお、本実施形態ではプロファイラ152はOS151の一機能として説明するが、OS151とは別の独立したプログラムであっても良い。
図2はサンプリング処理のイメージを示す説明図である。横軸は時間であり、時間の経過と共に、CPU11によりユーザプログラム153から関数(以下、ユーザ関数という)が次々と呼び出され、実行されている状態を示している。OS151は、CPU11をアイドル状態にするアイドル関数を呼び出す。図2に示すようにユーザ関数とアイドル関数とがCPU11により逐次呼び出され、各種処理が実行されることとなる。ここで、アイドル状態の占める割合が多ければ多い程、CPU11の使用率は低減することとなる。
図2の下向き矢印は、プロファイラ152によるサンプリング処理のタイミングを示すものである。CPU11はプロファイラ152の割り込みハンドラにより、記憶部15に記憶された予め定められた時間間隔でPID、実行命令アドレス、及び、サンプリング時刻を取得する。なお、サンプリング間隔については、ユーザが入力部13等から変更することができる。
図3はサンプリングテーブル154のレコードレイアウトを示す説明図である。サンプリングテーブル154はPIDフィールド、実行命令アドレスフィールド、サンプリング時刻フィールド、プロセス名フィールド、及び関数名フィールドを含む。PIDフィールドには、OS151及びユーザプログラム153から呼び出されたユーザ関数及びアイドル関数に係るプロセスを特定するためのPIDが記憶されている。実行命令アドレスフィールドには、サンプリング対象の関数が記憶されているRAM12上のアドレスがPIDに対応付けて記憶されている。
サンプリング時刻フィールドには、プロファイラ152によりサンプリングを行った際の時刻が実行命令アドレスに対応付けて記憶されている。プロセス名フィールドにはPID等に対応付けてサンプリング時に実行しているプロセスの名称が記憶されている。関数名フィールドには、サンプリング時刻に対応付けて、サンプリング時のOS151またはユーザプログラム153の関数名が記憶されている。CPU11は、プロファイラ152により定期的に取得したPID、実行命令アドレス及びサンプリング時刻をサンプリングテーブル154に記憶する。
CPU11は、OS151からPID及び実行命令アドレスに対応するプロセス名及び関数名を取得する。CPU11は、取得したプロセス名及び関数名を実行命令アドレス等に対応付けてサンプリングテーブル154に記憶する。CPU11は、ユーザプログラム153のバイナリデータから、ユーザプログラム153のPID及び実行命令アドレスに対応するプロセス名及び関数名を取得する。CPU11は、取得したプロセス名及び関数名を実行命令アドレス等に対応付けてサンプリングテーブル154に記憶する。図3の例では第1回目のサンプリング時にはユーザ関数である「func_c」が実行されており、第2回目及び第3回目のサンプリング時に「poll_idle」で示すアイドル関数が実行されていることが理解できる。
図2に戻り説明を続ける。図2の上向き矢印はアイドル状態への移行タイミングを示す。CPU11は、デバッグ機能、または、OS151のイベント登録機能を利用し、ユーザ関数からアイドル関数への切り替えを検出した場合、プロファイラ152を呼び出し、アイドル状態へ移行した時刻(以下、移行時刻という)を取得する。なお、OS151のイベント登録機能は、例えばLinux(登録商標)のKprobesまたはSystemap等を用いればよい。具体的にはCPU11はユーザ関数からアイドル関数への移行をイベントとして登録しておき、登録したイベントを検出した場合に、移行時刻を取得するようにすればよい。またCPU11のデバッグ機能に関しては、例えばIntel社の「Intel(登録商標)64 and IA-32 Architectures Software Developer’s Manual Volume 3B:System Programming Guide, Part 2」に記載の方法を用いればよい。例えばCPU11は、ユーザ関数またはアイドル関数の特定の実行命令アドレスを記憶しておき、当該記憶した実行命令アドレスを検出した場合に、アイドル状態へ移行したと判断しても良い。以下では、デバッグ機能を用いる例を挙げて説明する。CPU11は、サンプリング処理と共にアイドル状態への移行に伴う移行時刻の取得を行う。
図4は移行時刻テーブル155のレコードレイアウトを示す説明図である。CPU11は、移行時刻を取得した場合、移行時刻テーブル155に逐次移行時刻を記憶する。図5は差分テーブル156のレコードレイアウトを示す説明図である。差分テーブル156は、PIDフィールド、プロセス名フィールド、関数名フィールド及び差分フィールド等を含む。CPU11は、サンプリングテーブル154及び移行時刻テーブル155の記憶内容に基づき、差分テーブル156を生成する。CPU11は、サンプリングテーブル154及び移行時刻テーブル155を参照し、移行時刻の直前のサンプリング時刻を抽出する。CPU11は、サンプリングテーブル154を参照し、抽出したサンプリング時刻に対応するPID、プロセス名、関数名を抽出する。
CPU11は、差分テーブル156に抽出したPID、プロセス名及び関数名を記憶する。CPU11は、移行時刻と直前のサンプリング時刻との差分を求め、差分フィールドに記憶する。なお、差分フィールドには参考のためかっこ内に、実時間を単位μsとして記載している。
図6は統計テーブル157のレコードレイアウトを示す説明図である。CPU11は、各関数の差分分布を、予め記憶部15に記憶した差分の時間帯に基づき分類する。図6の例では、時間帯を5μsとしている。具体的には5μs未満、5μs以上10μs未満、10μs以上15μs未満等と5μs毎に分類する。なお、時間帯はあくまで一例でありこれに限るものではない。また時間帯については、ユーザが入力部13等から変更することができる。
CPU11は、差分テーブル156を参照し、関数名及び差分に基づき、関数毎に時間帯に属する差分の数を計数する。図6の例では「func_a」で示す関数aは、5μs未満の差分の個数が2015であり、5μs以上10μs未満の個数は2であることが理解できる。また「func_b」で示す関数bは、5μs未満の差分の個数が186であり、5μs以上10μs未満の個数は1861であることが理解できる。同様に「func_c」で示す関数cは、5μs未満の差分の個数が144であり、5μs以上10μs未満の個数は1822であることが理解できる。
CPU11は、時間帯が最も短い時間帯に分類された数の最も大きい関数を特定する。図6の例では時間帯が最も短い5μsに分類された数が、2015個と最も大きい関数aが、アイドル原因となる関数であるとして特定される。以上のハードウェア群において、各種ソフトウェア処理を、フローチャートを用いて説明する。
図7はサンプリングテーブル154の生成処理の手順を示すフローチャートである。CPU11は、RAM12を参照し、プロファイラ152により所定時間間隔で実行中のPID、実行命令アドレス及びサンプリング時刻を取得する(ステップS71)。CPU11は、取得したPID、実行命令アドレス及びサンプリング時刻をサンプリングテーブル154に記憶する(ステップS72)。CPU11は、OS151から、PID及び実行命令アドレスに対応するプロセス名及び関数名を取得する(ステップS73)。
CPU11は、ユーザプログラム153から、PID及び実行命令アドレスに対応するプロセス名及び関数名を取得する(ステップS74)。CPU11は、ステップS73及びS74で取得したプロセス名及び関数名を、PID及び実行命令アドレスに対応付けて、サンプリングテーブル154に記憶する(ステップS75)。なお、CPU11は、実行命令アドレスがOS151領域の場合は、OS151からプロセス名及び関数名を取得し、ユーザプログラム領域の場合は、OS151及びユーザプログラム情報(プログラムバイナリまたはOS151がプログラムロード時に作成するシンボル情報等)からプロセス名及び関数名を取得しても良い。なお、これら2つの取得処理は一つの処理として行えば良い。また制御プログラム15Pは、プロファイラ152と一体となって動作する。ここで、プロファイラ152がOS151に組込まれている場合、制御プログラム15PもOS151に組み込まれるか、または、アドオンモジュールという形で提供することにより、OS151にロードされ、実行される。プロファイラ152が独立したプログラムである場合、制御プログラム15Pを包含して提供する、または、協調して動作するプログラムとして提供する。
図8は移行時刻の取得処理手順を示すフローチャートである。CPU11は、デバッグ機能によりアイドル状態への移行を検出したか否かを判断する(ステップS81)。CPU11は、アイドル状態への移行を検出していないと判断した場合(ステップS81でNO)、アイドル状態を検出するまで待機する。CPU11は、アイドル状態への移行を検出した場合(ステップS81でYES)、ステップS82へ移行する。CPU11は、プロファイラ152により移行時刻を取得する(ステップS82)。CPU11は、取得した移行時刻を移行時刻テーブル155に記憶する(ステップS83)。
図9は差分及び関数の取得処理手順を示すフローチャートである。CPU11は、移行時刻テーブル155を参照し、移行時刻を抽出(ステップS91)。CPU11は、サンプリングテーブル154を参照し、移行時刻直前のサンプリング時刻を抽出(ステップS92)。CPU11は、ステップS91で抽出した移行時刻から、ステップS92で抽出したサンプリング時刻を減じることで差分を算出する(ステップS93)。CPU11は、サンプリング時刻に対応するPID、プロセス名及び関数名を、サンプリングテーブル154から読み出す(ステップS94)。
CPU11は、ステップS93で算出した差分と、ステップS94で読み出したPID、プロセス名及び関数名とを対応付けて、差分テーブル156に記憶する(ステップS95)。CPU11は、移行時刻テーブル155に記憶した全ての移行時刻について上述した処理を終了したか否かを判断する(ステップS96)。CPU11は、終了していないと判断した場合(ステップS96でNO)、処理をステップS97へ移行させる。CPU11は、移行時刻テーブル155を参照し、時系列で次の移行時刻を読み出す(ステップS97)。その後CPU11は処理をステップS92に戻す。これにより、関数名及び差分が蓄積されることとなる。CPU11は、全ての移行時刻について処理を終了したと判断した場合(ステップS96でYES)、処理を終了する。
図10はアイドル原因となる可能性の高い関数の抽出処理手順を示すフローチャートである。CPU11は、関数を差分テーブル156から読み出す(ステップS101)。CPU11は、関数に対応する差分を差分テーブル156から読み出す(ステップS102)。CPU11は、記憶部15から複数の時系列で連続する複数の時間帯を読み出す。CPU11は、読み出した各時間帯に属する差分の数を計数する(ステップS103)。CPU11は、関数及び時間帯に対応付けて、計数した数を統計テーブル157に記憶する(ステップS104)。これにより一の関数について、各時間帯に属する差分の数を把握することができる。
CPU11は、全ての関数について処理を終了したか否かを判断する(ステップS105)。CPU11は、処理を終了していないと判断した場合(ステップS105でNO)、未処理の関数を差分テーブル156から読み出す(ステップS106)。その後、CPU11は、処理をステップS102に戻す。CPU11は、全ての関数について処理を終了したと判断した場合(ステップS105でYES)、ステップS107へ移行する。以上の処理を繰り返すことにより、全ての関数の、差分分布を取得できる。
CPU11は、統計テーブル157を参照し、差分が最も短い時間帯に分類された数が最も多い関数を抽出する(ステップS107)。CPU11は、抽出した関数を表示部14へ出力する(ステップS108)。なお、抽出した関数の出力先は表示部14に限るものではない。図示しないマイクから音声出力するほか、図示しない他のコンピュータへインターネット等の通信網を介して出力するようにしても良い。
続いて効果を確認すべく実験を行った。図11はサンプリング結果を示す説明図である。ユーザプログラム153は関数A、関数B及び関数Cの3つであり、50μsの周期でサンプリング処理を行った。なお、関数Aがアイドル原因となる関数である。図11Aはアイドル関数、関数A〜C毎に対するサンプリング数の比率を示す。アイドル関数として抽出された割合は76.4%であり、関数Aは4.2%、関数Bは10.9%、関数Cは8.6%であった。アイドル状態にある割合が高いことが分かるほか、関数Bの占める割合も大きいことが分かる。
続いて移行時刻直前にサンプリングした関数の数について調査した。図11Bは関数A〜Cに対する移行時刻直前のサンプリング数及び比率を示す。関数Aのサンプリング数は4138であり、比率は17.6%、関数Bのサンプリング数は10867であり、比率は46.2%、関数Cのサンプリング数は8534であり、比率は36.3%であった。アイドル状態に移行する直前にサンプリングにより得られた関数の計数値だけに依拠して判断した場合、関数Bがアイドル原因に係る関数であると誤認識してしまう。
図12は統計テーブル157に記憶されたデータの変化を示すグラフである。図12に示すように本実施形態に係る手法では差分の最も短い時間帯が、最も多い関数は関数Aであることが顕著に表れている。一方、関数B及び関数Cは相対的に差分が長い時間帯に集中している。以上のことから本実施形態に係る手法ではアイドル原因となる関数を、関数Aと精度良く特定することが可能となる。
実施の形態2
実施の形態2は、アイドル原因となる関数を複数の時間帯の数に基づき決定する形態に関する。実施の形態1では差分の最も短い時間帯、図6の例では5μs未満の数が最大の関数を特定したが、これに限るものではない。各時間帯に重みを設定し、重みに応じて各時間帯の数を補正しても良い。また、最も短い時間帯の数が、関数間で大差ない場合、次に短い時間帯の数に基づき関数を特定しても良い。以下詳細を説明する。
図13及び図14は実施の形態2に係る関数の特定処理手順を示すフローチャートである。CPU11は、統計テーブル157を参照し、最も短い時間帯に分類された数が最も多い関数(以下、第1関数という)を抽出する(ステップS131)。CPU11は、最も短い時間帯に分類された数が次に多い関数(以下、第2関数という)を抽出する(ステップS132)。CPU11は、ステップS131で抽出した第1関数の数から、ステップS132で抽出した第2関数の数を減算する(ステップS133)。CPU11は、記憶部15に予め記憶した閾値を読み出す(ステップS134)。
CPU11は、ステップS133で算出した減算値は閾値を超えるか否かを判断する(ステップS135)。CPU11は、減算値は閾値を超えると判断した場合(ステップS135でYES)、処理をステップS139へ移行させる。CPU11は、第1関数を、アイドル原因と推定される関数として、出力する(ステップS139)。CPU11は、減算値は閾値を超えないと判断した場合(ステップS135でNO)、ステップS136へ処理を移行させる。CPU11は、第1関数について、次に短い時間帯に分類された数を抽出する(ステップS136)。
CPU11は、第2関数について、次に短い時間帯に分類された数を抽出する(ステップS137)。CPU11は、ステップS136で抽出した数と、ステップS137で抽出した数とを比較し、抽出した数の多い関数を、アイドル原因と推定される関数として、出力する(ステップS138)。これにより、判別しがたい特性を有する関数についても、より精度良くアイドル原因となる関数を特定することが可能となる。
本実施の形態2は以上の如きであり、その他は実施の形態1と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態3
実施の形態3は、アイドル関数からユーザ関数へ移行する際の終了時刻を利用する形態に関する。図15は実施の形態3に係るコンピュータ1のハードウェア群を示すブロック図である。記憶部15にはさらに終了時刻テーブル158、終了差分テーブル159、移行統計テーブル1510、及び終了統計テーブル1511が設けられている。図16はサンプリング処理のイメージを示す説明図である。実施の形態1の処理に加え、CPU11は、実施の形態1と同じくデバッグ機能、または、OS151のイベント登録機能を利用し、アイドル関数からユーザ関数への切り替えを検出した場合、プロファイラ152を呼び出し、アイドル状態からユーザ関数の実行へ復帰した時刻(以下、終了時刻という)を取得する。なお、実施の形態2においてもデバッグ機能を用いる例を挙げて説明する。図16の終了時刻は、上向き点線矢印で示されている。CPU11は、終了時刻検出直後のサンプリング時刻との差分を算出する。CPU11は、終了時刻に基づき算出した差分をも考慮して、アイドル原因となる関数を特定する。
図17は終了時刻テーブル158のレコードレイアウトを示す説明図である。CPU11は、デバッグ機能を利用し、アイドル関数からユーザ関数への切り替えを検出した場合、プロファイラ152を呼び出し、アイドル状態からユーザ関数の実行へ復帰した時刻を取得する。CPU11は、終了時刻を取得する度に、取得した終了時刻を終了時刻テーブル158に記憶する。
図18は終了差分テーブル159のレコードレイアウトを示す説明図である。終了差分テーブル159は、PIDフィールド、プロセス名フィールド、関数名フィールド及び差分フィールド等を含む。CPU11は、サンプリングテーブル154及び終了時刻テーブル158の記憶内容に基づき、終了差分テーブル159を生成する。CPU11は、サンプリングテーブル154及び終了時刻テーブル158を参照し、終了時刻の直後のサンプリング時刻を抽出する。CPU11は、サンプリングテーブル154を参照し、抽出したサンプリング時刻に対応するPID、プロセス名、関数名を抽出する。
CPU11は、終了差分テーブル159に抽出したPID、プロセス名及び関数名を記憶する。CPU11は、終了時刻と直後のサンプリング時刻との差分を求め、差分フィールドに記憶する。なお、差分フィールドには参考のためかっこ内に、実時間を単位μsとして記載している。
図19は移行統計テーブル1510のレコードレイアウトを示す説明図である。移行統計テーブル1510の記憶内容は、実施の形態1で述べた統計テーブル157と同様であるので詳細な説明は省略する。図20は終了統計テーブル1511のレコードレイアウトを示す説明図である。CPU11は、図18に示す終了差分テーブル159を参照し、各関数の差分分布を、予め記憶部15に記憶した差分の時間帯に基づき分類する。この時間帯は、図19に示す移行統計テーブル1510と同じ時間帯とすればよい。
CPU11は、終了差分テーブル159を参照し、関数名及び差分に基づき、関数毎に時間帯に属する差分の数を計数する。図20の例では「func_a」で示す関数aは、5μs未満の差分の個数が2013であり、5μs以上10μs未満の個数は4であることが理解できる。また「func_b」で示す関数bは、5μS未満の差分の個数が184であり、5μs以上10μs未満の個数は1865であることが理解できる。同様に「func_c」で示す関数cは、5μs未満の差分の個数が139であり、5μs以上10μs未満の個数は1827であることが理解できる。
図21は実施の形態2に係る統計テーブル157のレコードレイアウトを示す説明図である。統計テーブル157は図19に示す移行統計テーブル1510と、終了統計テーブル1511とを合算したものである。CPU11は、移行統計テーブル1510及び終了統計テーブル1511を参照し、関数毎に、各時間帯の移行時刻に基づき算出される差分の数と、終了時刻に基づき算出される差分の数との合計値を算出する。CPU11は、合計値を関数及び時間帯に対応付けて統計テーブル157に記憶する。図21の例では「func_a」で示す関数aは、5μs未満の差分の個数が4028であり、5μs以上10μs未満の個数は6であることが理解できる。また「func_b」で示す関数bは、5μs未満の差分の個数が370であり、5μs以上10μs未満の個数は3726であることが理解できる。同様に「func_c」で示す関数cは、5μs未満の差分の個数が283であり、5μs以上10μs未満の個数は3649であることが理解できる。
図22は終了時刻の取得処理手順を示すフローチャートである。CPU11は、デバッグ機能によりアイドル状態からユーザプログラム153の実行への復帰を検出したか否かを判断する(ステップS221)。CPU11は、復帰を検出していないと判断した場合(ステップS221でNO)、復帰を検出するまで待機する。CPU11は、復帰を検出した場合(ステップS221でYES)、ステップS222へ移行する。CPU11は、プロファイラ152により終了時刻を取得する(ステップS222)。CPU11は、取得した終了時刻を終了時刻テーブル158に記憶する(ステップS223)。
図23は終了時刻に係る差分及び関数の抽出処理手順を示すフローチャートである。CPU11は、終了時刻テーブル158を参照し、終了時刻を抽出(ステップS231)。CPU11は、サンプリングテーブル154を参照し、終了時刻直後のサンプリング時刻を抽出(ステップS232)。CPU11は、ステップS232で抽出したサンプリング時刻から、ステップS231で抽出した終了時刻を減じることで差分を算出する(ステップS233)。CPU11は、サンプリング時刻に対応するPID、プロセス名及び関数名を、サンプリングテーブル154から読み出す(ステップS234)。
CPU11は、ステップS233で算出した差分と、ステップS234で読み出したPID、プロセス名及び関数名とを対応付けて、終了差分テーブル159に記憶する(ステップS235)。CPU11は、終了時刻テーブル158に記憶した全ての終了時刻について上述した処理を終了したか否かを判断する(ステップS236)。CPU11は、終了していないと判断した場合(ステップS236でNO)、処理をステップS237へ移行させる。CPU11は、終了時刻テーブル158を参照し、時系列で次の終了時刻を読み出す(ステップS237)。その後CPU11は処理をステップS232に戻す。これにより、関数名及び差分が蓄積されることとなる。CPU11は、全ての終了時刻について処理を終了したと判断した場合(ステップS236でYES)、処理を終了する。
図24はアイドル原因となる可能性の高い関数の抽出処理手順を示すフローチャートである。CPU11は、関数を終了差分テーブル159から読み出す(ステップS241)。CPU11は、関数に対応する差分を終了差分テーブル159から読み出す(ステップS242)。CPU11は、記憶部15から複数の時系列で連続する複数の時間帯を読み出す。CPU11は、読み出した各時間帯に属する差分の数を計数する(ステップS243)。CPU11は、関数及び時間帯に対応付けて、計数した数を終了統計テーブル1511に記憶する(ステップS244)。
CPU11は、全ての関数について処理を終了したか否かを判断する(ステップS245)。CPU11は、処理を終了していないと判断した場合(ステップS245でNO)、未処理の関数を終了差分テーブル159から読み出す(ステップS246)。その後、CPU11は、処理をステップS242に戻す。CPU11は、全ての関数について処理を終了したと判断した場合(ステップS245でYES)、ステップS247へ移行する。以上の処理を繰り返すことにより、全ての関数の、差分分布を取得できる。
CPU11は、図10で述べた処理により生成した統計テーブル157を移行統計テーブル1510として読み出し、さらに、ステップS241〜S246の処理で生成した終了統計テーブル1511を読み出す(ステップS247)。CPU11は、移行統計テーブル1510及び終了統計テーブル1511を参照し、各関数の時間帯の合計値を算出し、統計テーブル157を生成する(ステップS248)。
CPU11は、統計テーブル157を参照し、差分が最も短い時間帯に分類された数が最も多い関数を抽出する(ステップS249)。CPU11は、抽出した関数を表示部14へ出力する(ステップS2410)。このように、アイドル状態からプログラム関数の実行に復帰する回数の多い関数をも考慮するため、より精度良くアイドル原因となる関数を特定することが可能となる。
本実施の形態3は以上の如きであり、その他は実施の形態1及び2と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態4
実施の形態4は移行統計テーブル1510または終了統計テーブル1511の数に重み付け処理を行う形態に関する。図25は重み付け処理の手順を示すフローチャートである。CPU11は、移行統計テーブル1510を参照し、最も短い時間帯に分類された各関数の数を読み出す(ステップS251)。CPU11は、終了統計テーブル1511を参照し、最も短い時間帯に分類された各関数の数を読み出す(ステップS252)。CPU11は、記憶部15に予め記憶した重みとしての係数を読み出す(ステップS253)。CPU11は、終了統計テーブル1511についてステップS252にて読み出した各関数の数に、係数を乗じ、各関数の数を補正する(ステップS254)。
この係数は例えば1より小さい数(例えば0.8)、または、1より大きい数(例えば1.2)とすればよい。なお、本実施形態では終了統計テーブル1511の数に係数を乗じたが、ステップS251で読み出した移行統計テーブル1510の数に係数を乗じても良い。また双方に異なる値を乗じても良い。CPU11は、ステップS251にて移行統計テーブル1510について読み出した各関数の数と、ステップS254にて補正した補正後の各関数の数とを加算する(ステップS255)。CPU11は、加算値が最も大きい関数を、アイドル原因となる関数として出力する(ステップS256)。なお、本実施形態では、最も短い時間帯に分類された各関数の数に重み付け処理を行ったがこれに限るものではない。他の時間帯に分類された各関数の数にも重み付け処理を行っても良い。そして、CPU11は、移行統計テーブル1510と補正後の終了統計テーブル1511の全ての時間帯に分類された数を加算する。その後、CPU11は、実施の形態2で述べた如く、最も短い時間帯の数と、次に短い時間帯の数とに基づき、アイドル原因となる関数を特定するようにしても良い。以上のとおり、関数の特性に応じて重み付け処理を行うことで、より精度良くアイドル要因となる関数を特定することが可能となる。
本実施の形態4は以上の如きであり、その他は実施の形態1から3と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態5
図26は上述した形態のコンピュータ1の動作を示す機能ブロック図である。CPU11が制御プログラム15Pを実行することにより、コンピュータ1は以下のように動作する。関数情報採取部261は、実行中の関数を示す情報である関数情報を所定間隔で採取するとともに、前記関数情報と前記関数情報とを採取した時刻であるサンプリング時刻を記憶部15に記憶する。移行取得部262は、CPU11がアイドル状態に移行した場合、移行時刻を取得して前記記憶部15に記憶する。抽出部263は、前記記憶部15に記憶した移行時刻と、前記記憶部15に記憶したサンプリング時刻のうち前記移行時刻直前のサンプリング時刻との差分、及び、前記サンプリング時刻に対応する関数情報を抽出する。特定部264は、抽出部263が抽出した各関数情報に対応する差分の分布に基づき、アイドル原因となる関数を特定する。分類部265は、複数の差分の時間帯別に、各関数の差分を分類する。関数特定部267は、差分が短い時間帯に分類された数に基づき、前記アイドル原因となる関数を特定する。
図27は実施の形態5に係るコンピュータ1のハードウェア群を示すブロック図である。コンピュータ1を動作させるためのプログラムは、ディスクドライブ等の読み取り部10AにCD-ROM、DVD(Digital Versatile Disc)ディスク、メモリーカード、またはUSB(Universal Serial Bus)メモリ等の可搬型記録媒体1Aを読み取らせて記憶部15に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ1Bをコンピュータ1内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網を介して接続される他のサーバコンピュータ(図示せず)からダウンロードすることも可能である。以下に、その内容を説明する。
図27に示すコンピュータ1は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体1Aまたは半導体メモリ1Bから読み取り、或いは、通信網を介して他のサーバコンピュータ(図示せず)からダウンロードする。当該プログラムは、制御プログラム15Pとしてインストールされ、RAM12にロードして実行される。これにより、上述したコンピュータ1として機能する。
本実施の形態5は以上の如きであり、その他は実施の形態1と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
以上の実施の形態1から5を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
プログラムを実行する演算処理部と、
実行中の関数を示す情報である関数情報を所定間隔で採取するとともに、前記関数情報と前記関数情報とを採取した時刻であるサンプリング時刻を記憶部に記憶する関数情報採取部と、
前記演算処理部がアイドル状態に移行した場合、移行時刻を取得して前記記憶部に記憶する移行取得部と、
前記記憶部に記憶した移行時刻と、前記記憶部に記憶したサンプリング時刻のうち前記移行時刻直前のサンプリング時刻との差分、及び、前記サンプリング時刻に対応する関数情報を抽出する抽出部と、
該抽出部が抽出した各関数情報に対応する差分の分布に基づき、アイドル原因となる関数を特定する特定部と
を備える情報処理装置。
(付記2)
前記特定部は、
複数の差分の時間帯別に、各関数の差分を分類する分類部と、
差分が短い時間帯に分類された数に基づき、前記アイドル原因となる関数を特定する関数特定部と
を備える付記1に記載の情報処理装置。
(付記3)
前記関数特定部は、
最も短い時間帯に分類された数が最も大きい関数を、前記アイドル原因となる関数として特定する
付記2に記載の情報処理装置。
(付記4)
アイドル状態が終了した場合に、終了時刻を取得する終了取得部と、
終了時刻と該終了時刻直後のサンプリング時刻との差分、及び、前記サンプリング時刻に対応する関数を抽出する終了抽出部とを備え、
前記特定部は、
前記抽出部及び前記終了抽出部により抽出した各関数の差分分布に基づき、アイドル原因となる関数を特定する
付記1に記載の情報処理装置。
(付記5)
前記特定部は、
複数の差分の時間帯別に、前記抽出部及び前記終了抽出部により抽出した各関数の差分を分類する複数分類部と、
差分が短い時間帯に分類された数の大きい関数を特定する複数特定部と
を備える付記4に記載の情報処理装置。
(付記6)
前記抽出部により抽出した各関数の時間帯別に分類された数、または、前記終了抽出部により抽出した各関数の時間帯別に分類された数に対し重み付け処理する重量部を備え、
前記複数特定部は、
前記重量部により重み付け処理された後に、差分が短い時間帯に分類された数の大きい関数を特定する
付記4に記載の情報処理装置。
(付記7)
前記複数特定部は、
前記重量部により重み付け処理された後に、差分が最も短い時間帯に分類された数の最も大きい関数を特定する
付記6に記載の情報処理装置。
(付記8)
プログラムを実行する演算処理部と、記憶部とを有する情報処理装置の解析方法において、
前記情報処理装置が、
実行中の関数を示す情報である関数情報を所定間隔で採取するとともに、前記関数情報と前記関数情報とを採取した時刻であるサンプリング時刻を前記記憶部に記憶し、
前記演算処理部がアイドル状態に移行した場合、移行時刻を取得して前記記憶部に記憶し、
前記記憶部に記憶した移行時刻と、前記記憶部に記憶したサンプリング時刻のうち前記移行時刻直前のサンプリング時刻との差分、及び、前記サンプリング時刻に対応する関数情報を抽出する抽出部と、
抽出された各関数情報に対応する差分の分布に基づき、アイドル原因となる関数を特定する情報処理装置の解析方法。
(付記9)
プログラムを実行する演算処理部と、記憶部とを有する情報処理装置の解析プログラムにおいて、
前記情報処理装置に、
実行中の関数を示す情報である関数情報を所定間隔で採取させるとともに、前記関数情報と前記関数情報とを採取した時刻であるサンプリング時刻を前記記憶部に記憶させ、
前記演算処理部がアイドル状態に移行した場合、移行時刻を取得して前記記憶部に記憶させ、
前記記憶部に記憶した移行時刻と、前記記憶部に記憶したサンプリング時刻のうち前記移行時刻直前のサンプリング時刻との差分、及び、前記サンプリング時刻に対応する関数情報を抽出させ、
抽出された各関数情報に対応する差分の分布に基づき、アイドル原因となる関数を特定させる情報処理装置の解析プログラム。
1 情報処理装置
1A 可搬型記録媒体
1B 半導体メモリ
10A 読み取り部
11 CPU
12 RAM
13 入力部
14 表示部
15 記憶部
15P 制御プログラム
16 通信部
18 時計部
151 OS
152 プロファイラ
153 ユーザプログラム
154 サンプリングテーブル
155 移行時刻テーブル
156 差分テーブル
157 統計テーブル
158 終了時刻テーブル
159 終了差分テーブル
1510 移行統計テーブル
1511 終了統計テーブル
261 関数情報採取部
262 移行取得部
263 抽出部
264 特定部
265 分類部
267 関数特定部

Claims (5)

  1. プログラムを実行する演算処理部と、
    実行中の関数を示す情報である関数情報を所定間隔で採取するとともに、前記関数情報と前記関数情報とを採取した時刻であるサンプリング時刻を記憶部に記憶する関数情報採取部と、
    前記演算処理部がアイドル状態に移行した場合、移行時刻を取得して前記記憶部に記憶する移行取得部と、
    前記記憶部に記憶した移行時刻と、前記記憶部に記憶したサンプリング時刻のうち前記移行時刻直前のサンプリング時刻との差分、及び、前記サンプリング時刻に対応する関数情報を抽出する抽出部と、
    該抽出部が抽出した各関数情報に対応する差分の分布に基づき、アイドル原因となる関数を特定する特定部と
    を備える情報処理装置。
  2. 前記特定部は、
    複数の差分の時間帯別に、各関数の差分を分類する分類部と、
    差分が短い時間帯に分類された数に基づき、前記アイドル原因となる関数を特定する関数特定部と
    を備える請求項1に記載の情報処理装置。
  3. 前記関数特定部は、
    最も短い時間帯に分類された数が最も大きい関数を、前記アイドル原因となる関数として特定する
    請求項2に記載の情報処理装置。
  4. プログラムを実行する演算処理部と、記憶部とを有する情報処理装置の解析方法において、
    前記情報処理装置が、
    実行中の関数を示す情報である関数情報を所定間隔で採取するとともに、前記関数情報と前記関数情報とを採取した時刻であるサンプリング時刻を前記記憶部に記憶し、
    前記演算処理部がアイドル状態に移行した場合、移行時刻を取得して前記記憶部に記憶し、
    前記記憶部に記憶した移行時刻と、前記記憶部に記憶したサンプリング時刻のうち前記移行時刻直前のサンプリング時刻との差分、及び、前記サンプリング時刻に対応する関数情報を抽出する抽出部と、
    抽出された各関数情報に対応する差分の分布に基づき、アイドル原因となる関数を特定する情報処理装置の解析方法。
  5. プログラムを実行する演算処理部と、記憶部とを有する情報処理装置の解析プログラムにおいて、
    前記情報処理装置に、
    実行中の関数を示す情報である関数情報を所定間隔で採取させるとともに、前記関数情報と前記関数情報とを採取した時刻であるサンプリング時刻を前記記憶部に記憶させ、
    前記演算処理部がアイドル状態に移行した場合、移行時刻を取得して前記記憶部に記憶させ、
    前記記憶部に記憶した移行時刻と、前記記憶部に記憶したサンプリング時刻のうち前記移行時刻直前のサンプリング時刻との差分、及び、前記サンプリング時刻に対応する関数情報を抽出させ、
    抽出された各関数情報に対応する差分の分布に基づき、アイドル原因となる関数を特定させる情報処理装置の解析プログラム。
JP2013227686A 2013-10-31 2013-10-31 情報処理装置、情報処理装置の解析方法および情報処理装置の解析プログラム Expired - Fee Related JP6131829B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013227686A JP6131829B2 (ja) 2013-10-31 2013-10-31 情報処理装置、情報処理装置の解析方法および情報処理装置の解析プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013227686A JP6131829B2 (ja) 2013-10-31 2013-10-31 情報処理装置、情報処理装置の解析方法および情報処理装置の解析プログラム

Publications (2)

Publication Number Publication Date
JP2015088068A JP2015088068A (ja) 2015-05-07
JP6131829B2 true JP6131829B2 (ja) 2017-05-24

Family

ID=53050756

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013227686A Expired - Fee Related JP6131829B2 (ja) 2013-10-31 2013-10-31 情報処理装置、情報処理装置の解析方法および情報処理装置の解析プログラム

Country Status (1)

Country Link
JP (1) JP6131829B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2728601B2 (ja) * 1992-08-06 1998-03-18 富士通株式会社 並列処理の性能評価装置
JP4562641B2 (ja) * 2005-11-09 2010-10-13 富士通テン株式会社 コンピュータシステム、動作状態判定プログラムおよび動作状態判定方法
JP4899511B2 (ja) * 2006-02-08 2012-03-21 富士通株式会社 システム分析プログラム、システム分析装置、およびシステム分析方法
JP5428912B2 (ja) * 2010-02-08 2014-02-26 富士通株式会社 集計方法、集計プログラム、集計装置
JP6075204B2 (ja) * 2013-05-17 2017-02-08 富士通株式会社 性能情報収集プログラム、情報処理装置及び性能情報収集方法

Also Published As

Publication number Publication date
JP2015088068A (ja) 2015-05-07

Similar Documents

Publication Publication Date Title
EP3506185A1 (en) Method for training model and information recommendation system
US10216558B1 (en) Predicting drive failures
CN105608199B (zh) 用于智能问答系统中的标准问的扩展方法和装置
CN110019668A (zh) 一种文本检索方法及装置
JPWO2008129635A1 (ja) 性能障害要因分析プログラムおよび性能障害要因分析装置
JP2015026197A (ja) ジョブ遅延検知方法、情報処理装置、およびプログラム
US9778737B1 (en) Game recommendations based on gesture type
KR20190128246A (ko) 검색 방법 및 장치 및 비-일시적 컴퓨터-판독가능 저장 매체
CN111191836A (zh) 一种井漏预测方法、装置及设备
TW202038217A (zh) 資料標籤產生、模型訓練、事件識別方法和裝置
CN108604142B (zh) 一种触屏设备操作方法及触屏设备
JP2011145996A (ja) レビューワ評価装置、レビューワ評価方法、及びプログラム
CN112966964A (zh) 基于设计需求的产品匹配方法、装置、设备及存储介质
JP6131829B2 (ja) 情報処理装置、情報処理装置の解析方法および情報処理装置の解析プログラム
CN117234859A (zh) 一种性能事件监控方法、装置、设备和存储介质
CN111222051A (zh) 一种趋势预测模型的训练方法及装置
JP5292247B2 (ja) コンテンツタグ収集方法、コンテンツタグ収集用プログラム、コンテンツタグ収集システム及びコンテンツ検索システム
CN108804917B (zh) 一种文件检测方法、装置、电子设备及存储介质
JP2018014000A (ja) テスト支援プログラム、テスト支援装置、及びテスト支援方法
JP6390085B2 (ja) プログラム、情報処理装置、及び、情報処理方法
US20220051077A1 (en) System and method for selecting components in designing machine learning models
JP6048119B2 (ja) 異常原因推定プログラム、異常原因推定装置及び異常原因推定方法
JP5361090B2 (ja) 話題語獲得装置、方法、及びプログラム
JP2020038514A (ja) 学習データ生成装置、学習データ生成方法、及びプログラム
JP2016091138A (ja) ソースコード検証システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160705

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170314

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170321

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170403

R150 Certificate of patent or registration of utility model

Ref document number: 6131829

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees