JP6437226B2 - 情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システム - Google Patents

情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システム Download PDF

Info

Publication number
JP6437226B2
JP6437226B2 JP2014144506A JP2014144506A JP6437226B2 JP 6437226 B2 JP6437226 B2 JP 6437226B2 JP 2014144506 A JP2014144506 A JP 2014144506A JP 2014144506 A JP2014144506 A JP 2014144506A JP 6437226 B2 JP6437226 B2 JP 6437226B2
Authority
JP
Japan
Prior art keywords
information
event
axis
area
condition
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.)
Active
Application number
JP2014144506A
Other languages
English (en)
Other versions
JP2015043197A5 (ja
JP2015043197A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2014144506A priority Critical patent/JP6437226B2/ja
Priority to US14/333,778 priority patent/US9285949B2/en
Publication of JP2015043197A publication Critical patent/JP2015043197A/ja
Publication of JP2015043197A5 publication Critical patent/JP2015043197A5/ja
Application granted granted Critical
Publication of JP6437226B2 publication Critical patent/JP6437226B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明の実施形態は、情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システムに関する。
従来、プログラムの実行トレースに基づいて実行されたスレッドを表すスレッドオブジェクトとイベントとを、時間軸とスレッドの軸とからなる2次元平面に表示するプログラム実行状況表示に関する技術がある。この技術は、プログラムの全実行状況のアクティビティを表示する領域と、特定範囲の詳細実行状況をスレッド軸と時間軸とを用いて表示する領域とを持ち、全実行状況を表示する領域から特定範囲を指定する機能をユーザに提供する。これにより、対話的にプログラムの全実行状況から特定箇所の詳細情報を表示することを可能としている。
プログラム開発者がプログラム開発時にプログラムの実行状況を表示することで動作の確認や性能最適化等を行う場合、表示装置にプログラムの実行状況を表示するが、その場合、実行状況の表示領域が表示装置の画面サイズに制限される。そのため、プログラムの詳細実行状況を表示する領域に大量のイベントを表示する場合には、プログラムの詳細実行状況の把握が困難となる場合がある。例えば、表示装置の表示サイズ制約から全イベントの情報を同時に表示できない場合がある。また、全イベントの情報を同時に表示した際に、イベントを表すオブジェクトの表示サイズが目視により視認できない程度に極めて小さいサイズとなる場合や、表示装置の描画性能で識別可能に表示できない場合などが存在する。
米国特許第7698686号明細書
以下の実施形態では、複数のイベントを含む領域を表示することで、大量のイベントの実行状況をユーザに容易に把握させることが可能な情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システムを提供することを目的とする。
実施形態にかかる情報処理システムは、複数のイベントの発生時間または発生順序に関する時系列情報を含むイベント情報を取得する第1取得部と、時系列の第1座標軸を決定する第1軸情報を含む軸情報を取得する第2取得部と、前記複数のイベントのうちの1以上のイベントが当てはまる条件を指定する指定条件情報を取得する第3取得部と、前記軸情報に基づいて、前記第1座標軸を表す第1軸オブジェクトを生成する第1生成部と、前記指定条件情報で指定される条件に当てはまる前記1以上のイベントの前記イベント情報と前記第1軸情報とに基づいて前記条件を表す領域オブジェクトを生成する第2生成部と、を備え、前記第2生成部は、前記指定条件情報で指定される条件に当てはまる前記1以上のイベントそれぞれの始点のうちの最先の始点に基づいて、前記領域オブジェクトの前記第1座標軸における始点座標を決定するとともに、前記指定条件情報で指定される条件に当てはまる前記1以上のイベントそれぞれの終点のうちの最後の終点に基づいて、前記領域オブジェクトの前記第1座標軸における終点座標を決定してもよい。
実施形態にかかるプログラム情報生成方法は、複数のイベントの発生時間または発生順序に関する時系列情報を含むイベント情報を取得し、時系列の第1座標軸を決定する第1軸情報を含む軸情報を取得し、前記複数のイベントのうちの1以上のイベントが当てはまる条件を指定する指定条件を取得し、前記軸情報に基づいて、前記第1座標軸を表す第1軸オブジェクトを生成し、前記指定条件で指定される条件に当てはまる前記1以上のイベントの前記イベント情報それぞれの始点のうちの最先の始点に基づいて前記第1座標軸における始点座標を決定し、前記指定条件で指定される条件に当てはまる前記1以上のイベントの前記イベント情報それぞれの終点のうちの最後の終点に基づいて前記第1座標軸における終点座標を決定し、前記始点座標と前記終点座標と前記第1軸情報とに基づいて前記条件を表す領域オブジェクトを生成する、ことを含んでもよい。
実施形態にかかるプログラム情報生成プログラムは、複数のイベントを含むプログラムの情報を生成するコンピュータを機能させるためのプログラム情報生成プログラムであって、複数のイベントの発生時間または発生順序に関する時系列情報を含むイベント情報を取得する第1取得処理と、時系列の第1座標軸を決定する第1軸情報を含む軸情報を取得する第2取得処理と、前記複数のイベントのうちの1以上のイベントが当てはまる条件を指定する指定条件を取得する第3取得処理と、前記軸情報に基づいて、前記第1座標軸を表す第1軸オブジェクトを生成する第1生成処理と、前記指定条件で指定される条件に当てはまる前記1以上のイベントの前記イベント情報と前記第1軸情報とに基づいて前記条件を表す領域オブジェクトを生成する第2生成処理と、を前記コンピュータに実行させ、前記第2生成処理は、前記指定条件で指定される条件に当てはまる前記1以上のイベントそれぞれの始点のうちの最先の始点に基づいて、前記領域オブジェクトの前記第1座標軸における始点座標を決定するとともに、前記指定条件で指定される条件に当てはまる前記1以上のイベントそれぞれの終点のうちの最後の終点に基づいて、前記領域オブジェクトの前記第1座標軸における終点座標を決定してもよい。
図1は、実施形態1で用いるプログラム例。 図2は、図1に示すプログラムの実行状況の表示例。 図3は、図1に示すプログラムの実行状況の他の表示例。 図4は、実施形態1に係るプログラム実行状況表示装置の構成例。 図5は、実施形態1に係るプログラム実行状況表示装置の動作例。 図6は、実施形態1に係るイベント情報の一例。 図7は、実施形態1に係る軸情報の一例。 図8は、実施形態1に係る領域指定条件候補情報の一例。 図9は、実施形態1に係るヒントオブジェクトの表示例。 図10は、実施形態1に係る領域指定条件情報の一例。 図11は、実施形態1に係る領域情報の一例。 図12は、実施形態1に係る条件選択後のプログラム実行状況の表示例。 図13は、実施形態2で用いるプログラム例。 図14は、図13に示すプログラムの実行状況例。 図15は、図13に示すプログラムの実行状況の表示例。 図16は、図13に示すプログラムの実行状況の他の表示例。 図17は、実施形態2に係るイベント情報の一例。 図18は、実施形態2に係る軸情報の一例。 図19は、実施形態2に係る領域指定条件候補情報の一例。 図20は、実施形態2に係るヒントオブジェクトの表示例。 図21は、実施形態2に係る領域指定条件情報の一例。 図22は、実施形態2に係る領域情報の一例。 図23は、実施形態2に係る条件選択後のプログラム実行状況の表示例。 図24は、図13に示すプログラムの実行状況の表示例。 図25は、図13に示すプログラムの実行状況の他の表示例。 図26は、図13に示すプログラムの実行状況のさらに他の表示例。 図27は、実施形態3に係るイベント情報の一例。 図28は、実施形態3に係る軸情報の一例。 図29は、実施形態3に係る領域指定条件情報の一例。 図30は、実施形態3に係る領域情報の一例。 図31は、実施形態3に係る条件選択後のプログラム実行状況の表示例。 図32は、実施形態4に係る条件選択後のプログラム実行状況の表示例。
以下、例示する実施形態にかかる情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システムを、図面を用いて詳細に説明する。
実施形態1
まず、実施形態1にかかる情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システムについて説明するにあたり、以下で使用する用語の定義について、いくつか説明する。
実施形態1では、図1に例示するソフトウエアプログラム(以下、ソフトウエアプログラムを単にプログラムという)101を45個のプロセッサコアを持つハードウェアで実行した際の実行状況を表示する場合を例に挙げる。図1に示すように、プログラム101には、“taskA”102、“taskB”103、“taskC”104、“taskD”105、および“taskE”106の合計5種類のイベントが含まれている。
プログラムの実行状況とは、プログラムの実行時に発生するイベントの発生時点とイベントの移り変わりを示すことである。また、情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システムとは、それぞれ、時系列軸と属性軸とで表現される座標系にプログラムの実行状況を描画して表示するシステム、方法およびプログラムを示す。実施形態1では、時系列軸として、実行時刻を要素とする軸を用い、属性軸として、イベントを実行したプロセッサコア名を要素とする軸を用いる。
また、イベントとは、プログラムやプロセスの実行時に発生する処理の単位である。これは、関数やループや条件分岐等のプログラムの構成単位であってもよいし、メモリアクセス、命令実行、スレッド生成、同期処理等の特定の処理であってもよい。
また、時系列軸オブジェクトとは、時系列の点の座標を決める基準となる図である。これは、基準となり得ればよく、例えば、線であってもよいし、点であってもよいし、数字や文字列であってもよし、その他時系列の点の座標を決める基準となる図形であれば如何様にも変形することができる。
また、属性軸オブジェクトとは、属性の点の座標を決める基準となる図である。これは、基準となり得ればよく、例えば、線であってもよいし、点であってもよいし、数字や文字列であってもよし、その他属性の点の座標を決める基準となる図形であれば如何様にも変形することができる。
また、領域オブジェクトとは、時系列軸方向の領域を表す図形であり、例えば、線であってもよいし、長方形であってもよいし、その他領域を表す図形であれば如何様にも変形することができる。
また、イベントオブジェクトとは、イベントを表現する図であり、例えば、線であってもよいし、長方形であってもよいし、その他イベントを表現する図形であれば如何様にも変形することができる。
表示装置である表示画面サイズもしくは表示ウインドウサイズには限りがある。そのため、一度に表示可能な属性軸の要素の数には限りがある。そこで、本実施形態では、イベントを実行したプロセッサコア名を要素に持つ属性軸を表示領域の軸に用いる。その場合、属性軸の全要素数はプロセッサコア数と等価となるため、45となる。
図2および図3に、従来技術を用いてプログラムの実行状況を表示した場合の例を示す。図2は、属性軸要素の表示サイズを固定した場合の表示例を示す図である。図2に示すように、同時に表示可能な属性軸要素204の数を3とすると、属性軸203の全要素を同時に表示することができない。そのため、表示可能なイベントは、属性“core0”,“core1”および“core2”に関するイベント205、206、207および209となり、属性“core3”の以降の属性軸要素については、イベント(たとえばイベント308以降のイベント)を正確に表示することができない。これは、時系列軸202についても同様である。そのような場合、従来技術では、スクロールバーなどで特定範囲を移動させることで、目的の領域を表示する。しかしながら、スクロールバーなどを利用した特定範囲の表示方法では、表示されていない属性軸の要素部を見ることができない場合が存在する。
図3は、属性軸の全要素を同時に表示する場合の表示例を示す図である。図3に示すように、この場合、従来技術では、属性軸要素の表示サイズを表示画面サイズもしくは表示ウインドウサイズから決定することで全体を表示する。そのため、描画性能によっては文字やイベントが潰れて表示されてしまい、イベントを可視できない場合が存在する。例えば、図3に示す例では、イベントが実行されたプロセッサコアの情報を得ることが困難である。
そこで、実施形態1では、1つ以上のイベントを含む領域を追加表示することで、大量のイベントの実行状況をユーザに容易に把握させることを可能にする。その際、実施形態1では、イベント情報の実行期間情報に基づいて領域を決定する場合を例に挙げる。
(構成)
図4は、実施形態1に係るプログラム実行状況表示システム401の概要構成を機能ブロックで示したものである。プログラム実行状況表示システム401は、イベント情報取得部422、軸情報取得部423、領域指定条件候補情報取得部424、領域指定条件情報取得部425、領域情報取得部426、イベント情報格納部402、軸情報格納部403、領域指定条件候補情報格納部404、領域指定条件情報格納部405、領域情報格納部406、イベントオブジェクト生成部407、軸オブジェクト生成部408、領域オブジェクト生成部409、表示部410、領域指定条件選択部411、領域指定条件情報更新部412、領域情報生成部413、ヒントオブジェクト生成部414、および、入力部415を備える。なお、各部の詳細については、後述において説明する。
(動作)
図5は、図4に示すプログラム実行状況表示システム401の動作例を示すフローチャートである。図4に示すように、本動作では、まず、軸情報取得部423が軸情報格納部403から軸情報を取得し、軸オブジェクト生成部408が取得された軸情報に基づいて軸オブジェクトを生成する(ステップS501)。また、軸情報取得部423が軸情報格納部403から軸情報を取得するとともに、イベント情報取得部422がイベント情報格納部402から少なくとも1つのイベント情報を取得し、イベントオブジェクト生成部407が取得された軸情報とイベント情報とに基づいてイベントオブジェクトを生成する(ステップS502)。次に、表示部410が、生成された軸オブジェクトとイベントオブジェクトを表示する(ステップS503)。
次に、領域指定条件候補情報取得部424が領域指定条件候補情報格納部404から少なくとも1つの領域指定条件候補情報を取得し、ヒントオブジェクト生成部414が取得された領域指定条件候補情報に基づいてヒントオブジェクトを生成する(ステップS504)。次に、表示部410が、生成されたヒントオブジェクトを表示する(ステップS505)。
次に、領域指定条件選択部411が、表示されたヒントオブジェクトに対してユーザが領域指定条件候補の選択情報を入力したか否かを判定する(ステップS506)。この入力は、たとえば入力部415を用いて行われる。選択情報が入力されていなかった場合(ステップS506;NO)、プログラム実行状況表示システム401は、ステップS511へ進む。一方、選択情報が入力されていた場合(ステップS506;YES)、領域指定条件候補情報取得部424が領域指定条件候補情報格納部404から少なくとも1つの領域指定条件候補情報を取得し、領域指定条件選択部411が、取得された領域指定条件候補情報と、ユーザによって入力された領域指定条件候補の選択情報とに基づき、領域指定条件情報を生成し、領域指定条件情報更新部412が領域指定条件情報格納部405の領域指定条件情報を更新する(ステップS507)。なお、領域指定条件候補情報格納部404内の領域指定条件候補情報は、たとえば入力部415からユーザによって予め登録された情報である。また、ステップS507では、たとえばユーザが入力部415を介して領域指定条件情報格納部405内の領域指定条件情報を直接更新してもよい。その場合、ステップS504〜S506にかかるヒントオブジェクトを生成して表示する処理を省略することが可能である。
次に、領域指定条件情報取得部425が領域指定条件情報格納部405から領域指定条件情報を取得し、領域情報生成部413が取得された領域指定条件情報に基づいて領域情報を生成する(ステップS508)。生成された領域情報は、領域情報格納部406に格納される。
次に、軸情報取得部423が軸情報格納部403から軸情報を取得するとともに、領域情報取得部426が領域情報格納部406から領域情報を取得し、領域オブジェクト生成部409が取得された軸情報と領域情報とに基づいて領域オブジェクトを生成する(ステップS509)。次に、表示部410が、生成された領域オブジェクトを表示する(ステップS510)。その後、プログラム実行状況表示システム401は、本動作を終了するか否かを判定し(ステップS511)、終了しない場合(ステップS511;NO)、ステップS506へリターンする。これにより、ステップS506以降のステップが、領域指定条件候補の選択が変更される度に実行される。一方、終了する場合(ステップS511;YES)、プログラム実行状況表示システム401は、本動作を終了する。
つぎに、図4に示す各部について、詳細に説明する。
(イベント情報取得部およびイベント情報格納部)
イベント情報取得部422は、たとえばイベントオブジェクト生成部407および領域情報生成部413からの要求に応じてイベント情報格納部402から少なくとも1つのイベント情報を取得する。イベント情報格納部402は、少なくとも1つのイベント情報を格納する記憶装置である。イベント情報とは、プログラム実行時に実行されたイベント情報であり、少なくともイベント固有情報とイベント時系列情報とイベント属性情報と含む情報である。
・イベント情報の一例
ここで、図1に示すプログラム101を実行した場合を用いてイベント情報について説明する。プログラム101は、次のように実行される。まず、“taskA”102は、プロセッサコア“core0”で時刻“0”から時刻“2000“まで実行される。次に、”taskD“105は、プロセッサコア“core1”で時刻“2000”から時刻“3000”まで実行される。次に、“taskE”106は、プロセッサコア“core2”で時刻“3000”から時刻“4000”まで実行される。次に、“taskD”205は、プロセッサコア“core3”で時刻“4000”から時刻“5000”まで実行される。次に、“taskE”106は、プロセッサコア“core4”で時刻“5000”から時刻“6000”まで実行される。次に、“taskD”105は、プロセッサコア“core20”で時刻“6000”から時刻“7000”まで実行される。次に、“taskE”106は、プロセッサコア“core21”で時刻“7000”から時刻“8000”まで実行される。次に、“taskB”103はプロセッサコア“core0”で時刻“8000”から時刻“10000”まで実行される。最後に、“taskC”104は、プロセッサコア“core0”で時刻“10000”から時刻“10010”まで実行される。
以上のようなプログラムのイベント情報は、個別のイベント情報がリストアップされたイベント情報リストを用いて管理される。図6に、図1に示すプログラムを実行した際のイベント情報リスト601の一例を示す。図6に示すように、イベント情報リスト601の各イベント情報602〜610は、イベント固有情報を実行順に割当てた固有IDとし、イベント時系列情報を実行開始時刻と実行終了時刻とからなる実行期間情報とし、属性情報をイベントが実行されたプロセッサコア名とプログラム構造情報と何回目のイタレーションであるかを表すイタレーション情報とを含む。図6に示す例では、イベント情報リスト601は、9つのイベント情報を保持しており、1行が1つのイベント情報を表している。例えば、イベント情報603は、イベント固有情報の固有ID、イベント実行期間情報の実行開始時刻、イベント実行期間情報の実行終了時刻、イベント属性情報の実行プロセッサコア、イベント属性情報のプログラム上の構造情報、イベント属性情報のイタレーション情報の順に、“1”、“2000”、“3000”、“core1”、“function1:LoopA:iteration:taskA”、“1”という情報を持つ。イベント情報603のイベントは、固有IDが“1”であり、イベントが“core1”のプロセッサコアで、実行開始時刻“2000”から実行終了時刻“3000”の間に実行される。また、イベント情報603のイベントは、プログラム構造上“function1”内の”LoopA”内のイテレーション内の“taskA”を示し、“LoopA”の1回目のイテレーションで実行されたイベントである。
なお、イベント固有情報は、イベント情報格納部402に含まれる複数のイベント情報から1つのイベントを特定可能な情報であり、例えば、イベント固有名であってもよいし、イベント固有IDであってもよい。
イベント時系列情報は、時系列情報であり、例えば、イベント実行期間情報であってもよいし、イベント時系列順番情報であってもよい。
イベント実行期間情報は、イベントの実行開始時刻と実行期間が定義される情報であり、例えば、少なくとも実行開始時刻と実行期間を含む情報であってもよいし、少なくとも実行開始時刻と実行終了時刻を含む情報であってもよいし、少なくとも実行期間と実行終了時刻を含む情報であってもよいし、イベントの実行開始時刻であってもよいし、イベントの終了時刻であってもよい。
実行開始時刻、実行終了時刻および実行期間は、期間情報であり、例えば、プログラム実行時におけるプロセッサ時刻であってもよいし、プロセッサ時刻に基づいて生成した期間情報であってもよい。
イベント時系列順番情報は、イベントの実行された順を表す情報であり、例えば、プログラム全体で実行された順番情報であってもよいし、ループイテレーションを表すイベントの何番目のイテレーションであるかというイテレーション内順序情報等の繰り返し実行されるプログラム構造での順番情報を含む情報であってもよい。
イベント属性情報は、イベントに関する情報であり、例えば、実行トレース情報であってもよいし、プログラムの静的情報であってもよいし、プログラムの実行環境情報であってもよい。
実行トレース情報は、プログラム実行時に取得可能な実行時の状況を表す情報であり、例えば、イベントを実行したプロセッサコア情報であってもよいし、イベント実行した命令情報であってもよいし、イベント実行期間であってもよいし、イベントが実行したメモリアクセス情報であってもよいし、イベントが実行した関数コール回数であってもよいし、イベント内の変数の値であってもよいし、イベントがループイタレーションである場合において何回目のイタレーションであるかの情報であってもよいし、イベントが割り込み処理であるかの情報であってもよい。
プログラムの静的情報は、ソースコードもしくはソースコード管理システムから得られる静的な情報であり、例えば、ソースコード上の位置情報であってもよいし、プログラム構造情報であってもよいし、ソースコードのコンパイル情報であってもよいし、ソースコードのバージョン情報であってもよいし、プログラムがカーネルプログラムであるかの情報であってもよいし、プログラムがユーザプログラムであるかの情報であってもよい。
プログラムの実行環境情報は、プログラムを実行した際の環境の情報であり、例えば、プロセッサコア名であってもよいし、サーバ名であってもよいし、サーバの仕様情報であってもよい。
(軸情報取得部および軸情報格納部)
軸情報取得部423は、たとえばイベントオブジェクト生成部407、軸オブジェクト生成部408および領域オブジェクト生成部409からの要求に応じて軸情報格納部403から軸情報を取得する。軸情報格納部403は、時系列軸情報と、少なくとも1つの属性軸情報と、少なくとも1つの表示属性特定情報を含む軸情報を格納する記憶装置である。
ここで、軸情報とは、少なくとも時系列軸情報と、属性軸情報とを含む情報であり、さらに、表示属性特定情報を含んでいてもよい。時系列軸情報は表示装置の画面の1間隔当たりが表す期間を示す情報である。属性軸情報は、少なくとも軸の要素名と、その表示位置を表す座標を示す情報とを含む情報である。表示属性特定情報は、表示対象となる属性を特定可能な情報である。
・軸情報の一例
図7に、軸情報701の一例を示す。図7に示すように、軸情報701では、時系列軸情報702が表示間隔情報と表示間隔が示す期間情報とからなり、属性軸情報703〜711が要素名情報と表示位置を表す座標と表示属性特定情報とからなる。図7に示す例では、時系列軸情報702は、表示間隔情報を“1”とし、表示間隔が示す期間情報を“2”とする。また、属性軸情報703は、要素名情報を“core0”とし、表示位置を表す座標を“0”とし、表示属性特定情報を“表示”とする。
なお、時系列軸情報は、表示装置の画面の1間隔当たりが表す情報を示す情報であればよい。例えば、1表示間隔当たりの期間情報であってもよいし、1期間当たりの表示間隔情報であってもよいし、少なくとも表示間隔とその表示間隔が表す期間情報を含む情報であってもよいし、1表示間隔当たりの実行順序情報数であってもよいし、1実行順序情報数当たりの表示間隔情報であってもよいし、表示間隔とその表示間隔が表す実行順序情報数から成る情報であってもよい。また、時系列軸情報は、プログラム実行状況表示システム401が事前に保持していてもよいし、ソフトウェア開発者が指定した情報であってもよいし、表示装置の画面サイズもしくはウインドウサイズと1画面で表示する実行期間情報に基づいて生成された情報であってもよい。
属性軸情報は、属性軸の要素名とその表示位置を表す座標である。イベント情報601に含まれるイベント情報のイベント属性情報は、1つの属性軸の要素名に対応する。属性軸の要素名は、プログラム実行状況表示システム401が事前に保持している情報であってもよいし、ソフトウェア開発者が指定した情報であってもよい。
表示位置を表す座標は、表示装置の画面上の属性軸の要素名を表示する位置を表す座標情報である。表示位置を表す座標は、プログラム実行状況表示システム401が事前に保持している情報であってもよいし、ソフトウェア開発者が指定した情報であってもよいし、表示装置の画面サイズもしくはウインドウサイズと1画面で表示する属性軸の要素数に基づいて生成された情報であってもよい。
(軸オブジェクト生成部)
軸オブジェクト生成部408は、軸情報取得部423によって軸情報格納部403から取得された軸情報701を入力し、入力した軸情報701に基づいて、プログラム実行状況を描画する座標系を形成する時系列軸オブジェクトと属性軸オブジェクトとを生成する。本説明では、座標系を2次元平面とするが、これに限らず、3次元以上の空間座標系であってもよいし、同一平面に2つ以上の2次元座標系を重ね合わせた座標系であってもよい。図7に示す軸情報701を用いた場合、軸オブジェクト生成部408は、まず、時系列軸情報702に基づいて表示装置の表示間隔1当たり時刻“2”を表す時系列軸オブジェクトを生成する。次に、属性軸情報から要素名をラベルとし、そのラベルの表示位置を表す座標に基づいて配置する属性軸オブジェクトを生成する。
(イベントオブジェクト生成部)
イベントオブジェクト生成部407は、イベント情報格納部402に格納されるイベント情報601と、軸情報格納部403に格納される軸情報701とを、それぞれイベント情報取得部422および軸情報取得部423を介して入力する。また、イベントオブジェクト生成部407は、イベント情報のイベント実行期間情報と軸情報の時系列軸情報とに基づいて時系列軸方向の表示位置を示す始点座標および終点座標と表示サイズとを決定するとともに、イベント情報の属性情報と軸情報の属性軸情報とに基づいて属性軸方向の表示位置を示す座標を決定し、イベントを表すイベントオブジェクトを生成する。
図6に示すイベント情報603におけるイベント固有ID“1”のイベントに着目して説明する。イベントオブジェクト生成部407は、まず、軸情報701の時系列軸情報702である“1表示間隔当たりの時刻は2”の情報と、イベントのイベント実行期間情報の実行開始時刻“2000”とから、時系列軸方向の表示始点座標の式“実行開始時刻÷1表示間隔当たりの時刻”を用いて“2000÷2=1000”を計算し、また、時系列軸方向の表示サイズの式“(実行終了時刻−実行開始時刻)÷1表示間隔当たりの期間”を用いて“(3000−2000)÷2=1000”を計算する。また、始点座標と表示サイズから表示終点座標を“2000”と決定する。次に、イベント情報603のイベント属性情報の“core1”と、“core1”に対応する軸情報701の属性軸情報704とから、属性軸方向の表示座標を“100”とする。次に、これらの時系列軸方向の表示位置を表す始点座標および終点座標、時系列軸方向の表示サイズ、および属性軸方向の表示位置を表す座標の情報を含むイベントオブジェクトを生成する。
(領域指定条件候補情報取得部および領域指定条件候補情報格納部)
領域指定条件候補情報取得部424は、たとえば領域指定条件選択部411およびヒントオブジェクト生成部414からの要求に応じて領域指定条件候補情報格納部404少なくとも1つの領域指定条件候補情報を取得する。領域指定条件候補情報格納部404は、少なくとも1つの領域指定条件候補情報を格納する記憶装置である。ここで、領域指定条件候補情報とは、少なくとも1つの領域指定条件情報を含む情報である。
領域指定条件情報は、1つの領域始点イベント特定情報と、1つの領域終点イベント特定情報とを含む情報である。領域始点イベント特定情報は、複数のイベント情報から属性情報に基づいて特定される領域始点イベントを特定する情報である。なお、領域始点イベントは、たとえば時系列軸方向で領域内の最小の実行開始期間情報を持つイベントである。領域終点イベント特定情報は、複数のイベント情報から属性情報に基づいて特定される領域終点イベントを特定する情報である。なお、領域終点イベントとは、時系列軸方向で領域内の最大の実行終了時間を持つイベントである。
領域指定条件情報は、例えば、イベント実行期間情報に関する条件であってもよいし、イベント属性情報に関する条件であってもよい。また、領域指定条件情報は、プログラム実行状況表示システム401が事前に保持している情報であってもよいし、ソフトウェア開発者の入力による情報であってもよいし、イベント情報に基づいて生成された情報であってもよい。
・領域指定条件候補情報の一例
以上のような領域指定条件候補情報は、個別の領域指定条件情報がリストアップされた領域指定条件候補情報リストを用いて管理される。ここで、図8に、領域指定条件候補情報リスト801の一例を示す。図8に示す例では、領域指定条件候補情報リスト801は、15つの領域指定条件情報802〜816を含んでいる。
図8において、たとえば領域指定条件情報815は、イベント実行期間に関する条件であり、“実行期間が1000未満のイベント”で1つ以上のイベントを特定する条件である。また、たとえば領域指定条件情報802は、イベント属性情報に関する条件であり、“LoopAに属するイベント”はプログラム構造上“LoopAに属するイベント“である1つ以上のイベントを特定する条件である。
イベント実行期間情報に関する条件は、イベントの実行開始時刻もしくは実行終了時刻もしくは実行期間が特定値と等しいもしくは大きいもしくは小さいイベント等の条件から、少なくとも1つのイベントを特定可能な条件である。また、イベント属性情報に関する条件は、イベント属性情報にある情報に対する条件から、少なくとも1つのイベントを特定可能な条件である。
このイベント属性情報に関する条件は、例えば、イベント属性情報がイベントを実行したプロセッサコア名である場合は、特定のプロセッサコア名であるか、もしくは、特定のプロセッサコア名でないか等の条件であってもよい。また、イベント属性情報がイベント実行した命令情報である場合は、特定の命令であるか、もしくは、特定の命令でないか等の条件であってもよい。さらに、イベント属性情報がメモリアクセス情報である場合は、特定アドレスにアクセスしたか等のアクセスアドレスに関する条件、特定回数以上アクセスしたか等のアクセス回数に関する条件、アクセス命令に関する条件、もしくは、これらの条件の組合せの条件であってもよい。さらにまた、イベント属性情報が関数コール回数である場合は、関数コール回数が特定値と等しい、特定値より大きい、特定値より小さい等の関数コールに関する条件であってもよい。さらにまた、イベント属性情報が変数の値の場合は、変数の値が特定値と等しい、特定値より大きい、特定値より小さい、特定の文字もしくは文字列を含む等の条件であってもよい。さらにまた、イベント属性情報がループイタレーションであって何回目のイタレーションであるかのイタレーション情報である場合は、イタレーション情報が特定値と等しい、特定値より大きい、特定値より小さい等の条件であってもよい。さらにまた、イベント属性情報が割り込みであるかの情報である場合は、割り込み処理であるか否かの条件であってもよい。さらにまた、イベント属性情報がソースコード上の位置情報である場合は、ソースコードの特定の位置に存在するか否か、特定のファイルに記述されているか否か等の条件であってもよい。さらにまた、イベント属性情報がプログラム構造情報である場合は、特定関数であるイベント、特定関数に属しているイベント、特定関数を呼び出すイベント、条件分岐に属しているイベント、特定ループに属しているイベント等の構造情報に関する条件であってもよい。さらにまた、イベント属性情報がソースコードのコンパイル情報である場合は、コンパイラのバージョンが特定値と等しい、コンパイラのバージョン特定値より大きい、コンパイラのバージョン特定値より小さい、コンパイラ時に特定のオプションが用いられたか否か等のコンパイル時及びコンパイラに関する条件であってもよい。さらにまた、イベント属性情報がソースコードのバージョン情報である場合は、バージョン情報が特定値と等しい、バージョン情報が特定値より大きい、バージョン情報が特定値より小さい等の条件であってもよい。さらにまた、イベント属性情報がカーネルプログラムであるか否かの情報である場合は、カーネルプログラムであるか否かの条件であってもよい。さらにまた、イベント属性情報がユーザプログラムであるか否かの情報である場合は、ユーザプログラムであるか否かの条件であってもよい。さらにまた、イベント属性情報がプロセッサコア名である場合は、プロセッサコア名が特定値と等しいか否かの条件であってもよい。さらにまた、イベント属性情報がサーバ名である場合は、サーバ名が特定値と等しいか否かの条件であってもよい。さらにまた、イベント属性情報がサーバの仕様情報である場合は、サーバのコア数が特定数と等しい、サーバのコア数が特定数より大きい、サーバのコア数が特定数より小さい、サーバのメモリ容量が特定値と等しい、サーバのメモリ容量が特定値より大きい、サーバのメモリ容量より小さい、サーバのディスク容量が特定値と等しい、サーバのディスク容量が特定値より大きい、サーバのディスク容量より小さい等のサーバの仕様に関する条件であってもよいし、これらの条件のうち1つ以上の条件の組合せであってもよい。
(ヒントオブジェクト生成部)
ヒントオブジェクト生成部414は、領域指定条件候補情報取得部424によって領域指定条件候補情報格納部404から取得された領域指定条件候補情報を入力し、入力した領域指定条件候補情報に基づいてイベントを特定する領域指定条件情報を表すヒントオブジェクトを生成する。図9に、実施形態1におけるヒントオブジェクトの一例を示す。なお、図9には、図8に示す領域指定条件候補情報リスト801から全ての領域指定条件情報802〜816を取得して生成されたヒントオブジェクト901の一例が示されている。図9に示すように、ヒントオブジェクト901には、取得した領域指定条件情報802〜816をメニュー表示する項目902〜916が含まれている。各項目902〜916には、これらのうちの何れか1つ以上をユーザに選択させるためのチェックボックス(選択オブジェクトまたは選択ユーザインタフェースともいう)917が対応づけられている。
(領域指定条件選択部)
領域指定条件選択部411は、領域指定条件候補情報取得部424によって領域指定条件候補情報格納部404から取得された領域指定条件候補情報を入力し、入力した領域指定条件候補情報から少なくとも1つの領域指定条件情報を選択する。実施形態1では、たとえばユーザインタフェースとして表示されたヒントオブジェクト901(図9参照)に対するユーザの入力に基づいて、入力した1つ以上の領域指定条件情報の中から目的の領域指定条件情報を選択する。例えば、ユーザがヒントオブジェクト901に表示された項目902〜916の中から“LoopAに属するイベント”の項目を選択する場合、この“LoopAに属するイベント”の横に配置された選択ユーザインタフェース917を選択する。以降では、“LoopAに属するイベント”、“iteration1に属するイベント”、“iteration2に属するイベント”、および、“iteration3に属するイベント”の計4つの項目に対するチェックボックス917がユーザによって選択された場合を例示する。
ユーザによってチェックボックス917にチェックが付された項目についての領域指定条件情報は、領域指定条件情報の選択情報(図5のステップS506参照)として領域指定条件選択部411に入力される。したがって、本ケースでは、“LoopAに属するイベント”902、“iteration1に属するイベント”903、“iteration2に属するイベント”904、および、“iteration3に属するイベント”905の計4つの項目に対する領域指定条件情報が選択情報として領域指定条件選択部411に入力される。
なお、チェックボックス917は、領域指定条件情報候補から領域指定条件情報を選択するための構成であればよく、図9のヒントオブジェクト901に例示したような、領域指定条件情報候補としての項目902〜916それぞれに選択オブジェクトとしてチェックボックス917を対応づけて同時表示する構成に限られない。たとえば、ファイルを用いて領域指定条件情報を選択する構成など、種々変形することが可能である。
(領域指定条件情報更新部)
領域指定条件更新部412は、領域指定条件選択部411で領域指定条件候補情報から選択された少なくとも1つの領域指定条件情報に基づいて、領域指定条件情報格納部405に格納されている領域指定条件情報リスト1001を更新する。実施形態1では、“LoopAに属するイベント”、“iteration1に属するイベント”、“iteration2に属するイベント”、および、“iteration3に属するイベント”の領域指定条件情報を用いて、領域指定条件情報格納部405に格納されている領域指定条件情報リスト1001が更新される。
(領域指定条件情報取得部および領域指定条件情報格納部)
領域指定条件情報取得部425は、たとえば領域情報生成部413からの要求に応じて領域指定条件情報格納部405から少なくとも1つの領域指定条件情報を取得する。領域指定条件情報格納部405は、少なくとも1つの領域指定条件情報を格納する記憶装置である。図10に、領域指定条件情報格納部405に格納される領域指定条件情報リストの一例を示す。本例では、領域指定条件選択部411によって更新された結果、図10に示すように、領域指定条件情報リスト1001が、“LoopAに属するイベント”1002、“iteration1に属するイベント1003”、“iteration2に属するイベント”1004、および、“iteration3に属するイベント”1005の領域指定条件情報を含むように更新される。
(領域情報生成部)
領域情報生成部413は、イベント情報取得部422によってイベント情報格納部402から取得されたイベント情報リスト601を入力し、領域指定条件情報取得部425によって領域指定条件情報格納部405から取得された領域指定条件情報1001を入力し、領域名を決定し、領域指定条件情報に基づいて1つ以上のイベント情報を選択する。次に、選択されたイベント情報から領域を決定し、選択されたイベント情報に基づいて領域期間情報を決定して、領域情報を生成する。領域情報とは、時系列軸方向の領域を定義する情報であり、少なくとも領域を識別する情報と領域期間情報とを含む情報である。領域を識別する情報とは、例えば、領域名であってもよいし、領域固有のIDであってもよい。
・領域情報の一例
図11に、領域情報の一例を示す。図11に示すように、領域情報1101は、領域の項目1102〜1105毎に、領域名と、領域期間情報とを含む。領域期間情報は、領域始点時刻情報と、領域終点時刻情報とからなる情報である。領域名は、プログラム実行状況表示システム401に表示される領域のラベルとなる情報である。領域期間情報は、時系列軸方向の領域を定義する情報である。例えば、項目1102は、領域名を“LoopAに属するイベント”とし、領域始点時刻情報を“2000”とし、領域終点時刻情報を“8000”とする情報である。
なお、領域情報は、時系列軸方向の領域を定義する情報である。領域期間情報は、時系列軸方向の領域を定義する情報であればよく、少なくとも領域始点時刻情報と領域終点時刻情報とを含む情報に限らず、少なくとも領域始点時刻情報と領域の時間幅を表す領域期間情報とを含む情報であってもよい。
ここで、選択された2つ以上のイベントが連続している範囲を1つの領域とする例を説明する。イベント情報のプログラム構造情報に基づいて、“LoopA”を構造に持つ6つのイベント情報603、604、605,606、607、608が選択された場合、イベント情報603のプログラム構造情報が“function0:LoopA:iteration:function1:taskD”であるため、イベント情報603が示すイベントは”LoopA”に属していると判定できる。そこで、領域情報生成部413は、領域を決定する。本例では連続するイベントが連続している範囲を1つの領域とするため、イベント情報603、604、605,606、607、608のイベントが実行された期間の範囲を1つの領域とする。
次に、領域情報生成部413は、選択されたイベント情報に含まれるイベント実行期間情報のイベント実行開始時刻に基づいて、領域始点時刻を決定する。選択されたイベント情報の実行開始時刻は、“2000”、“3000”、“4000”、“5000”、“6000”、“7000”であるため、最小実行開始時刻である”2000”が領域始点時刻と決定される。
次に、領域情報生成部413は、選択されたイベント情報に含まれるイベント実行期間情報のイベント実行終了時刻に基づいて、領域終点時刻を決定する。選択されたイベント情報の実行終了時刻は“3000”、“4000”、“5000”、“6000”、“7000”、”8000”であるため、最大実行終了時刻である”8000”が領域終点時刻と決定される。
次に、領域情報生成部413は、領域指定条件情報に基づいて領域名“LoopAに属するイベント”を決定する。その後、領域情報生成部413は、領域名を“LoopAに属するイベント”とし、領域始点時刻を“2000”とし、領域終了時刻を“8000”とする領域情報1102を生成し、これを領域情報格納部406に格納する。
また、領域情報生成部413は、領域指定条件情報1003、1004、1005についても同様に、領域情報1103、1104、1105を生成し、これらを含む領域情報1101を領域情報格納部406に格納する。ここで、領域指定条件情報1003は、“iteration1に属するイベント”を選定するため、領域指定条件情報1003に基づく領域情報1103の生成では、イベント情報のイベント属性情報のプログラム上の構造情報と、イベント属性情報のイタレーション情報とが用いられる。
なお、領域とは、少なくとも1つのイベントを含む範囲である。そのため、例えば、領域指定条件情報に基づいて選択された1つのイベントを1つの領域としてもよいし、領域指定条件情報に基づいて選択された2つ以上のイベントが連続している範囲を1つの領域としてもよいし、領域指定条件情報に基づいて選択された2つ以上のイベントを全て包含する範囲を1つの領域としてもよい。
また、領域始点時刻の決定方法では、領域指定条件情報に基づいて選択されたイベントのイベント情報に含まれるイベント実行期間情報のイベント実行開始時刻に基づいて領域始点時刻が決定されてもよいし、選択されたイベントのイベント情報に含まれるイベント実行期間情報のイベント実行終了時刻に基づいて領域始点時刻が決定されてもよい。
また、領域終点時刻の決定方法では、領域指定条件情報に基づいて選択されたイベントのイベント情報に含まれるイベント実行期間情報のイベント実行終点時刻に基づいて領域終点時刻が決定されてもよいし、選択されたイベントのイベント情報に含まれるイベント実行期間情報のイベント実行始点時刻に基づいて領域終点時刻が決定してもよい。
また、領域指定条件情報に基づいて選択された1つのイベントを1つの領域とする場合の領域期間情報の生成では、領域始点時刻をイベントの実行開始時刻とし、領域終点時刻をイベントの実行終了時刻としてもよい。
さらに、イベントのイベント実行開始時刻とイベント実行終了時刻とが等しい場合は、実行開始時刻を実行終了時刻とみなし、実行終了時刻を実行開始時刻とみなしてもよい。
さらにまた、領域名の生成では、領域指定条件情報に基づいて領域名が決定されてもよいし、選択されたイベント情報に基づいて決定されてもよいし、外部の入力情報に基づいて決定されてもよい。
(領域情報取得部および領域情報格納部)
領域情報取得部426は、たとえば領域オブジェクト生成部409からの要求に応じて領域情報格納部406から少なくとも1つの領域情報を取得する。領域情報格納部406は、少なくとも1つの領域情報を格納する記憶装置である。
(領域オブジェクト生成部)
領域オブジェクト生成部409は、軸情報取得部423によって軸情報格納部403から取得された軸情報を入力し、領域情報取得部426によって領域情報格納部406から取得された領域情報を入力し、軸情報の時系列軸情報と領域情報の領域期間情報に基づいて領域を表す領域オブジェクトの時系列軸方向の表示位置を表す始点座標および終点座標と表示範囲を決定する。また、領域オブジェクト生成部409は、領域情報格納部406に格納される全ての領域情報の領域期間情報から少なくとも画面上に表示される始点座標と終点座標を決定する。この際、時系列軸方向の重複領域を判定し、重複がある場合は重複する領域情報とは異なる属性軸方向の表示位置を表す座標を決定する。さらに、実施形態1では、領域オブジェクトを長方形オブジェクトとするため、重複がある場合は重複する領域情報とは異なる属性軸方向の表示範囲も決定する。その後、領域オブジェクト生成部409は、時系列軸方向の表示位置を表す始点座標および終点座標と、時系列軸方向の表示範囲と、属性軸方向の表示位置を表す座標と、属性軸方向の表示範囲と、領域情報の領域名とを含む領域オブジェクトを生成する。
領域オブジェクト生成部409による領域オブジェクトの生成を、領域情報1102に着目して説明する。領域オブジェクト生成部409は、まず、軸情報701の時系列軸情報702である“1表示間隔当たりの期間は2”の情報と、領域情報1102の領域の領域始点時刻“2000”とから、時系列軸方向の表示始点座標を式“(領域始点時刻)÷(1表示間隔当たりの期間)”を用いて“2000÷2=1000”を計算し、時系列軸方向の表示サイズを式“(領域終点時刻-領域始点時刻)÷(1表示間隔当たりの期間)”を用いて“(8000−2000)÷2=3000”を計算する。また、始点座標と表示サイズから表示終点座標を“4000”と決定する。また、領域オブジェクト生成部409は、画面サイズから属性軸方向の表示位置を表す座標を決定する。
次に、領域オブジェクト生成部409は、領域情報格納部406に格納されている領域情報の領域期間情報から、領域情報1102と重複する領域情報1103、1104、1105を判定する。そして、領域情報1102を表す第1の領域オブジェクトの属性軸方向の表示範囲が領域情報1103、1104、1105を包含していることに基づいて、領域情報1102の属性軸方向の表示範囲を領域情報1103、1104、1105を表す第2の領域オブジェクトの属性軸方向の表示範囲より大きい値に決定する。
次に、領域オブジェクト生成部409は、領域情報1102の領域名から領域名を“LoopAに属するイベント”とする。その後、領域オブジェクト生成部409は、時系列軸方向の表示位置を表す始点座標および終点座標と時系列軸方向の表示範囲と属性軸方向の表示位置を表す座標と属性軸方向の表示範囲と領域名の情報とを含む領域オブジェクトを生成する。
なお、領域オブジェクトは、時系列軸方向の領域を表すオブジェクトであればよく、例えば、線オブジェクトであってもよいし、長方形オブジェクトであってもよいし、その他領域を表すオブジェクトであれば如何様にも変形することができる。
(表示部)
表示部410は、軸オブジェクトと、イベントオブジェクトと、ヒントオブジェクトと、領域オブジェクトとを表示する。以下では、図12に示す領域指定条件情報選択後のプログラム実行状況表示領域1201の例を用いて説明する。なお、本説明では、画面上に表示可能な領域のみを表示し、スクロールバーにより表示領域を変更可能とする場合を例に挙げる。
・軸オブジェクト表示
表示部410は、軸オブジェクト生成部408から軸オブジェクトを入力し、軸オブジェクトが持つ表示情報に基づいて軸オブジェクトを画面上に描画する。軸オブジェクトのうち、時系列軸オブジェクトは一定区間ごとに時刻情報のラベルを表示し、属性軸オブジェクトは属性ラベルを表示する。図12に示す例では、時系列軸は、たとえば“0”から“9000“を表示する。その際、ラベルが1000単位で表示される。表示部410は、画面サイズもしくはウインドウサイズ等の表示サイズを入力とし、表示可能なサイズの軸オブジェクトを表示してもよいし、表示可能なサイズの軸オブジェクトにサイズを変換して表示してもよい。
・イベントオブジェクト表示
表示部410は、イベントオブジェクト生成部407からイベントオブジェクトを入力し、イベントオブジェクトが持つ表示位置を表す時系列軸方向の始点座標および終点座標と属性軸方向の座標に基づいてイベントオブジェクトを画面上に描画する。図12に示すように、本例では、図6に示すイベント602、603、604、605、609を表すイベントオブジェクトが、それぞれ順にイベントオブジェクト1202、1203、1204、1205、1209として表示される。表示部110は、画面サイズやウインドウサイズ等の表示サイズを入力とし、表示可能なサイズのイベントオブジェクトを表示してもよいし、表示可能なサイズのイベントオブジェクトにサイズを変換して表示してもよい。
・ヒントオブジェクト表示
表示部410は、ヒントオブジェクト生成部414からヒントオブジェクトを入力し、ヒントオブジェクトが持つ表示位置を表す座標に基づいてヒントオブジェクト1220を画面上に描画する。図12に示すように、ヒントオブジェクト1220は、イベントオブジェクトが表示されるプログラム実行情報表示領域1201とは別のウィンドウとして表示されてもよい。また、ヒントオブジェクト1220は、常時表示されていてもよいし、ユーザインタフェースからの指示により表示してもよい。なお、図12に示す例では、“LoopAに属するイベント”、“iteration1に属するイベント”、“iteration2に属するイベント”、“iteration3に属するイベント”が選択された場合が示されている。
・領域オブジェクト表示
表示部410は、領域オブジェクト生成部409から領域オブジェクトを入力し、領域オブジェクトが持つ表示位置を表す時系列軸方向の始点座標および終点座標と属性軸方向の座標に基づいて領域オブジェクトを画面上に描画する。また、領域オブジェクトが持つ領域名に基づいて領域名を表示する。図12におけるプログラム実行状況表示領域1201は、領域指定条件選択後の表示例である。ヒントオブジェクト1220では、“LoopAに属するイベント”、“iteration1に属するイベント”、“iteration2に属するイベント”、“iteration3に属するイベント”の領域指定条件が選択されているため、プログラム実行状況表示領域1201には、“LoopAに属するイベント”を指し示す領域オブジェクト1211と、“iteration1に属するイベント”を指し示す領域オブジェクト1212と、“iteration2に属するイベント”を指し示す領域オブジェクト1213と、“iteration3に属するイベント”を指し示す領域オブジェクト1214とが表示される。
なお、領域オブジェクトは、領域の始点と終点を含む範囲を表現しているオブジェクトであれば、どのような表示オブジェクトとであってもよい。また、複数の領域オブジェクトの少なくとも一部分でも重なる場合、それぞれの領域オブジェクトを互いに識別可能な状態であれば、どのように表示されてもよい。
以上のように、実施形態1によれば、大量のイベントが実行されるプログラムの実行状況をユーザに対して有効に提示することが可能になる。その際、ヒントオブジェクトを併せて表示することで、ユーザに対して対話的かつ有効にプログラムの実行状況を提示することが可能になる。
実施形態2
つぎに、実施形態2にかかる情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システムについて、図面を参照して詳細に説明する。なお、実施形態2では、イベント情報の時系列順序情報に基づいて領域を決定する場合を例に挙げる。
実施形態2では、図13に例示するプログラム1301を実行した際の実行状況を表示する場合を例に挙げる。図13に示すように、プログラム1301には、“LoopA”1302、“LoopB”1303、および“taskA”1304の合計3種類のイベントが含まれている。
また、実施形態2にかかるプログラム実行状況表示において用いる軸は、時系列軸と属性軸とであるとする。ただし、実施形態2では、時系列軸がイベントの“taskA”の実行順序を表す軸とし、属性軸がイベントを実行した実行期間を要素とする軸とする。
そこで、実施形態2では、図14に示すように、イベント“taskA”1406〜1414を表示するとともに、イベント“LoopA”1402と、イベント“LoopB“1403、1404および1405とを、時系列軸方向の範囲情報を持つように表示させることで、複数のイベントを同時表示する。
なお、イベントは、プログラムやプロセスの実行時に発生する処理の単位であり、関数やループや条件分岐等のプログラムの構成単位であってもよいし、メモリアクセス、命令実行、スレッド生成、同期処理等の特定の処理であってもよい。
ただし、表示装置である表示画面サイズもしくは表示ウインドウサイズには限りがあるため、一度に表示可能な属性軸の要素の数には限りがある。図15および図16に、表示装置である表示画面サイズもしくは表示ウインドウサイズに、図14に例示するようなプログラムの実行状況が収まらなかった場合の表示例を示す。
図15は、属性軸要素の表示サイズを固定した場合のプログラム実行状況表示領域1501の例を示す図である。図15に示す例では、属性軸の実行時系列軸方向を全て表示できず、そのため、イベント“LoopA”および“LoopB”を同時に表示できない。この場合、スクロールバーなどを用いて表示範囲をシフトさせることも可能であるが、スクロールバーなどによる表示範囲のシフトでは、表示されていない属性軸の要素部を同時に見ることができないという課題が残る。
また、図16は、属性軸の全要素を同時に表示する場合のプログラム実行状況表示領域1601を示す図である。図16に示す例では、属性軸要素の表示サイズを表示画面サイズもしくは表示ウインドウサイズから決定し表示する。そのため、描画性能で表示できない表示は文字やイベントが潰れて表示されてしまい、その結果、イベントを可視できない場合が生じる。例えば、図14におけるイベント“taskA”1406、1407および1408の実行期間では、“taskA”1406の実行期間より“taskA”1407の実行期間が大きく、“taskA”1407の実行期間より“taskA”1408の実行期間が大きいが、図16に示す例では、“taskA”1406、1407および1408に対応するイベント“taskA”1606、1607および1608の実行期間が同じとして判別されてしまい、正しい判別が行えない可能が存在する。
そこで、実施形態2では、関連する1つ以上のイベントを領域として追加表示することで、大量のイベントの実行状況をユーザに容易に把握させることを可能にする。
実施形態2にかかるプログラム実行状況表示システムは、実施形態1で例示したプログラム実行状況表示システム401と同様の構成(図4参照)であってよい。また、実施形態2にかかるプログラム実行状況表示システムの動作は、実施形態1で例示した動作(図5参照)と同様であってよい。そこで、プログラム実行状況表示システムの構成および動作については、図4および図5を用いた説明を引用することで、ここでは詳細な説明を省略する。ただし、プログラム実行状況表示システムの各部の構成は、以下のようになる。
(イベント情報取得部およびイベント情報格納部)
イベント情報取得部422は、たとえばイベントオブジェクト生成部407および領域情報生成部413からの要求に応じてイベント情報格納部402から少なくとも1つのイベント情報を取得する。イベント情報格納部402は、少なくとも1つのイベント情報を格納する記憶装置である。イベント情報とは、プログラム実行時に実行されたイベント情報であり、少なくともイベント固有情報とイベント時系列情報とイベント属性情報とを含む情報である。
・イベント情報の一例
ここで、図13に示すプログラム1301を実行した場合を用いてイベント情報について説明する。プログラム1301は、“LoopA”1302の期間に“LoopB”1303を3回実行し、“LoopB”1303の期間に“taskA”を3回実行するように構成されている。
“LoopA”1302は、時刻“0”から時刻”1800“まで実行される。この実行期間において、“LoopB“1303は3回実行される。各イタレーションの実行期間は、時刻“0“から時刻“600“の期間と、時刻“600”から時刻“1200”の期間と、時刻“1200”から時刻“1800”の期間である。次に、“LoopB”の1回目のイタレーションでは“taskA”1304が3回実行され、その実行期間は、時刻“0”から時刻“100”の期間と、時刻“100”から時刻“300”の期間と、時刻“300”から時刻“600”の期間である。また、2回目のイタレーションでは、“taskA”1304が3回実行され、その実行期間は、時刻“600”から時刻“700”の期間と、時刻“700”から時刻“900”の期間と、時刻“900”から時刻“1200”の期間である。また、3回目のイタレーションでは、“taskA”1304が3回実行され、その実行期間は、時刻“1200”から時刻“1300”の期間と、時刻“1300”から時刻“1500”の期間と、時刻“1500”から時刻“1800”の期間である。
図17に、実施形態2にかかるイベント情報を管理するイベント情報リストの一例を示す。図17に示すように、イベント情報リスト1701は、イベント固有情報を実行順に割当てた固有IDと、イベント時系列情報を同一プログラム構造のイベント実行順序情報と実行期間とからなる時系列情報と、属性情報をイベントが実行されたプロセッサコア名とプログラム構造情報と何回目のイタレーションであるかを表すイタレーション情報とを含む。
図17に示す例では、イベント情報リスト1701は、13つのイベント情報を保持しており、1行が1つのイベント情報を表している。例えば、イベント情報1705は、イベント固有情報の固有ID、イベント時系列情報のイベント実行順序情報、時系列軸の始点実行順序情報、時系列軸の終点実行順序情報、イベント時系列情報のイベント実行期間情報、イベント属性情報のプログラム上の構造情報、イベント属性情報の“LoopA”のイタレーション情報、イベント属性情報の“LoopB”のイタレーション情報の順に、“3”、“2”、“2”、“2”、“200”、“function0:LoopA:iteration:LoopB:iteration:taskA”、“1”、“2”という情報を持つ。イベント情報1705は、固有IDが“2”であり、同一プログラム構造を持つイベントは2回目の実行順序であり、実行期間が“200“に実行されるイベントを示している。また、イベント情報1705は、イベントがプログラム構造上“function0”内の”LoopA”内のイテレーション内の“LoopB”内のイテレーション内の“taskA”を示し、“LoopA”の1回目のイテレーションで実行された“LoopB”の2回目のイテレーションで実行された“taskA”イベントであることを示している。
また、イベント情報1703は、イベント固有情報の固有ID、イベント時系列情報のイベント実行順序情報、時系列軸の始点実行順序情報、時系列軸の終点実行順序情報、イベント属性情報のイベント実行期間情報、イベント属性情報のプログラム上の構造情報、イベント属性情報の“LoopA”のイタレーション情報、イベント属性情報の“LoopB”のイタレーション情報の順に、“1”、“1”、“1”、“3”、“600”、“function0:LoopA:iteration:LoopB、“1”、“0”という情報を持つ。イベント情報1703は、固有IDが“1”であり、同一プログラム構造を持つイベントが1回目の実行順序であり、実行期間が“600“に実行されるイベントを示している。また、イベント情報1703は、イベントがプログラム構造上“function0”内の”LoopA”内の1回目のイテレーション内“LoopB”イベントであることを示す。また、時系列軸の始点実行順序情報“1”と時系列軸の終点実行順序情報“3”とから、“taskA”の実行順序情報においては1回目、2回目、3回目の実行に対応することを示している。
なお、イベント固有情報は、イベント情報格納部402に含まれる複数のイベント情報から1つのイベントを特定可能な情報であり、例えば、イベント固有名であってもよいし、イベント固有IDであってもよい。
また、イベント時系列情報は、時間的変化を表す情報であり、例えば、イベント実行期間情報であってもよいし、イベント実行順序情報であってもよい。
イベント実行期間情報は、イベントの実行開始時刻と実行期間が定義される情報であり、例えば、少なくとも実行開始時刻と実行期間とを含む情報であってもよいし、少なくとも実行開始時刻と実行終了時刻とを含む情報であってもよいし、少なくとも実行期間と実行終了時刻とを含む情報であってもよいし、イベントの実行開始時刻であってもよいし、イベントの終了時刻であってもよい。
実行開始時刻、実行終了時刻および実行期間は、期間情報であり、例えば、プログラム実行時におけるプロセッサ時刻であってもよいし、プロセッサ時刻に基づいて生成した期間情報であってもよい。
イベント実行順序情報は、イベントの実行された順を表す情報であり、例えば、同一のプログラム構造情報を持つイベントの実行順の情報であってもよいし、プログラム全体で実行された順番情報であってもよいし、ループイテレーションを表すイベントの何番目のイテレーションであるかというイテレーション内順序情報等の繰り返し実行されるプログラム構造での順番情報を含む情報であってもよい。
イベント属性情報は、イベントに関する情報であり、例えば、実行トレース情報であってもよいし、プログラムの静的情報であってもよいし、プログラムの実行環境情報であってもよい。
実行トレース情報は、プログラム実行時に取得可能な実行時の状況を表す情報であり、例えば、イベントを実行したプロセッサコア情報であってもよいし、イベント実行した命令情報であってもよいし、イベント実行期間であってもよいし、イベントが実行したメモリアクセス情報であってもよいし、イベントが実行した関数コール回数であってもよいし、イベント内の変数の値であってもよいし、イベントがループイタレーションである場合において何回目のイタレーションであるかの情報であってもよいし、イベントが割り込み処理であるかの情報であってもよい。
プログラムの静的情報は、ソースコードもしくはソースコード管理システムから得られる静的な情報であり、例えば、ソースコード上の位置情報であってもよいし、プログラム構造情報であってもよいし、ソースコードのコンパイル情報であってもよいし、ソースコードのバージョン情報であってもよいし、プログラムがカーネルプログラムであるかの情報であってもよいし、プログラムがユーザプログラムであるかの情報であってもよい。
プログラムの実行環境情報は、プログラムを実行した際の環境の情報であり、例えば、プロセッサコア名であってもよいし、サーバ名であってもよいし、サーバの仕様情報であってもよい。
(軸情報取得部および軸情報格納部)
軸情報取得部423は、たとえばイベントオブジェクト生成部407、軸オブジェクト生成部408および領域オブジェクト生成部409からの要求に応じて軸情報格納部403から軸情報を取得する。軸情報格納部403は、時系列軸情報と少なくとも1つの属性軸情報と少なくとも1つの表示属性特定情報を含む軸情報を格納する記憶装置である。
ここで、軸情報とは、少なくとも時系列軸情報と、属性軸情報とを含む情報であり、さらに、表示属性特定情報を含んでいてもよい。時系列軸情報は、表示装置の画面の1間隔当たりが表す“taskA”のイベントの実行順序を示す情報である。属性軸情報とは、少なくとも軸の要素名と、その表示位置を表す座標を示す情報とを含む情報である。表示属性特定情報とは、表示対象となる属性を特定可能な情報である。
・軸情報の一例
図18に、軸情報1801の一例を示す。図18に示すように、軸情報1801では、時系列軸情報1802が表示間隔情報と表示間隔が示す期間情報とからなり、属性軸情報1803〜1808が要素名情報と表示位置を表す座標と表示属性特定情報とからなる。図18に示す例では、時系列軸情報1802は、表示間隔情報を“1”とし、表示間隔が示す実行順序情報を“1”とする。また、属性軸情報1803は、要素名情報を“0”とし、表示位置を表す座標を“0”とし、表示属性特定情報を“表示”とする。
なお、時系列軸情報は、表示装置の画面の1間隔当たりが表す情報を示す情報であればよい。例えば、1表示間隔当たりの期間情報であってもよいし、1期間当たりの表示間隔情報であってもよいし、少なくとも表示間隔とその表示間隔が表す期間情報を含む情報であってもよいし、1表示間隔当たりの実行順序情報であってもよいし、1実行順序情報当たりの表示間隔情報であってもよいし、少なくとも表示間隔とその表示間隔が表す実行順序情報を含む情報であってもよい。また、時系列軸情報は、プログラム実行状況表示システムが事前に保持していてもよいし、ソフトウェア開発者が指定した情報であってもよいし、表示装置の画面サイズもしくはウインドウサイズと1画面で表示する実行期間情報に基づいて生成された情報であってもよい。
属性軸情報は、属性軸の要素名とその表示位置を表す座標である。属性軸の要素名としては、イベント情報リスト1701の各イベント情報のイベント属性情報に対応する情報が存在する。また、属性軸の要素名のいずれかは、属性軸に対応するイベント情報のイベント属性情報と一致する。属性軸の要素名は、プログラム実行状況表示システムが事前に保持している情報であってもよいし、ソフトウェア開発者が指定した情報であってもよい。
表示位置を表す座標は、表示装置の画面上の属性軸の要素名を表示する位置を表す情報である。表示位置を表す座標は、プログラム実行状況表示システムが事前に保持している情報であってもよいし、ソフトウェア開発者が指定した情報であってもよいし、表示装置の画面サイズもしくはウインドウサイズと1画面で表示する属性軸の要素数に基づいて生成された情報であってもよい。
(軸オブジェクト生成部)
軸オブジェクト生成部408は、軸情報取得部423によって軸情報格納部403から取得された軸情報1801を入力し、入力した軸情報1801に基づいて、プログラム実行状況を描画する座標系を形成する時系列軸オブジェクトと属性軸オブジェクトとを生成する。本説明では、座標系を2次元平面とするが、これに限らず、3次元以上の空間座標系であってもよいし、同一平面に2つ以上の2次元座標系を重ね合わせた座標系であってもよい。軸オブジェクト生成部408は、まず、時系列軸情報1802に基づいて表示装置の表示間隔1当たり1実行順序情報を表す時系列軸オブジェクトを生成する。次に、属性軸情報から要素名をラベルとし、そのラベルの表示位置を表す座標に基づいて配置する属性軸オブジェクトを生成する。
(イベントオブジェクト生成部)
イベントオブジェクト生成部407は、イベント情報格納部402に格納されるイベント情報リスト1701と、軸情報格納部403に格納される軸情報1801とを、それぞれイベント情報取得部422および軸情報取得部423を介して入力する。また、イベントオブジェクト生成部407は、イベント情報のイベント実行順序情報と軸情報の時系列軸情報とに基づいて時系列軸方向の表示位置を表す座標と表示サイズとを決定するとともに、イベント情報の属性情報と軸情報の属性軸情報とに基づいて属性軸方向の表示位置を表す座標を決定し、イベントを表すイベントオブジェクトを生成する。
図17に示すイベント情報1703のイベント固有ID“1”のイベントに着目して説明する。イベントオブジェクト生成部107は、まず、軸情報1801の時系列軸情報1802である“1表示間隔当たりの1実行順序情報を表す”の情報と、イベント1703の時系列軸の始点実行順序情報“1”とから、式“実行順序情報÷1表示間隔当たりが表す実行順序情報数”を用いて“1÷1=1”を計算して表示位置を表す座標を決定する。次に、時系列軸情報1802である“1表示間隔当たりの1実行順序情報を表す”の情報と、イベント1703の時系列軸の始点実行順序情報“1”と、時系列軸の終点実行順序情報“3”とから、式“実行順序情報数÷1表示間隔当たりが表す実行順序情報数”を用いて“3÷1=3”を計算して表示サイズを決定する。次に、イベント情報1703のイベント属性情報の実行期間情報“600”と、“600”に対応する軸情報1801の属性軸情報1804とから、属性軸方向の表示位置を表す座標を“600”とする。次に、これらの時系列方向の表示位置を表す座標、属性軸方向の表示位置を表す座標の情報を含むイベントオブジェクトを生成する。
(領域指定条件候補情報取得部および領域指定条件候補情報格納部)
領域指定条件候補情報取得部424は、たとえば領域指定条件選択部411およびヒントオブジェクト生成部414からの要求に応じて領域指定条件候補情報格納部404少なくとも1つの領域指定条件候補情報を取得する。領域指定条件候補情報格納部404は、少なくとも1つの領域指定条件候補情報を格納する記憶装置である。ここで、領域指定条件候補情報とは、少なくとも1つの領域指定条件情報とを含む情報である。
領域指定条件情報は、1つの領域始点イベント特定情報と、1つの領域終点イベント特定情報とを含む情報である。領域始点イベント特定情報は、複数のイベント情報から属性情報に基づいて特定される領域始点イベントを特定する情報である。なお、領域始点イベントは、たとえば時系列軸方向で領域内の最小の実行開始期間情報を持つイベントである。領域終点イベント特定情報は、複数のイベント情報から属性情報に基づいて特定される領域終点イベントを特定する情報である。なお、領域終点イベントとは、時系列軸方向で領域内の最大の実行終了時間を持つイベントである。
領域指定条件情報は、例えば、イベント実行期間情報に関する条件であってもよいし、イベント属性情報に関する条件であってもよい。また、領域指定条件情報は、プログラム実行状況表示システムが事前に保持している情報であってもよいし、ソフトウェア開発者の入力による情報であってもよいし、イベント情報に基づいて生成された情報であってもよい。
・領域指定条件候補情報の一例
以上のような領域指定条件候補情報は、個別の領域指定条件情報がリストアップされた領域指定条件候補情報リストを用いて管理される。ここで、図19に、領域指定条件候補情報リスト1901の一例を示す。図19に示す例では、領域指定条件候補情報リスト1901は、10つの領域指定条件情報1902〜1911を含んでいる。
図19において、たとえば領域指定条件情報1910は、イベント実行期間に関する条件であり、“実行期間が1000未満のイベント”で1つ以上のイベントを特定する条件である。また、たとえば領域指定条件情報1902は、イベント属性情報に関する条件であり、“LoopAに属するイベント”はプログラム構造上“LoopAに属するイベント“である1つ以上のイベントを特定する条件である。
イベントの時系列情報に関する条件は、イベントの実行期間が特定値と等しいもしくは大きいもしくは小さいイベントなどの条件から少なくとも1つのイベントを特定可能な条件であってもよいし、イベントの実行順序情報が特定値と等しいもしくは大きいもしくは小さいイベントなどの条件から少なくとも1つのイベントを特定可能な条件であってもよい。
イベント実行期間情報に関する条件は、イベントの実行開始時刻もしくは実行終了時刻もしくは実行期間が特定値と等しいもしくは大きいもしくは小さいイベント等の条件から少なくとも1つのイベントを特定可能な条件である。また、イベント属性情報に関する条件は、イベント属性情報にある情報に対する条件から少なくとも1つのイベントを特定可能な条件である。
このイベント属性情報に関する条件は、例えば、イベント属性情報がイベントを実行したプロセッサコア名である場合は、特定のプロセッサコア名であるか、もしくは、特定のプロセッサコア名でない等の条件であってもよい。また、イベント属性情報がイベント実行した命令情報である場合は、特定の命令であるか、もしくは、特定の命令でない否か等の条件であってもよい。さらに、イベント属性情報がメモリアクセス情報である場合は、特定アドレスにアクセスしたか等のアクセスアドレスに関する条件、特定回数以上アクセスしたか等のアクセス回数に関する条件、アクセス命令に関する条件、もしくは、これらの条件の組合せの条件であってもよい。さらにまた、イベント属性情報が関数コール回数である場合は、関数コール回数が特定値と等しい、特定値より大きい、特定値より小さい等の関数コールに関する条件であってもよい。さらにまた、イベント属性情報が変数の値の場合は、変数の値が特定値と等しい、特定値より大きい、特定値より小さい、特定の文字もしくは文字列を含む等の条件であってもよい。さらにまた、イベント属性情報がループイタレーションであって何回目のイタレーションであるかのイタレーション情報である場合は、イタレーション情報が特定値と等しい、特定値より大きい、特定値より小さい等の条件であってもよい。さらにまた、イベント属性情報が割り込みであるかの情報である場合は、割り込み処理であるか否かの条件であってもよい。さらにまた、イベント属性情報がソースコード上の位置情報である場合は、ソースコードの特定の位置に存在するか否か、特定のファイルに記述されているか否か等の条件であってもよい。さらにまた、イベント属性情報がプログラム構造情報である場合は、特定関数であるイベント、特定関数に属しているイベント、特定関数を呼び出すイベント、条件分岐に属しているイベント、特定ループに属しているイベント等の構造情報に関する条件であってもよい。さらにまた、イベント属性情報がソースコードのコンパイル情報である場合は、コンパイラのバージョンが特定値と等しい、コンパイラのバージョン特定値より大きい、コンパイラのバージョン特定値より小さい、コンパイラ時に特定のオプションが用いられたか否か等のコンパイル時及びコンパイラに関する条件であってもよい。さらにまた、イベント属性情報がソースコードのバージョン情報である場合は、バージョン情報が特定値と等しい、バージョン情報が特定値より大きい、バージョン情報が特定値より小さい等の条件であってもよい。さらにまた、イベント属性情報がカーネルプログラムであるか否かの情報である場合は、カーネルプログラムであるか否かの条件であってもよい。さらにまた、イベント属性情報がユーザプログラムであるか否かの情報である場合は、ユーザプログラムであるか否かの条件であってもよい。さらにまた、イベント属性情報がプロセッサコア名である場合は、プロセッサコア名が特定値と等しいか否かの条件であってもよい。さらにまた、イベント属性情報がサーバ名である場合は、サーバ名が特定値と等しいか否かの条件であってもよい。さらにまた、イベント属性情報がサーバの仕様情報である場合は、サーバのコア数が特定数と等しい、サーバのコア数が特定数より大きい、サーバのコア数が特定数より小さい、サーバのメモリ容量が特定値と等しい、サーバのメモリ容量が特定値より大きい、サーバのメモリ容量より小さい、サーバのディスク容量が特定値と等しい、サーバのディスク容量が特定値より大きい、サーバのディスク容量より小さい等のサーバの仕様に関する条件であってもよいし、これらの条件のうち1つ以上の条件の組合せであってもよい。
(ヒントオブジェクト生成部)
ヒントオブジェクト生成部414は、領域指定条件候補情報取得部424によって領域指定条件候補情報格納部404から取得された領域指定条件候補情報を入力し、入力した領域指定条件候補情報に基づいてイベントを特定する領域指定条件情報を表すヒントオブジェクトを生成する。図20に実施形態2におけるヒントオブジェクトの一例を示す。なお、図20には、図19に示す領域指定条件候補リスト1901から全ての領域指定条件情報1902〜1911を取得して生成されたヒントオブジェクト2001の一例が示されている。図20に示すように、ヒントオブジェクト2001には、取得した領域指定条件情報1902〜1911をメニュー表示する項目2002〜2011の他に、“taskAの実行順序1〜5までのイベント”という新たな項目2012が含まれている。各項目2002〜2012には、これらのうちの何れか1つ以上をユーザに選択させるためのチェックボックス(選択オブジェクトまたは選択ユーザインタフェース)2017が対応づけられている。
(領域指定条件選択部)
領域指定条件選択部411は、領域指定条件候補情報取得部424によって領域指定条件候補情報格納部404から取得された領域指定条件候補情報リスト1901を入力し、入力した領域指定条件候補情報から少なくとも1つの領域指定条件情報を選択する。実施形態2では、ユーザインタフェースとして表示されたヒントオブジェクト2001(図20参照)に対するユーザの入力に基づいて、入力した1つ以上の領域指定条件情報のなかから目的の領域指定条件情報を選択する。たとえばユーザがヒントオブジェクト2001に表示された項目2002〜2012の中から“LoopAに属するイベント”2002、“LoopAのiterationイベント”2003の項目を選択する場合、ユーザは、これらに対応付けられたチェックボックス2017をそれぞれ選択する。
ユーザによってチェックボックス2017にチェックが付された項目についての領域指定条件情報は、領域指定条件情報の選択情報(図5のステップS506参照)として領域指定条件選択部411に入力される。したがって、本例では、“LoopAに属するイベント”2002、“LoopAのiterationイベント”2003の項目に対する領域指定条件情報が選択情報として領域指定条件選択部411に入力される。
なお、チェックボックス2017は、領域指定条件情報候補から領域指定条件情報を選択するための構成であればよく、図20のヒントオブジェクト2001に例示したような、領域指定条件情報候補としての項目2002〜2012それぞれに選択オブジェクトとしてチェックボックス2017を対応づけて同時表示する構成に限られない。たとえば、ファイルを用いて領域指定条件情報を選択する構成など、種々変形することが可能である。
(領域指定条件情報更新部)
領域指定条件更新部412は、領域指定条件選択部411で領域指定条件候補情報リスト1901から選択された少なくとも1つの領域指定条件情報に基づいて、領域指定条件情報格納部405に格納されている領域指定条件情報リスト2101を更新する。実施形態2では、“LoopAに属するイベント”1902、“LoopAのiterationイベント”1903の領域指定条件情報を用いて、領域指定条件情報格納部405に格納されている領域指定条件リスト2101が更新される。
(領域指定条件情報取得部および領域指定条件情報格納部)
領域指定条件情報取得部425は、たとえば領域情報生成部413からの要求に応じて領域指定条件情報格納部405から少なくとも1つの領域指定条件情報を取得する。領域指定条件情報格納部405は、少なくとも1つの領域指定条件情報を格納する記憶装置である。図21に、領域指定条件情報格納部405に格納される領域指定条件情報リスト2101の一例を示す。図21に示すように、更新後の領域指定条件情報リスト2101は、“LoopAに属するイベント”2102、“LoopAのiterationイベント”2103の領域指定条件情報を含む。
(領域情報生成部)
領域情報生成部413は、イベント情報取得部422によってイベント情報格納部402から取得されたイベント情報リスト1701を入力し、領域指定条件情報取得部425によって領域指定条件情報格納部405から取得された領域指定条件情報2101を入力し、領域名を決定し、領域指定条件情報に基づいて1つ以上のイベント情報を選択する。次に、選択されたイベント情報から領域を決定し、選択されたイベント情報に基づいて領域実行順序情報を決定して、領域情報を生成する。領域情報とは、時系列軸方向の領域を定義する情報であり、少なくとも領域を識別する情報と領域期間情報を含む情報である。領域を識別する情報とは、例えば、領域名であってもよいし、領域固有のIDであってもよい。
・領域情報の一例
図22に、領域情報の一例を示す。図22に示すように、領域情報2201は、領域の項目2202〜2205毎に、領域名と、領域時系列情報とを含む。領域時系列情報は、少なくとも領域始点実行順序情報と、領域終点実行順序情報とを含む情報である。領域名は、プログラム実行状況表示システムに表示される領域のラベルとなる情報である。領域時系列情報は、時系列軸方向の領域を定義する情報である。
例えば、領域情報2202は、領域名を“LoopAに属するイベント”、領域始点実行順序情報を“1”、領域終点実行順序情報を“9”とする情報である。
また、1つの領域指定条件情報によって指定される領域が複数存在する場合、複数の領域それぞれについて領域情報が生成される。たとえば図21に示す領域指定条件情報リスト2101に、“LoopAのiterationイベント”2103のような、複数の領域指定条件情報1904〜1906を包含する領域指定条件情報が含まれている場合、それぞれの領域指定条件情報に対して領域情報2203〜2205が生成される。
なお、領域情報は、時系列軸方向の領域を定義する情報であり、少なくとも領域名と領域時系列情報を含む情報である。領域時系列情報は、時系列軸方向の領域を定義する情報であり、少なくとも領域始点実行順序情報と領域終点実行順序情報とを含む情報に限らず、少なくとも領域実行順序情報と領域の時系列軸の幅を表す領域期間情報とを含む情報であってもよい。
ここで、選択された2つ以上のイベントが連続している範囲を1つの領域とする例を説明する。イベント情報のプログラム構造情報に基づいて、“LoopA”を構造に持つ12つのイベント情報1703、1704、1705、1706、1707、1708、1709、1710、1711、1712、1713、1714が選択された場合、イベント情報1705のプログラム構造情報が“function0:LoopA:iteration:LoopB:iteration:taskA”であるため、イベント情報1705が示すイベントは“LoopA”に属していると判定できる。そこで、領域情報生成部113は、領域を決定する。本例では、連続するイベントが連続している範囲を1つの領域とするため、イベント情報1703、1704、1705、1706、1707、1708、1709、1710、1711、1712、1713、1714のイベントの範囲を1つの領域とする。
次に、領域情報生成部413は、選択されたイベント情報のイベント実行順序情報に基づいて、領域始点実行順序情報を大小関係から決定する。選択されたイベント情報の実行順序情報は“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”であるため、最小実行順序である“1”が領域始点実行順序情報と決定される。
次に、領域情報生成部413は、選択されたイベント情報のイベント実行順序情報に基づいて、領域始点実行順序情報を大小関係から決定する。選択されたイベント情報の実行順序情報は“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”であるため、最大実行順序である“9”を領域終点実行順序情報と決定する。
次に、領域情報生成部413は、領域指定条件情報に基づいて、領域名“LoopAに属するイベント”と決定する。その後、領域情報生成部413は、領域名を“LoopAに属するイベント”とし、領域始点実行順序情報を“1”とし、領域終点実行順序情報を“9”とする領域情報2202を生成し、これを領域情報格納部406に格納する。
また、領域情報生成部413は、領域指定条件情報2103に基づいて領域情報2203、2204、2205を生成し、これらを含む領域情報2201を領域情報格納部406に格納する例を説明する。
領域指定条件2103の“LoopAのiterationイベント”の条件を満足するイベントは、“LoopAのiteration1イベント”と“LoopAのiteration2イベント”と“LoopAのiteration3イベント”である。例えば、“LoopAのiteration1に属するイベント”はイベント情報1703、1704、1705であるため、これらの範囲を1つの領域とする。
次に、選択されたイベント情報のイベント実行順序情報に基づいて、領域始点実行順序情報を大小関係から決定する。選択されたイベント情報の実行順序情報は“1”、“2”、“3”であるため、最小実行順序である“1”を領域始点実行順序情報と決定する。
次に、選択されたイベント情報のイベント実行順序情報に基づいて、領域始点実行順序情報を大小関係から決定する。選択されたイベント情報の実行順序情報は“1”、“2”、“3”であるため、最大実行順序である“3”を領域終点実行順序情報と決定する。
次に、領域指定条件情報に基づいて、領域名“LoopAのiteration1”と決定する。その後、領域名を“LoopAのiteration1”、領域始点実行順序情報を“1”、領域終点実行順序情報を“3”とする領域情報2203を生成し、これを領域情報格納部406に格納する。同様にして、LoopAのiteration2に属するイベント”と“LoopAのiteration3に属するイベント”に基づいて、領域情報2204、2205を生成し、これらを領域情報格納部406に格納する。
なお、領域とは、少なくとも1つのイベントを含む範囲である。そのため、例えば、領域指定条件情報に基づいて選択された1つのイベントを1つの領域としてもよいし、領域指定条件情報に基づいて選択された2つ以上のイベントが連続している範囲を1つの領域としてもよいし、領域指定条件情報に基づいて選択された2つ以上のイベントを全て包含する範囲を1つの領域としてもよい。
また、領域始点実行順序情報の決定方法では、領域始点実行順序情報は、条件情報に基づいて選択されたイベントのイベント情報に含まれるイベント実行順序情報に基づいて決定することができる。
また、領域終点実行順序情報の決定方法では、領域終点実行順序情報を条件情報に基づいて選択されたイベントのイベント情報に含まれるイベント実行順序情報に基づいて決定することができる。
また、領域指定条件情報に基づいて選択された1つのイベントを1つの領域とする場合の領域時系列情報の生成では、領域始点実行順序情報をイベントの実行順序情報とし、領域終点順序情報をイベントの実行順序情報としてもよい。
さらに、領域名の生成では、領域指定条件情報に基づいて領域名が決定されてもよいし、選択されたイベント情報に基づいて決定されてもよいし、外部の入力情報に基づいて決定されてもよい。
(領域情報取得部および領域情報格納部)
領域情報取得部426は、たとえば領域オブジェクト生成部409からの要求に応じて領域情報格納部406から少なくとも1つの領域情報を取得する。領域情報格納部406は、少なくとも1つの領域情報を格納する記憶装置である。
(領域オブジェクト生成部)
領域オブジェクト生成部409は、軸情報取得部423によって軸情報格納部403から取得された軸情報を入力し、領域情報取得部426によって領域情報格納部406から取得された領域情報を入力し、軸情報の時系列軸情報と領域情報の領域時系列情報とに基づいて領域を表す領域オブジェクトの時系列軸方向の表示位置を表す始点座標および終点座標と表示範囲を決定する。また、領域オブジェクト生成部409は、領域情報格納部406に格納される全ての領域情報の領域時系列情報から少なくとも画面上に表示される表示位置を表す始点座標および終点座標を決定する。この際、時系列軸方向の重複領域を判定し、重複がある場合は重複する領域情報とは異なる属性軸方向の表示位置を表す座標を決定する。さらに、実施形態2では、領域オブジェクトを長方形オブジェクトとするため、重複がある場合は重複する領域情報とは異なる属性軸方向の表示範囲も決定する。その後、領域オブジェクト生成部409は、時系列軸方向の表示位置を表す始点座標および終点座標と、時系列軸方向の表示範囲と、属性軸方向の表示位置を表す座標と、属性軸方向の表示範囲と、領域情報の領域名とを含む領域オブジェクトを生成する。
ここで、領域オブジェクト生成部409による領域オブジェクトの生成を、領域情報2202に着目して説明する。領域オブジェクト生成部409は、まず、軸情報1801の時系列軸情報1802である“1表示間隔当たりが表す実行順序情報数は1”の情報と、領域情報2202の領域の領域始点実行順序情報”1”とから、時系列方向の表示始点座標を式“(領域始点実行順序情報)÷(1表示間隔当たりが表す実行順序情報数)”を用いて“1÷1=1”を計算し、時系列軸方向の表示サイズを式“(領域始点実行順序情報と領域終点実行順序情報が含む実行順序情報数)÷(1表示間隔当たりが表す実行順序情報数)”を用いて“9÷1=9”と計算する。また、始点座標と表示サイズに基づいて終点座標を“10”と決定する。また、領域オブジェクト生成部409は、画面サイズから属性軸方向の表示位置を表す座標を決定する。
次に、領域オブジェクト生成部409は、領域情報格納部406に格納されている領域情報の領域期間情報から、領域情報2202と重複する領域情報2203、2204、2205を判定する。そして、領域情報2202を表す第1の領域オブジェクトの属性軸方向の表示範囲が領域情報2203、2204、2205を包含していることに基づいて、領域情報2202の属性軸方向の表示範囲を領域情報2203、2204、2205を表す第2の領域オブジェクトの属性軸方向の表示範囲より大きい値に決定する。
次に、領域オブジェクト生成部409は、領域情報2202の領域名から領域名を“LoopAに属するイベント”とする。その後、領域オブジェクト生成部409は、時系列軸方向の表示位置を表す始点座標および終点座標と時系列軸方向の表示範囲と属性軸方向の表示位置を表す座標と属性軸方向の表示範囲と領域名の情報とを含む領域オブジェクトを生成する。
なお、領域オブジェクトは、時系列軸方向の領域を表すオブジェクトであればよく、例えば、線オブジェクトであってもよいし、長方形オブジェクトであってもよいし、その他領域を表すオブジェクトであれば如何様にも変形することができる。
(表示部)
表示部410は、軸オブジェクトと、イベントオブジェクトと、ヒントオブジェクトと、領域オブジェクトとを表示する。以下では、図23に示す領域指定条件情報選択後のプログラム実行状況表示領域2301の例を用いて説明する。なお、本説明では、画面上に表示可能な領域のみを表示し、スクロールバーにより表示領域を変更可能とする場合を例に挙げる。
・軸オブジェクト表示
表示部410は、軸オブジェクト生成部408から軸オブジェクトを入力し、軸オブジェクトが持つ表示情報に基づいて軸オブジェクトを画面上に描画する。軸オブジェクトのうち、時系列軸オブジェクトは一定区間ごとに実行順序情報のラベルを表示し、属性軸オブジェクトは実行期間ラベルを表示する。図23に示す例では、時系列軸は、たとえば“1”から“9”までを表示してもよい。表示部410は、画面サイズもしくはウインドウサイズ等の表示サイズを入力とし、表示可能なサイズの軸オブジェクトを表示してもよいし、表示可能なサイズの軸オブジェクトにサイズを変換して表示してもよい。
・イベントオブジェクト表示
表示部410は、イベントオブジェクト生成部407からイベントオブジェクトを入力し、イベントオブジェクトが持つ表示位置を表す時系列軸方向の始点座標および終点座標と属性軸方向の座標に基づいてイベントオブジェクトを画面上に描画する。図23に示すように、本例では、イベント1704、1705、1706、1708、1709、1710、1712、1713、1714を表すイベントオブジェクトが、それぞれ順にイベントオブジェクト2306〜2314として表示される。表示部410は、画面サイズもしくはウインドウサイズ等の表示サイズを入力とし、表示可能なサイズのイベントオブジェクトを表示してもよいし、表示可能なサイズのイベントオブジェクトにサイズを変換して表示してもよい。
・ヒントオブジェクト表示
表示部410は、ヒントオブジェクト生成部414からヒントオブジェクトを入力し、ヒントオブジェクトが持つ表示位置を表す座標に基づいてヒントオブジェクト2320を画面上に描画する。図23に示すように、ヒントオブジェクト2320は、イベントオブジェクトが表示されるプログラム実行情報表示領域2301とは別のウィンドウとして表示されてもよい。また、ヒントオブジェクト2320は、常時表示されていてもよいし、ユーザインタフェースからの指示により表示してもよい。なお、図23に示す例では、“LoopAに属するイベント”、“LoopAのiterationイベント”が選択された場合が示されている。
・領域オブジェクト表示
表示部410は、領域オブジェクト生成部409から領域オブジェクトを入力し、領域オブジェクトが持つ表示位置を表す時系列軸方向の始点座標および終点座標と属性軸方向の座標に基づいて領域オブジェクトを画面上に描画する。また、領域オブジェクトが持つ領域名に基づいて領域名を表示する。図23におけるプログラム実行情報表示領域2301は、領域指定条件選択後の表示例である。ヒントオブジェクト2320では、“LoopAに属するイベント”、“LoopAのiterationイベント”が選択されているため、プログラム実行状況表示領域2301には、“LoopAに属するイベント”を指し示す領域オブジェクト2302と、“LoopAのiterationイベント”から特定される“LoopAのiteration1に属するイベント”を指し示す領域オブジェクト2303、“LoopAのiteration2に属するイベント”を指し示す領域オブジェクト2304、および、“LoopAのiteration3に属するイベント”を指し示す領域オブジェクト2305が表示される。
なお、領域オブジェクトは、領域の始点と終点を含む範囲を表現しているオブジェクトであれば、どのような表示オブジェクトとであってもよい。また、複数の領域オブジェクトの少なくとも一部分でも重なる場合、それぞれの領域オブジェクトを互いに識別可能な状態であれば、どのように表示されてもよい。
以上のように、実施形態2によれば、大量のイベントが実行されるプログラムの実行状況をユーザに対して有効且つ網羅的に提示することが可能になる。その際、ヒントオブジェクトを併せて表示することで、ユーザに対して対話的かつ有効にプログラムの実行状況を提示することが可能になる。なお、その他の構成、動作および効果は、上述した実施形態と同様であってよい。
実施形態3
つぎに、実施形態3にかかる情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システムについて、図面を参照して詳細に説明する。なお、実施形態3では、領域オブジェクトが属性軸方向の表示範囲(棒グラフ版)を持つ場合を例に挙げる。
実施形態3では、実施形態2と同様に、図13に示すプログラム1301を実行した際の実行状況を表示する場合を例に挙げる。そこで、実施形態3では、図24に示すように、イベント”taskA”2402を表示するとともに、イベント“LoopA”2403とイベント“LoopB“2404、2405、2406とを時系列軸方向の範囲情報を持つように表示させることで、複数のイベントを同時表示する。
ただし、表示装置である表示画面サイズもしくは表示ウインドウサイズには限りがあるため、一度に表示可能な属性軸の要素の数には限りがある。図25および図26に、表示装置である表示画面サイズもしくは表示ウインドウサイズに、図24に示す表示例が収まらなかった場合の表示例を示す。
図25は、属性軸要素の表示サイズを固定した例である。図25に示す例では、属性軸の実行時系列軸方向を全て表示できず、そのため、イベント“LoopA”、“LoopB”を同時に表示できない。この場合、スクロールバーなどを用いて表示範囲をシフトさせることも可能であるが、スクロールバーなどによる表示範囲のシフトでは、表示されていない属性軸の要素部を同時に見ることができないという課題が残る。
また、図26は、属性軸の全要素を同時に表示する場合を示す例である。図26に示す例では、属性軸要素の表示サイズを表示画面サイズもしくは表示ウインドウサイズから決定し表示する。そのため、描画性能で表示できない表示は文字やイベントが潰れて表示されてしまい、その結果、イベントを可視できない場合が生じる。例えば、図24におけるイベント“taskA”2406、2407および2408の実行期間では、“taskA”2406の実行期間より“taskA”2407の実行時間が大きく、“taskA”2407の実行期間より“taskA”2408の実行期間が大きいが、図26に示す例では、“taskA”2406、2407および2408に対応するイベント“taskA”2606、2607および2608の実行期間が同じとして判別されてしまい、正しい判別が行えない可能性が存在する。
そこで、実施形態3では、関連する1つ以上のイベントを領域として追加表示することで、大量のイベントの実行状況をユーザに容易に把握させることを可能にする。
実施形態3にかかるプログラム実行状況表示システムは、実施形態1で例示したプログラム実行状況表示システム401と同様の構成(図4参照)であってよい。また、実施形態3にかかるプログラム実行状況表示システムの動作は、実施形態1で例示した動作(図5参照)と同様であってよい。そこで、プログラム実行状況表示システムの構成および動作については、図4および図5を用いた説明を引用することで、ここでは詳細な説明を省略する。ただし、プログラム実行状況表示システムの各部の構成は、以下のようになる。
(イベント情報取得部およびイベント情報格納部)
イベント情報取得部422は、たとえばイベントオブジェクト生成部407および領域情報生成部413からの要求に応じてイベント情報格納部402から少なくとも1つのイベント情報を取得する。イベント情報格納部402は、実施形態2と同様に、少なくとも1つのイベント情報を格納する記憶装置である。イベント情報とは、プログラム実行時に実行されたイベント情報であり、少なくともイベント固有情報とイベント時系列情報とイベント属性情報とを含む情報である。
・イベント情報の一例
ここで、実施形態3で例示するイベント情報について説明する。実施形態3では、実施形態2と同様、図13に示すプログラム1301を実行した場合を用いる。
“LoopA”1302は、時刻“0”から時刻“1800“まで実行される。この実行期間において、“LoopB”1303は3回実行される。各イタレーションの実行期間は、時刻“0”から時刻“1000”の期間と、時刻“1000”から時刻“1300”の期間と、時刻“1300”から時刻“1800”の期間である。次に、“LoopB”の1回目のイタレーションでは、“taskA”1304が3回実行され、その実行期間は、時刻“0”から時刻“500”の期間と、時刻“500”から時刻“700”の期間と、時刻“700”から時刻“1000”の期間である。また、2回目のイタレーションでは、“taskA”1304が3回実行され、その実行期間は、時刻“1000”から時刻“1100”の期間と、時刻“1100”から時刻“1200”の期間と、時刻“1200”から時刻“1300”の期間である。また、3回目のイタレーションでは、“taskA”1304が3回実行され、その実行期間は、時刻“1300”から時刻“1400”の期間と、時刻“1400”から時刻“1500”の期間と、時刻“1500”から時刻“1800”の期間である。
図27に、実施形態3にかかるイベント情報を管理するイベント情報リストの一例を示す。図27に示すように、イベント情報リスト2701は、イベント固有情報を実行順に割当てた固有IDと、イベント時系列情報を同一プログラム構造のイベント実行順序情報と実行期間とを含む時系列情報と、属性情報をイベントが実行されたプロセッサコア名とプログラム構造情報と何回目のイタレーションであるかを表すイタレーション情報とを含む。
図27に示す例では、13つのイベント情報を保持しており、1行が1つのイベント情報を表している。例えば、イベント情報2705は、イベント固有情報の固有ID、イベント時系列情報のイベント実行順序情報、時系列軸の始点実行順序情報、時系列軸の終点実行順序情報、イベント時系列情報のイベント実行期間情報、イベント属性情報のプログラム上の構造情報、イベント属性情報の“LoopA”のイタレーション情報、イベント属性情報の“LoopB”のイタレーション情報の順に、“3”、“2”、“2”、“2”、“200”、“function0:LoopA:iteration:LoopB:iteration:taskA”、“1”、“2”という情報を持つ。イベント情報2405は、固有IDが“2”であり、同一プログラム構造を持つイベントは2回目の実行順序であり、実行期間が“200“に実行されるイベントを示している。また、イベント情報2705は、イベントがプログラム構造上“function0”内の“LoopA”内のイテレーション内の“LoopB”内のイテレーション内の“taskA”を示し、“LoopA”の1回目のイテレーションで実行された“LoopB”の2回目のイテレーションで実行された“taskA”イベントであることを示している。
また、イベント情報2703は、イベント固有情報の固有ID、イベント時系列情報のイベント実行順序情報、時系列軸の始点実行順序情報、時系列軸の終点実行順序情報、イベント属性情報のイベント実行期間情報、イベント属性情報のプログラム上の構造情報、イベント属性情報の“LoopA”のイタレーション情報、イベント属性情報の“LoopB”のイタレーション情報の順に、“1”、“1”、“1”、“3”、“1000”、“function0:LoopA:iteration:LoopB、“1”、“0”という情報を持つ。イベント情報2703は、固有IDが“1”であり、同一プログラム構造を持つイベントが1回目の実行順序であり、実行期間が“1000“に実行されるイベントを示している。また、イベント情報2703は、イベントがプログラム構造上“function0”内の“LoopA”内の1回目のイテレーション内“LoopB”イベントであることを示す。また、時系列軸の始点実行順序情報“1”と時系列軸の終点実行順序情報“3”とから、“taskA”の実行順序情報においては1回目、2回目、3回目の実行に対応することを示している。
なお、イベント固有情報、イベント時系列情報、イベント実行期間情報、実行開始時刻、実行終了時刻、実行期間、イベント実行順序情報、イベント属性情報、実行トレース情報、プログラムの静的情報、プログラムの実行環境情報は、上述した実施形態2と同様であってよい。
(軸情報取得部および軸情報格納部)
軸情報取得部423は、たとえばイベントオブジェクト生成部407、軸オブジェクト生成部408および領域オブジェクト生成部409からの要求に応じて軸情報格納部403から軸情報を取得する。軸情報格納部403は、時系列軸情報と、少なくとも1つのイベントオブジェクト属性軸情報と、少なくとも1つの領域オブジェクト属性軸情報と、少なくとも1つの表示属性特定情報とを含む軸情報を格納する記憶装置である。
ここで、軸情報とは、少なくとも時系列軸情報と、イベントオブジェクト属性軸情報と、領域オブジェクト属性軸情報とを含む情報であり、さらに、表示属性特定情報を含んでもよい。時系列軸情報は、表示装置の画面の1間隔当たりが表す“taskA”のイベントの実行順序を示す情報である。イベントオブジェクト属性軸情報および領域オブジェクト属性軸情報は、それぞれ、軸の要素名と、その表示位置を表す座標を示す情報とを含む情報である。表示属性特定情報は、表示対象となる属性を特定可能な情報である。
・軸情報の一例
図28に、軸情報2801の一例を示す。図28に示すように、軸情報2801では、時系列軸情報2802が表示間隔情報と表示間隔が示す期間情報とからなり、イベントオブジェクト属性軸情報2803〜2808が要素名情報と表示位置を表す座標と表示属性特定情報とからなり、領域オブジェクト属性軸情報2809〜2811が要素名情報と表示位置を表す座標と表示属性特定情報からなる。図28に示す例では、時系列軸情報2802は、表示間隔情報を“1”とし、表示間隔が示す実行順序情報を“1”とする。また、イベントオブジェクト属性軸情報2803は、要素名情報を“0”とし、表示位置を表す座標を“0”とし、表示属性特定情報を“表示”とする。さらに、領域オブジェクト属性軸情報2809は、要素名情報を領域実行期間“0”とし、表示位置を表す座標を“0”とし、表示属性特定情報を“表示”とする。
なお、イベントオブジェクト属性軸情報は、属性軸の要素名とその表示位置を表す座標である。属性軸の要素名としては、イベント情報リスト2701の各イベント情報のイベント属性情報に対応する情報が存在する。また、属性軸の要素名のいずれかは、属性軸に対応するイベント情報のイベント属性情報と一致する。属性軸の要素名は、プログラム実行状況表示システムが事前に保持している情報であってもよいし、ソフトウェア開発者が指定した情報であってもよい。
また、領域オブジェクト属性軸情報は、属性軸の要素名とその表示位置を表す座標である。属性軸の要素名としては、イベント情報リスト2701の各イベント情報のイベント属性情報に対応する情報が存在する。また、属性軸の要素名のいずれかは、属性軸に対応するイベント情報のイベント属性情報と一致する。属性軸の要素名は、プログラム実行状況表示システムが事前に保持していてもよいし、ソフトウェア開発者が指定した情報であってもよい。
その他、時系列軸情報および表示位置を表す座標は、上述した実施形態2と同様であってよい。ただし、イベントオブジェクト属性軸情報は領域オブジェクト属性軸情報と同じであってもよい。
(軸オブジェクト生成部)
軸オブジェクト生成部408は、軸情報取得部423によって軸情報格納部403から取得された軸情報2501を入力し、入力した軸情報2801に基づいて、プログラム実行状況を描画する座標系を形成する時系列軸オブジェクトと属性軸オブジェクトとを生成する。本説明では、座標系を2次元平面とするが、これに限らず、3次元以上の空間座標系であってもよいし、同一平面に2つ以上の2次元座標系を重ね合わせた座標系であってもよい。軸オブジェクト生成部408は、まず、時系列軸情報2802に基づいて表示装置の表示間隔1当たり1実行順序情報を表す時系列軸オブジェクトを生成する。次に、イベントオブジェクト属性軸情報および領域オブジェクト属性軸情報から要素名をラベルとし、そのラベルを表示位置を表す座標に基づいて配置する属性軸オブジェクトを生成する。ただし、属性軸オブジェクトは、イベントオブジェクトと領域オブジェクトとで共通でなくてもよい。たとえば、イベントオブジェクト属性軸要素情報に基づいてイベントオブジェクト用に属性軸オブジェクトが生成され、領域オブジェクト属性軸要素情報に基づいて領域オブジェクト用に属性軸オブジェクトが生成されてもよい。
(イベントオブジェクト生成部)
イベントオブジェクト生成部407は、実施形態2と同様に、イベント情報格納部402に格納されるイベント情報リスト2701と、軸情報格納部403に格納される軸情報2801とを、それぞれイベント情報取得部422および軸情報取得部423を介して入力する。また、イベントオブジェクト生成部407は、イベント情報のイベント実行順序情報と軸情報の時系列軸情報に基づいて時系列軸方向の表示位置を表す始点座標および終点座標と表示サイズとを決定し、イベント情報の属性情報と軸情報のイベントオブジェクト属性軸情報または領域オブジェクト属性軸情報とに基づいて属性軸方向の表示位置を表す座標を決定し、イベントまたは領域を表すイベントオブジェクトまたは領域オブジェクトを生成する。
図27に示すイベント情報2703のイベント固有ID“1”のイベントに着目して説明する。イベントオブジェクト生成部407は、まず、軸情報2801の時系列軸情報2802である“1表示間隔当たりの1実行順序情報を表す”の情報と、イベント2703の時系列軸の始点実行順序情報“1”とから、式“実行順序情報÷1表示間隔当たりが表す実行順序情報数”を用いて“1÷1=1”を計算して表示位置を表す始点座標を決定する。次に、時系列軸情報2802である“1表示間隔当たりの1実行順序情報を表す”の情報と、イベント2703の時系列軸の始点実行順序情報“1”と時系列軸の終点実行順序情報“3”とから式“実行順序情報数÷1表示間隔当たりが表す実行順序情報数”を用いて“3÷1=3”を計算して表示サイズを決定する。さらに、始点座標と表示サイズから表示位置を表す終点座標を“4”と決定する。次に、イベント情報2703のイベント属性情報の実行期間情報“1000”と、“1000”に対応する軸情報2801のイベントオブジェクト属性軸情報2804と、から属性軸方向の表示位置を表す座標を“1000”とする。次に、これらの時系列方向の表示位置を表す始点座標および終点座標、属性軸方向の表示位置を表す座標の情報を含むイベントオブジェクトを生成する。これは、領域オブジェクトについても同様である。
(領域指定条件候補情報取得部および領域指定条件候補情報格納部)
領域指定条件候補情報取得部424は、たとえば領域指定条件選択部411およびヒントオブジェクト生成部414からの要求に応じて領域指定条件候補情報格納部404少なくとも1つの領域指定条件候補情報を取得する。領域指定条件候補情報格納部404は、実施形態2と同様に、少なくとも1つの領域指定条件候補情報を格納する記憶装置である。ここで、領域指定条件候補情報とは、少なくとも1つの領域指定条件情報を含む情報である。
領域指定条件情報は、実施形態2と同様に、1つの領域始点イベント特定情報と、1つの領域終点イベント特定情報とを含む情報である。領域始点イベント特定情報は、複数のイベント情報から属性情報に基づいて特定される領域始点イベントを特定する情報である。なお、領域始点イベントは、たとえば時系列軸方向で領域内の最小の実行開始期間情報を持つイベントである。領域終点イベント特定情報は、複数のイベント情報から属性情報に基づいて特定される領域終点イベントを特定する情報である。なお、領域終点イベントとは、時系列軸方向で領域内の最大の実行終了時間を持つイベントである。
領域指定条件情報は、プログラム実行状況表示システムが事前に保持している情報であってもよいし、ソフトウェア開発者の入力による情報であってもよいし、イベント情報に基づいて生成してもよい。
また、実施形態3では、実施形態2において図19を用いて説明した領域指定条件候補情報リスト1901が用いられる。その際、イベントの時系列情報に関する条件およびイベント実行期間情報に関する条件についても、実施形態2で例示した条件と同様であってよい。
(ヒントオブジェクト生成部)
ヒントオブジェクト生成部414は、実施形態2と同様に、領域指定条件候補情報取得部424によって領域指定条件候補情報格納部404から取得された領域指定条件候補情報を入力し、入力した領域指定条件候補情報に基づいてイベントを特定する領域指定条件情報を表すヒントオブジェクトを生成する。生成されるヒントオブジェクトの一例は、図20に示したヒントオブジェクト2001と同様であってよい。
(領域指定条件選択部)
領域指定条件選択部411は、実施形態2と同様に、領域指定条件候補情報取得部424によって領域指定条件候補情報格納部404から取得された領域指定条件候補情報リスト1901を入力し、入力した領域指定条件候補情報から少なくとも1つの領域指定条件情報を選択する。そこで、実施形態3においても、“LoopAに属するイベント”2002、“LoopAのiterationイベント”2003の項目に対する領域指定条件情報がユーザによって選択された場合を例に挙げる。
(領域指定条件情報更新部)
領域指定条件更新部412は、実施形態2と同様に、領域指定条件選択部411で領域指定条件候補情報リスト1901から選択された少なくとも1つの領域指定条件情報に基づいて、領域指定条件情報格納部405に格納されている領域指定条件情報リスト2901を更新する。したがって、実施形態3では、実施形態2と同様に、“LoopAに属するイベント”1902、“LoopAのiterationイベント”1903の領域指定条件情報を用いて、領域指定条件情報格納部405に格納されている領域指定条件リスト2901が更新される。
(領域指定条件情報取得部および領域指定条件情報格納部)
領域指定条件情報取得部425は、たとえば領域情報生成部413からの要求に応じて領域指定条件情報格納部405から少なくとも1つの領域指定条件情報を取得する。領域指定条件情報格納部405は、少なくとも1つの領域指定条件情報を格納する記憶装置である。図29に、領域指定条件情報格納部405に格納される領域指定条件リスト2901の一例を示す。図29に示すように、更新後の領域指定条件情報リスト2901は、“LoopAのiteration1に属するイベント”2902と、“LoopAのiteration2に属するイベント”2903と、“LoopAのiteration3に属するイベント”2904との領域指定条件情報を含む。
(領域情報生成部)
領域情報生成部413は、実施形態2と同様に、イベント情報取得部422によってイベント情報格納部402から取得されたイベント情報リスト2701を入力し、領域指定条件情報取得部425によって領域指定条件情報格納部405から取得された領域指定条件情報2901を入力し、領域名を決定し、領域指定条件情報に基づいて1つ以上のイベント情報を選択する。次に、選択されたイベント情報から領域を決定し、選択されたイベント情報に基づいて領域実行順序情報を決定して、領域情報を生成する。領域情報とは、時系列軸方向の領域を定義する情報であり、少なくとも領域を識別する情報と領域期間情報とを含む情報である。領域を識別する情報とは、例えば、領域名であってもよいし、領域固有のIDであってもよい。
・領域情報の一例
図30に、領域情報の一例を示す。図30に示すように、領域情報3001は、領域の項目3002〜3004毎に、領域名と、領域時系列情報と、領域属性情報とを含む。領域時系列情報は、領域始点実行順序情報と、領域終点実行順序情報とからなる情報である。領域名は、プログラム実行状況表示システムに表示される領域のラベルとなる情報である。領域時系列情報は、時系列軸方向の領域を定義する情報である。領域属性情報は、領域に属するイベントの属性情報に基づいた情報である。
例えば、領域情報3002は、領域名を“LoopAのiteration1に属するイベント”とし、領域始点実行順序情報を“1”とし、領域終点実行順序情報を“3”とする情報である。したがって、領域情報3002の領域属性情報は、領域に属する実行期間“1000”である。この領域属性情報は、領域情報3002に該当する領域に属するイベント2704、2705、2706の実行期間“500”、“200”、“300”の総和である。
なお、領域時系列情報は、実施形態2と同様に、時系列軸方向の領域を定義する情報であり、少なくとも領域始点実行順序情報と領域終点実行順序情報とを含む情報であってもよいし、少なくとも領域実行順序情報と領域の時系列軸の幅を表す領域期間情報とを含む情報であってもよい。
また、領域属性情報は、領域に属するイベントの属性情報の集合情報であり、例えば、実行期間の総和であってもよいし、領域に属するイベントを実行した1つ以上報プロセッサコア情報であってもよいし、領域に属するイベントで実行された命令情報であってもよいし、領域に属するイベントで実行されたメモリアクセス情報であってもよいし、領域に属するイベントで実行された関数コール回数総和であってもよいし、領域に属するイベント内の変数の値であってもよいし、領域に属するイベントがループイタレーションである場合において何回目のイタレーションであるかの情報であってもよいし、領域に属するイベントのソースコード上の位置情報であってもよいし、領域に属するイベントのプログラム構造情報であってもよいし、領域に属するイベントのソースコードのコンパイル情報であってもよいし、領域に属するイベントのソースコードのバージョン情報であってもよいし、領域に属するイベントのプログラムがカーネルプログラムであるかの情報であってもよいし、領域に属するイベントのプログラムがユーザプログラムであるかの情報であってもよい。
プログラムの実行環境情報は、プログラムを実行した際の環境の情報であり、例えば、プロセッサコア名であってもよいし、サーバ名であってもよいし、サーバの仕様情報であってもよい。
ここで、実施形態2と同様、選択された2つ以上のイベントが連続している範囲を1つの領域とする例を説明する。イベント情報のプログラム構造情報とイタレーション回数を表す情報とに基づいて、“LoopA:iteration”を構造に持ち、かつ、LoopAのイタレーション回数が“1”のイベント情報2704、2705、2706が選択された場合、イベント情報2705のプログラム構造情報が“function0:LoopA:iteration:LoopB:iteration:taskA”であり、かつ、LoopAに対するイタレーション回数が“1”であるため、イベント情報2705が示すイベントは“LoopAのiteration1に属するイベント”と判定できる。そこで、領域情報生成部413は、領域を決定する。本例では、連続するイベントが連続している範囲を1つの領域とするため、イベント情報2704、2705、2706のイベントの範囲を1つの領域とする。
次に、領域情報生成部413は、選択されたイベント情報のイベント実行順序情報に基づいて、領域始点実行順序情報を大小関係から決定する。選択されたイベント情報の実行順序情報は、“1”、“2”、“3”であるため、最小実行順序である“1”が領域始点実行順序情報と決定される。
次に、領域情報生成部413は、選択されたイベント情報のイベント実行順序情報に基づいて、領域始点実行順序情報を大小関係から決定する。選択されたイベント情報の実行順序情報は、“1”、“2”、“3”であるため、最大実行順序である“3”が領域終点実行順序情報と決定される。
次に、領域情報生成部413は、領域指定条件情報に基づいて、領域名“LoopAのiteration1にするイベント”と決定する。その後、領域情報生成部413は、領域名を“LoopAのiteration1属するイベント”とし、領域始点実行順序情報を“1”とし、領域終点実行順序情報を“3”とし、領域に属するイベントの実行期間の総和を表す領域属性情報と“1000”とする領域情報3002を生成し、これを領域情報格納部406に格納する。
なお、領域、領域始点実行順序情報の決定方法、領域終点実行順序情報の決定方法、領域指定条件情報に基づいて選択された1つのイベントを1つの領域とする場合の領域時系列情報の生成、および、領域名の生成は、上述した実施形態2と同様であってよい。
(領域情報取得部および領域情報格納部)
領域情報取得部426は、たとえば領域オブジェクト生成部409からの要求に応じて領域情報格納部406から少なくとも1つの領域情報を取得する。領域情報格納部406は、実施形態2と同様に、少なくとも1つの領域情報を格納する記憶装置である。
(領域オブジェクト生成部)
領域オブジェクト生成部409は、実施形態2と同様に、軸情報取得部423によって軸情報格納部403から取得された軸情報を入力し、領域情報取得部426によって領域情報格納部406から取得された領域情報を入力し、軸情報の時系列軸情報と領域情報の領域時系列情報に基づいて領域を表す領域オブジェクトの時系列軸方向の表示位置を表す始点座標および終点座標と表示範囲を決定する。また、領域オブジェクト生成部409は、領域情報格納部406に格納される全ての領域情報の領域時系列情報から少なくとも画面上に表示される表示位置を表す始点座標と終点座標を決定する。この際、時系列軸方向の重複領域を判定し、重複がある場合は重複する領域情報とは異なる属性軸方向の表示位置を表す座標を決定する。さらに、実施形態3では、領域オブジェクトを長方形オブジェクトとするため、重複がある場合は重複する領域情報とは異なる属性軸方向の表示範囲も決定する。その後、領域オブジェクト生成部409は、時系列軸方向の表示位置を表す始点座標および終点座標と時系列軸方向の表示範囲と、属性軸方向の表示位置を表す座標と、属性軸方向の表示範囲と、領域情報の領域名とを含む領域オブジェクトを生成する。
ここで、領域オブジェクト生成部409による領域オブジェクトの生成を、領域情報3002に着目して説明する。領域オブジェクト生成部409は、まず、軸情報2801の時系列軸情報2802である“1表示間隔当たりが表す実行順序情報数は1”の情報と、領域情報2802の領域の領域始点実行順序情報“1”とから、時系列方向の表示位置を表す始点座標を式“(領域始点実行順序情報)÷(1表示間隔当たりが表す実行順序情報数)”を用いて“1÷1=1”を計算し、時系列軸方向の表示サイズを式“(領域始点実行順序情報と領域終点実行順序情報が含む実行順序情報数)÷(1表示間隔当たりが表す実行順序情報数)”を用いて“3÷1=3”を計算する。始点座標と表示サイズに基づいて終点座標を“4”と決定する。また、領域オブジェクト生成部109は、画面サイズから属性軸方向の表示位置を表す座標を決定する。
つぎに、領域オブジェクト生成部409は、領域情報3002の領域の実行期間を表す領域属性情報と、軸情報2801の領域オブジェクト属性軸要素情報2809、2810、2811とに基づいて、属性軸方向の表示範囲を決定する。例えば、少なくとも属性軸方向の表示範囲が属性軸方向の表示始点情報と属性軸方向の表示終点情報とを含むため、属性軸方向の表示始点情報は、領域の実行期間“0”を表す領域オブジェクト属性軸要素情報2809から“0”と決定される。また、属性軸方向の表示終点情報は、領域の実行期間を表す領域属性情報“1000”と、“1000”に対応する領域オブジェクト属性軸要素情報2811とから、属性軸方向の表示終点情報“600”と決定される。次に、領域情報3002の領域名から領域名を”LoopAのiteration1に属するイベント”とする。その後、領域オブジェクト生成部109は、時系列軸方向の表示位置を表す始点座標および終点座標と時系列軸方向の表示範囲と属性軸方向の表示位置を表す座標と属性軸方向の表示範囲と領域名の情報を含む領域オブジェクトを生成する。
なお、領域オブジェクトは、実施形態2と同様に、時系列軸方向の領域を表すオブジェクトであればよく、例えば、線オブジェクトであってもよいし、長方形オブジェクトであってもよいし、その他領域を表すオブジェクトであれば如何様にも変形することができる。
(表示部)
表示部410は、実施形態2と同様に、軸オブジェクトと、イベントオブジェクトと、ヒントオブジェクトと、領域オブジェクトとを表示する。以下では、図31に示す領域指定条件情報選択後のプログラム実行状況表示領域3101の例を用いて説明する。なお、本説明では、画面上に表示可能な領域のみを表示し、スクロールバーにより表示領域を変更可能とする場合を例に挙げる。
・軸オブジェクト表示
表示部410は、軸オブジェクト生成部408から軸オブジェクトを入力し、軸オブジェクトが持つ表示情報に基づいて軸オブジェクトを画面上に描画する。軸オブジェクトのうち、時系列軸オブジェクトは一定区間ごとに実行順序情報のラベルを表示し、属性軸オブジェクトは実行期間ラベルを表示する。時系列軸は、たとえば“1”から“9”までを表示してもよい。表示部410は、画面サイズもしくはウインドウサイズ等の表示サイズを入力とし、表示可能なサイズの軸オブジェクトを表示してもよいし、表示可能なサイズの軸オブジェクトにサイズを変換して表示してもよい。
・イベントオブジェクト表示
表示部410は、イベントオブジェクト生成部407からイベントオブジェクトを入力し、イベントオブジェクトが持つ表示位置を表す始点座標および終点座標に基づいてイベントオブジェクトを画面上に描画する。図31に示すように、実施形態3では、イベント2704、2705、2706、2708、2709、2710、2712、2713、2714を表すイベントオブジェクトをそれぞれ順にイベントオブジェクト2506〜2514として表示される。表示部110は、画面サイズもしくはウインドウサイズ等の表示サイズを入力とし、表示可能なサイズのイベントオブジェクトを表示してもよいし、表示可能なサイズのイベントオブジェクトにサイズを変換して表示してもよい。
・ヒントオブジェクト表示
表示部410は、ヒントオブジェクト生成部414からヒントオブジェクトを入力し、ヒントオブジェクトが持つ表示位置を表す座標に基づいてヒントオブジェクト3120を画面上に描画する。図31に示すように、ヒントオブジェクト3120は、イベントオブジェクトが表示されるプログラム実行情報表示領域3101とは別のウィンドウとして表示されてもよい。また、ヒントオブジェクト3120は、常時表示されていてもよいし、ユーザインタフェースからの指示により表示してもよい。
・領域オブジェクト表示
表示部410は、領域オブジェクト生成部409から領域オブジェクトを入力し、領域オブジェクトが持つ表示位置を表す始点座標および終点座標に基づいて領域オブジェクト3103〜3105を画面上に描画する。また、領域オブジェクト3103〜3105が持つ領域名に基づいて領域名を表示する。図31におけるプログラム実行情報表示領域3101は、領域指定条件選択後の表示例である。ヒントオブジェクト3120では、“LoopAのiterationイベント”が選択されているため、プログラム実行状況表示領域3101には、“LoopAのiteration1に属するイベント”を指し示す領域オブジェクト3103、“LoopAのiteration2に属するイベント”を指し示す領域オブジェクト3104、および、“LoopAのiteration3に属するイベント”を指し示す領域オブジェクト3105が表示される。
なお、実施形態2と同様に、領域オブジェクトは、領域の始点と終点を含む範囲を表現しているオブジェクトであれば、どのような表示オブジェクトとであってもよい。また、複数の領域オブジェクトの少なくとも一部分でも重なる場合、それぞれの領域オブジェクトを互いに識別可能な状態であれば、どのように表示されてもよい。
以上のように、実施形態3によれば、大量のイベントが実行されるプログラムの実行状況をユーザに対して有効且つ網羅的に提示することが可能になる。その際、ヒントオブジェクトを併せて表示することで、ユーザに対して対話的かつ有効にプログラムの実行状況を提示することが可能になる。なお、その他の構成、動作および効果は、上述した実施形態と同様であってよい。
実施形態4
つぎに、実施形態4にかかる情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システムについて、図面を参照して詳細に説明する。なお、実施形態4では、領域オブジェクトが属性軸方向の表示範囲(プロット版)を持つ場合を例に挙げる。
実施形態4では、実施形態3と同様に、図13に示すプログラム1301を実行した際に、図24に示すように、イベント”taskA”2402を表示するとともに、イベント“LoopA”2403とイベント“LoopB“2404、2405、2406とを時系列軸方向の範囲情報を持つように表示させることで、複数のイベントを同時表示する場合を例に挙げる。
実施形態4にかかるプログラム実行状況表示システムは、実施形態1で例示したプログラム実行状況表示システム401と同様の構成(図4参照)であってよい。また、実施形態4にかかるプログラム実行状況表示システムの動作は、実施形態1で例示した動作(図5参照)と同様であってよい。そこで、プログラム実行状況表示システムの構成および動作については、図4および図5を用いた説明を引用することで、ここでは詳細な説明を省略する。ただし、プログラム実行状況表示システムの各部の構成は、以下のようになる。
実施形態4において、イベント情報取得部422と、軸情報取得部423と、領域指定条件候補情報取得部424と、領域指定条件情報取得部425と、領域情報取得部426と、イベント情報格納部402と、軸情報格納部403と、軸オブジェクト生成部408と、イベントオブジェクト生成部407と、領域指定条件候補情報格納部404と、ヒントオブジェクト生成部414と、領域指定条件選択部411と、領域指定条件更新部412と、領域指定条件情報格納部405と、領域情報生成部413と、領域情報格納部406と、領域オブジェクト生成部409と、表示部410と、入力部415とは、実施形態3と同様であってよい。
また、実施形態4において、プログラム1301の実行例(図13)と、イベント情報と、イベント固有情報と、イベント時系列情報と、イベント実行期間情報と、実行開始時刻、実行終了時刻および実行期間と、イベント実行順序情報と、イベント属性情報と、実行トレース情報と、プログラムの静的情報と、プログラムの実行環境情報と、軸情報と、時系列軸情報と、属性軸情報と、表示属性特定情報と、イベントオブジェクト属性軸情報と、領域オブジェクト属性軸情報およびその属性軸の要素名と、表示位置を表す座標と、領域オブジェクト属性軸情報およびその属性軸の要素名と、属性軸オブジェクトと、領域指定条件候補情報と、領域指定条件情報と、イベントの時系列情報に関する条件と、イベント実行期間情報に関する条件と、イベント属性情報に関する条件と、ユーザインタフェース(ヒントオブジェクト)と、領域情報と、領域時系列情報と、領域名と、領域時系列情報と、領域属性情報と、プログラムの実行環境情報と、領域と、領域始点実行順序情報の決定方法と、領域終点実行順序情報の決定方法と、領域指定条件情報に基づいて選択された1つのイベントを1つの領域とする場合の領域時系列情報の生成と、領域名の生成と、領域オブジェクトの属性軸方向の表示サイズとは、実施形態3で例示したものと同様であってよい。
ただし、実施形態4では、領域オブジェクト生成部409が生成する領域オブジェクトが、長方形オブジェクト(図31参照)から楕円オブジェクトに変更されている。したがって、表示部410が表示するプログラム実行状況表示領域は、図32に示すようになる。
・軸オブジェクト、イベントオブジェクト、ヒントオブジェクト表示
図32に示すように、実施形態4にかかるプログラム実行状況表示領域3201は、実施形態3と同様に、軸オブジェクト生成部108から軸オブジェクトを入力し、イベントオブジェクト生成部107からイベントオブジェクトを入力し、ヒントオブジェクト生成部414からヒントオブジェクトを入力し、それぞれが持つ表示位置を表す座標に基づいて、軸オブジェクト、イベントオブジェクト3206〜3214、ヒントオブジェクト3220を画面上に描画する。
・領域オブジェクト表示
また、表示部410は、領域オブジェクト生成部409から領域オブジェクトを入力し、領域オブジェクトが持つ表示位置を表す始点座標と終点座標に基づいて領域オブジェクト3203〜3205を画面上に描画する。また、領域オブジェクト3203〜3205が持つ領域名に基づいて領域名を表示する。その結果、実施形態4では、領域オブジェクト3203〜3205として楕円オブジェクトが生成されているため、図32に示すように、プログラム実行状況表示領域3201には、楕円形の領域オブジェクト3203〜3205が表示される。
領域オブジェクト3203〜3205は、実施形態3のように、それぞれが対応するイベントオブジェクト3206〜3214を包含している必要はない。すなわち、領域オブジェクト3203〜3205は、各領域オブジェクト3203〜3205が対応するイベントオブジェクトをユーザが目視により判別可能な形態であれば、どのように表示されてもよい。なお、これは、上述した実施形態においても同様である。
以上のように、実施形態4によれば、大量のイベントが実行されるプログラムの実行状況をユーザに対して有効且つ網羅的に提示することが可能になる。その際、ヒントオブジェクトを併せて表示することで、ユーザに対して対話的かつ有効にプログラムの実行状況を提示することが可能になる。なお、その他の構成、動作および効果は、上述した実施形態と同様であってよい。
なお、上記実施形態およびその変形例は本発明を実施するための例にすぎず、本発明はこれらに限定されるものではなく、仕様等に応じて種々変形することは本発明の範囲内であり、更に本発明の範囲内において、他の様々な実施形態が可能であることは上記記載から自明である。例えば実施形態に対して適宜例示した変形例は、他の実施形態と組み合わせることも可能であることは言うまでもない。
401…プログラム実行状況表示装置、402…イベント情報格納部、403…軸情報格納部、404…領域指定条件候補情報格納部、405…領域指定条件情報格納部、406…領域情報格納部、407…イベントオブジェクト生成部、408…軸オブジェクト生成部、409…領域オブジェクト生成部、410…表示部、411…領域指定条件選択部、412…領域指定条件情報更新部、413…領域情報生成部、414…ヒントオブジェクト生成部、422…イベント情報取得部、423…軸情報取得部、424…領域指定条件候補情報取得部、425…領域指定条件情報取得部、426…領域情報取得部

Claims (10)

  1. 複数のイベントの発生時間または発生順序に関する時系列情報を含むイベント情報を取得する第1取得部と、
    時系列の第1座標軸を決定する第1軸情報を含む軸情報を取得する第2取得部と、
    前記複数のイベントのうちの1以上のイベントが当てはまる条件を指定する指定条件情報を取得する第3取得部と、
    前記軸情報に基づいて、前記第1座標軸を表す第1軸オブジェクトを生成する第1生成部と、
    前記指定条件情報で指定される条件に当てはまる前記1以上のイベントの前記イベント情報と前記第1軸情報とに基づいて前記条件を表す領域オブジェクトを生成する第2生成部と、
    を備え、
    前記第2生成部は、前記指定条件情報で指定される条件に当てはまる前記1以上のイベントそれぞれの始点のうちの最先の始点に基づいて、前記領域オブジェクトの前記第1座標軸における始点座標を決定するとともに、前記指定条件情報で指定される条件に当てはまる前記1以上のイベントそれぞれの終点のうちの最後の終点に基づいて、前記領域オブジェクトの前記第1座標軸における終点座標を決定する、
    情報処理システム。
  2. 前記イベントの実行結果を表すイベントオブジェクトを生成する第3生成部を更に備え、
    前記イベント情報は、前記イベントの属性に関するイベント属性情報を更に含み、
    前記軸情報は、前記イベントの属性に関する第2座標軸を決定する第2軸情報を更に含み、
    前記第1生成部は、前記第2軸情報に基づいて、前記第2座標軸を表す第2軸オブジェクトを更に生成し、
    前記第3生成部は、
    前記時系列情報と前記第1軸情報とに基づいて、前記第1座標軸における前記イベントオブジェクトの座標を決定し、
    前記イベント属性情報と前記第2軸情報とに基づいて、前記第2座標軸における前記イベントオブジェクトの座標を決定する、
    請求項1に記載の情報処理システム。
  3. 前記時系列情報は、前記イベントの実行開始時刻を表すイベント始点情報と、前記イベントの実行終了時刻を表すイベント終点情報とを更に含み、
    前記第3生成部は、前記イベント始点情報と前記第1軸情報とに基づいて、前記第1座標軸における始点座標および終点座標を決定し、
    前記第2生成部は、
    前記指定条件情報で指定される条件に当てはまる前記1以上のイベントそれぞれの前記第1座標軸における前記始点座標のうち最小の始点座標から前記領域オブジェクトの前記始点座標を決定し、
    前記指定条件情報で指定される条件に当てはまる前記1以上のイベントそれぞれの前記第1座標軸における前記終点座標のうち最大の終点座標から前記領域オブジェクトの前記終点座標を決定する、
    請求項2に記載の情報処理システム。
  4. 前記条件をユーザが選択可能なユーザインタフェースであるヒントオブジェクトを生成する第5生成部を更に備え、
    前記第3取得部は、前記ヒントオブジェクトを介した選択操作に応じて、少なくとも1つの前記指定条件情報を取得する、
    請求項1乃至3のいずれか1項に記載の情報処理システム。
  5. 前記第2生成部は、前記指定条件情報で指定される条件に当てはまる前記1以上のイベントの前記イベント属性情報の集合情報を表現する前記領域オブジェクトを生成する、
    請求項2又は3に記載の情報処理システム。
  6. 前記第2生成部は、異なる2つの領域オブジェクトにおいて、第1の領域オブジェクトに関する前記始点座標から前記終点座標までの間に、第2の領域オブジェクトに関する前記始点座標が存在する場合、前記第1の領域オブジェクトと前記第2の領域オブジェクトとが前記第2座標軸に対して異なる位置に配置されるように前記第1の領域オブジェクトおよび第2の領域オブジェクトを生成する、
    請求項2、3又は5に記載の情報処理システム。
  7. 前記第2軸情報は、前記イベント属性情報を表現するイベント属性軸情報と、前記集合情報を表現する領域属性軸情報とを含み、
    前記第1生成部は、前記イベント属性情報のためのイベント属性軸オブジェクトと、前記集合情報のための領域属性軸オブジェクトとを含む前記第2軸オブジェクトを生成する、
    請求項5に記載の情報処理システム。
  8. 複数のイベントの発生時間または発生順序に関する時系列情報を含むイベント情報を取得し、
    時系列の第1座標軸を決定する第1軸情報を含む軸情報を取得し、
    前記複数のイベントのうちの1以上のイベントが当てはまる条件を指定する指定条件を取得し、
    前記軸情報に基づいて、前記第1座標軸を表す第1軸オブジェクトを生成し、
    前記指定条件で指定される条件に当てはまる前記1以上のイベントの前記イベント情報それぞれの始点のうちの最先の始点に基づいて前記第1座標軸における始点座標を決定し、
    前記指定条件で指定される条件に当てはまる前記1以上のイベントの前記イベント情報それぞれの終点のうちの最後の終点に基づいて前記第1座標軸における終点座標を決定し、
    前記始点座標と前記終点座標と前記第1軸情報とに基づいて前記条件を表す領域オブジェクトを生成する、
    ことを含む、プログラム情報生成方法。
  9. 複数のイベントを含むプログラムの情報を生成するコンピュータを機能させるためのプログラム情報生成プログラムであって、
    複数のイベントの発生時間または発生順序に関する時系列情報を含むイベント情報を取得する第1取得処理と、
    時系列の第1座標軸を決定する第1軸情報を含む軸情報を取得する第2取得処理と、
    前記複数のイベントのうちの1以上のイベントが当てはまる条件を指定する指定条件を取得する第3取得処理と、
    前記軸情報に基づいて、前記第1座標軸を表す第1軸オブジェクトを生成する第1生成処理と、
    前記指定条件で指定される条件に当てはまる前記1以上のイベントの前記イベント情報と前記第1軸情報とに基づいて前記条件を表す領域オブジェクトを生成する第2生成処理と、
    を前記コンピュータに実行させ、
    前記第2生成処理は、前記指定条件で指定される条件に当てはまる前記1以上のイベントそれぞれの始点のうちの最先の始点に基づいて、前記領域オブジェクトの前記第1座標軸における始点座標を決定するとともに、前記指定条件で指定される条件に当てはまる前記1以上のイベントそれぞれの終点のうちの最後の終点に基づいて、前記領域オブジェクトの前記第1座標軸における終点座標を決定する、
    プログラム情報生成プログラム。
  10. 請求項2に記載の情報処理システムと、
    前記第1軸オブジェクトと前記第2軸オブジェクトとで表現された座標系に前記領域オブジェクトを配置することでプログラムの情報を可視化する表示部と、
    を備えるプログラム情報表示システム。
JP2014144506A 2013-07-22 2014-07-14 情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システム Active JP6437226B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014144506A JP6437226B2 (ja) 2013-07-22 2014-07-14 情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システム
US14/333,778 US9285949B2 (en) 2013-07-22 2014-07-17 Data processing system, method and program product of creating program information, and program information display system

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013152137 2013-07-22
JP2013152137 2013-07-22
JP2014144506A JP6437226B2 (ja) 2013-07-22 2014-07-14 情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システム

Publications (3)

Publication Number Publication Date
JP2015043197A JP2015043197A (ja) 2015-03-05
JP2015043197A5 JP2015043197A5 (ja) 2015-04-16
JP6437226B2 true JP6437226B2 (ja) 2018-12-12

Family

ID=52344702

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014144506A Active JP6437226B2 (ja) 2013-07-22 2014-07-14 情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システム

Country Status (2)

Country Link
US (1) US9285949B2 (ja)
JP (1) JP6437226B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6258159B2 (ja) 2014-08-26 2018-01-10 株式会社東芝 プログラム情報生成システム、方法、及びプログラム
JP6686536B2 (ja) 2016-03-02 2020-04-22 株式会社リコー 情報処理装置、及びプログラム
CN106499152B (zh) * 2016-10-21 2019-08-06 肖文辉 Pvc复合地板

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3224426B2 (ja) * 1992-09-04 2001-10-29 富士通株式会社 プログラム解析支援装置
US5872909A (en) * 1995-01-24 1999-02-16 Wind River Systems, Inc. Logic analyzer for software
JPH0916434A (ja) * 1995-06-27 1997-01-17 Nippon Denki Ido Tsushin Kk Cpu暴走時の障害情報検出方法
US6332212B1 (en) * 1997-10-02 2001-12-18 Ltx Corporation Capturing and displaying computer program execution timing
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US20030151627A1 (en) * 2002-02-14 2003-08-14 International Business Machines Corporation System and method for controlling real-time display
US6975963B2 (en) * 2002-09-30 2005-12-13 Mcdata Corporation Method and system for storing and reporting network performance metrics using histograms
US20050132121A1 (en) * 2003-12-16 2005-06-16 Wind River Systems, Inc. Partitioned operating system tool
US7698686B2 (en) * 2005-04-15 2010-04-13 Microsoft Corporation Method and apparatus for performance analysis on a software program
US8438571B2 (en) * 2010-02-24 2013-05-07 International Business Machines Corporation Thread speculative execution and asynchronous conflict
JP5957893B2 (ja) * 2012-01-13 2016-07-27 ソニー株式会社 情報処理装置及び情報処理方法、並びにコンピューター・プログラム
US20130290934A1 (en) * 2012-04-30 2013-10-31 Gregory Simon Monitoring applications executing on a computer device using programmatic triggers

Also Published As

Publication number Publication date
US20150026702A1 (en) 2015-01-22
US9285949B2 (en) 2016-03-15
JP2015043197A (ja) 2015-03-05

Similar Documents

Publication Publication Date Title
US8810576B2 (en) Manipulation and management of links and nodes in large graphs
US9471213B2 (en) Chaining applications
US20120304121A1 (en) Method, processing device, and article of manufacture for providing instructions for displaying time-dependent information and for allowing user selection of time ranges
US20160110220A1 (en) Dynamic suggestion of next task based on task navigation information
US10705806B1 (en) Managing an application variable using variable attributes
US8832583B2 (en) Visualizing entries in a calendar using the third dimension
KR20170073604A (ko) 데이터 미리보기를 통한 작업 작성 기법
CN104380344A (zh) 用于并行依赖图评估的可视化工具
JP6258159B2 (ja) プログラム情報生成システム、方法、及びプログラム
JP6299599B2 (ja) 情報システム構築支援装置、情報システム構築支援方法および情報システム構築支援プログラム
US20150160930A1 (en) Presenting a custom view in an integrated development environment based on a variable selection
JP6437226B2 (ja) 情報処理システム、プログラム情報生成方法、プログラム情報生成プログラム、および、プログラム情報表示システム
JP2016514296A (ja) キュー監視及び視覚化
US20110107305A1 (en) Visualizing Thread Life Time in Eclipse
US8850404B2 (en) Relational modeling for performance analysis of multi-core processors using virtual tasks
US9384070B2 (en) Display information generating device, program-execution status display system, program-execution status display method, and computer program product
US11789775B2 (en) Progress visualization of computational job
KR102282284B1 (ko) 오브젝트 집합의 시각적 표현을 제공하는 방법, 장치, 기기 및 저장 매체
US20200073679A1 (en) Objectively measuring and changing visual aesthetics of a graphical user interface of an application
JP2013023080A (ja) ダイヤスジ作成システム、スジの時刻変更方法およびプログラム
JP6189232B2 (ja) プログラム情報生成システム、その方法、プログラム、およびプログラム情報表示システム
JP6744484B2 (ja) システム開発支援装置および方法
US20210232386A1 (en) Project visualizations
JP2006185316A (ja) 業務分析支援プログラム、業務分析支援装置および業務分析支援方法
JP2017191622A (ja) 情報生成システム、その方法およびそのプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150220

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20151102

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160909

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170829

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180320

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180507

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: 20181016

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181114

R151 Written notification of patent or utility model registration

Ref document number: 6437226

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151