JP5428912B2 - 集計方法、集計プログラム、集計装置 - Google Patents

集計方法、集計プログラム、集計装置 Download PDF

Info

Publication number
JP5428912B2
JP5428912B2 JP2010025536A JP2010025536A JP5428912B2 JP 5428912 B2 JP5428912 B2 JP 5428912B2 JP 2010025536 A JP2010025536 A JP 2010025536A JP 2010025536 A JP2010025536 A JP 2010025536A JP 5428912 B2 JP5428912 B2 JP 5428912B2
Authority
JP
Japan
Prior art keywords
processing content
processing
aggregation
unit
program
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
JP2010025536A
Other languages
English (en)
Other versions
JP2011164839A (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 JP2010025536A priority Critical patent/JP5428912B2/ja
Publication of JP2011164839A publication Critical patent/JP2011164839A/ja
Application granted granted Critical
Publication of JP5428912B2 publication Critical patent/JP5428912B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本願は、プログラムを実行した処理装置から収集した情報に基づいて、プログラムの性能分析を行なう技術に関する。
プログラムを実行した情報処理装置から実行中の処理内容を示す情報などを収集し、収集した情報について集計処理を行なって得た集計結果に基づいて、実行した当該プログラムの動作の確認を行なう、いわゆるプログラムの性能分析が従来行なわれている。
プログラムの性能分析に関して集計処理を行なう手法として、非特許文献1において、例えば一定の時間間隔で関数プロファイルをサンプリングし、サンプリングした関数プロファイルを0〜10,10〜20,20〜30[秒]といった時間範囲ごとに集計することにより、関数の実行時間内訳を計算する手法が提案されている。
山村周史著 情報処理学会論文誌 時系列データの統計解析によるPCクラスタシステム解析手法の提案 Vol.47 No.SIG12(ACS15) pp.250−261(2006)
非特許文献1によれば、定められた時間範囲において、サンプリングされた関数プロファイルの集計により、定められた時間範囲においてそれぞれの関数がどの程度の時間実行されていたかを示すものとして、関数の実行時間内訳を算出する。しかしながら、分析対象のプログラムと並行して、他のプログラムが同じ情報処理装置で実行された場合は、当該他のプログラムの処理に情報処理装置のCPUが割り当てられるため、関数の実行時間内訳において、他のプログラムに関する処理も割合を占める。
すると、ある情報処理装置において、実行されているプログラムが分析対象のプログラムのみであれば、ある時間範囲内に行なわれる処理であっても、他のプログラムが実行されることにより、同じ時間範囲内に処理されないといった事態が生じ得る。この場合、他のプログラムの処理に当該情報処理装置のCPUがどの程度割り当てられるかによって、同じ時間範囲内に行なわれる分析対象のプログラムに関する処理量も変動すると考えられ、それに応じて当該時間範囲に占める分析対象のプログラムの実行時間も変動すると考えられる。
また、分析対象のプログラム以外の処理は、ユーザが予期せずに実行されることもある。ユーザが予期せず実行される処理として、例えば、OSのカーネル関数、もしくはガーベッジコレクションなどが考えられる。これらの処理が実行されることで、定められた時間範囲内に占める分析対象のプログラムに関する処理の実行時間は予期せず変動しうる。
定められた時間範囲あたりの分析対象のプログラムに関する処理の実行時間が変動すると、その内訳から分析対象のプログラムの動作を確認することは困難になる。例えば、他のプログラムも並行して実行されている場合に、複数の時間範囲における関数の実行時間内訳において、分析対象のプログラムに属する関数の割合の変化を見出したとしても、その変化が分析対象のプログラムの動作にそもそも起因するものか、他のプログラムの実行時間割合の増減に起因するものか判別できないといった事態が考えられる。
本願は、分析対象のプログラムについて、他のプログラムの影響を低減させて処理内容を示す情報の集計を行なうことを目的にする。
本発明では、情報処理装置が実行している処理内容を所定の時間間隔でサンプリング処理して得られた処理内容情報の集計処理において、所定の複数種類の処理内容のいずれかを示す処理内容情報を、所定の個数含む処理内容情報群について、処理内容ごとに集計を行なう。
本発明によれば、分析対象のプログラムについて、他のプログラムの影響を低減させて、処理内容を示す情報の集計を行なうことができる。
第一の実施形態にかかる集計システムの構成図 条件設定のフロー図 集計処理のフロー図 第二の実施例における集計部1の構成図 第二の実施例における集計処理のフロー図 カウンタに対応付けられる情報例 サンプリングしたデータの例 集計したデータの例 処理内容ごとの実行割合の時間変化(モデル図1) 処理内容ごとの実行割合の時間変化(モデル図2) 処理内容ごとの実行割合の時間変化(モデル図3) 処理内容ごとの実行割合の時間変化(モデル図4) 処理内容ごとの実行割合の時間変化(モデル図5) 処理内容ごとの実行割合の時間変化(モデル図6) 処理内容のリスト 関数の実行割合の時間変化 関数の実行割合の時間変化(適用例1) 関数の実行割合の時間変化(適用例2) 第一の実施形態の装置構成図 関数の実行割合を示す表
以下、本発明の実施形態について具体的に説明する。本発明は、以下に説明する実施の形態のみに限定するものでない。
本実施形態においては、プログラムを実行した情報処理装置から実行中の処理内容をサンプリング処理して得られたデータ(以下、サンプリングデータ)について、集計処理を行なう。この処理内容とは、例えば、実行しているプログラムのプログラム名であっても、実行している関数の関数名であっても、両方を含む内容であっても良い。
本実施形態においては、サンプリングデータのうち、所定の複数種類の処理内容のいずれかを示すデータが所定の個数含まれるデータの集合を集計の単位と定め、その定められた集計の単位に含まれるデータについて、計数の対象とする処理内容について計数を行なうことで、集計を行なう。それにより、例えばサンプリングデータが示す処理内容の実行割合を算出する。
この集計の単位を定める複数種類の処理内容と、集計の単位を定めるデータの数と、処理内容ごとの計数の対象となる処理内容とは、集計前に予め定めたものであれば良い。予め定めた種類、値を用意しておいても良いし、ユーザが集計処理のたびに設定可能にしても良い。
[第一の実施形態]
第一の実施形態について説明する。
[本実施形態にかかる集計システムの構成]
図19に、本実施形態にかかる集計システムの装置の構成例を示す。図19に示す集計システムは、集計装置E1と、集計装置E1と通信可能な記憶装置E2、処理装置E3と、もしくはネットワークE4を介して集計装置E1と通信可能な記憶装置E5、処理装置E6と、中継装置E7などを含んで構成される。本集計システムは、集計装置E1と通信可能なE2〜E6の一部を含む構成であっても、全てを含む構成であっても良い。
集計装置E1は、キーボード、マウスなどの入力装置と、ディスプレイなどの表示装置と、他の装置と通信するための通信インターフェースと、入力装置、通信インターフェースなどで受け付ける入力に応じた処理を行なうプロセッサ(例えばCPU)を含んで構成される。
記憶装置E2は、例えばハードディスクなどを含んだストレージ装置が考えられる。もしくは、CDやDVDなどの記憶媒体と、それらの記憶媒体にデータを読み書き可能なディスクドライブなどであっても良い。
処理装置E3は、プロセッサを備えたコンピュータなどの情報処理装置であり、自身のプロセッサにおいて実行されるプログラムの処理内容を観測し、その結果を出力可能なものとする。
記憶装置E4、処理装置E5は、集計装置E1とネットワークE4を介して通信可能な記憶装置と処理装置であり、記憶装置E2、処理装置E3と同様の機能を備えた装置である。
上記の装置を含む本実施形態に係る集計システムの構成を図1に示す。本実施形態に係る集計システムは集計部1、条件指定部2、表示制御部3、記憶部4、入力部5、表示部6、通信部7を備えている。
記憶部4は、分析対象のプログラムを実行する処理装置から、処理装置が実行している処理内容を示す情報を一定時間間隔でサンプリング処理されたデータを保持し、集計部1の読出しに応じてデータを出力する。なお、記憶部で保持されるデータは、分析対象のプログラムを処理装置E3又は処理装置E5で実行して取得したものでも良いし、集計装置E1で実行して取得したものでも良いし、全く別の処理装置において取得されたものでも良い。
入力部5は、ユーザの入力操作を条件指定部2に伝達し、表示部6は、表示制御部3の制御に応じた表示を行なう。
条件指定部2は、入力部5を用いた入力操作に応じて、集計部1に集計に関する条件を指示し、表示制御部3に表示に関する条件を指示する。集計に関する条件とは、例えば、どの処理内容に基づいて集計の単位を定めるか、集計の単位を定めるデータ数、計数の対象とする処理内容などが挙げられる。表示に関する条件として、例えば集計結果を表示する際のグラフの種類(折れ線グラフ、棒グラフなど)、グラフの表示範囲の指定などである。
集計部1は、通信部7を介してサンプリングデータを取得し、条件指定部2の指示に基づいてデータを集計し、集計結果を表示制御部3に出力する。
表示制御部3は、集計部1から集計結果を取得し、集計結果を表示部6に表示させる制御を行なう。集計結果の表示については後述するが、例えば、図6に示すテーブルの表示、図6のテーブルに基づくグラフの表示などの制御を行なう。
通信部7は、集計部1の指示に応じて他の装置と通信処理を行なう。
集計部1、条件指定部2、表示制御部3、入力部5、表示部6、通信部7の機能は、図18の集計装置E1で実現されても良い。その場合、マウス、キーボードなどの入力装置で入力部5の機能を実現することが考えられ、ディスプレイなどの表示装置で表示部6の機能を実現することが考えられ、適切な通信インターフェースにより通信部7の機能を実現することが考えられ、プロセッサに本件に係るプログラムを実行させることで集計部1、条件指定部2、表示制御部3の機能を実現させることが考えられる。
記憶部4は、記憶装置E2、もしくは記憶装置E4で実現されても良い。もしくは、集計装置E1がハードディスクなどの記憶媒体を含み、集計装置E1が備えた記憶媒体によって記憶部4の機能を実現しても良い。また、記憶部4の機能は、CDやDVDなどの記憶媒体とそれらを読み出し可能な装置で実現しても良い。
通信部7が処理装置E3、処理装置E5との通信処理を行なうことで、サンプリングデータを取得する場合には、処理装置が実行している処理内容を示す情報についての一定時間間隔のサンプリングに応じて、サンプリングデータをリアルタイムで取得しても良い。
さらに、入力部5と表示部6を一体化して、タッチパネル式のディスプレイを用いても良い。
[設定処理のフロー]
条件指定部2の指示に基づいて、集計部1と表示制御部3の設定を行なうフローの例を図2に示す。
設定処理を開始する(S11)と、ユーザから集計に関する条件を入力され、条件指定部2は、その入力内容を受け付ける(S12)。次に、条件指定部2は、設定すべき条件を設定する指示を集計部1と表示制御部3に出力する(S13)。
集計部1への指示とは、例えば、集計の単位を定める処理内容の指定と、集計の単位を定めるデータ数の指定と、計数の対象とする処理内容の指定などである。集計の単位を定める処理内容とデータ数を指定とは、どの処理内容を示すデータをいくつ含んだデータの集合に対して集計を行なうかを定める指定である。サンプリングデータのうち、指定された処理内容のいずれかを示すデータを指定された個数含むデータの集合を集計の単位とする。計数の対象とする処理内容の指定とは、この集計の単位に含まれるデータに対して、どの処理内容を示すデータの計数を行なうかを定める指定である。また、表示制御部3には、集計結果をどのように表示させるかを指示する。
集計部1と表示制御部3は、条件指定部2からの指示に基づき、設定を変更する(S14)。設定を変更した後、ユーザからの集計処理の開始指示を入力されると、開始指示を受け付け、図3の集計処理を開始する(S16)。開始せずに再度設定処理を行なう場合は、S12のフローへ戻る。
[集計処理のフロー]
図1に記載の集計システムが行なう集計処理のフローの例を図3に示す。
集計処理開始の指示が入力される(S20)と、記憶部からサンプリングデータを読み出す(S21)。読み出したサンプリングデータが示す処理内容を識別し(S22)、条件指示部2に計数の対象とされた処理内容であれば、その処理内容についてカウントする(S23)。この際、読み出したサンプリングデータが示す処理内容が、計数の対象とされなかった処理内容である場合は、カウントしなくても良いし、指示されなかった処理内容を示すデータの一つとしてカウントしても良い。
次に、読み出したデータが集計の単位を定める処理内容に該当するかを判断し(S24)、該当する場合は、集計の単位を定める処理内容を示すデータとしてカウントする(S25)。該当しない場合は、S21のフローに戻る。
さらに、集計の単位を定める処理内容を示すデータの総数が、条件指定部2から指定された集計の単位を定めるデータ数に達しているか判断する(S26)。集計の単位を定める処理内容を示すデータのカウントが集計の単位を定めるデータ数に達していない場合は、S21のフローに戻る。
集計の単位を定める処理内容を示すデータの数が、集計の単位を定めるデータ数に達した場合は、それまでに行なったそれぞれの処理内容についてのデータ数を表示制御部3に出力する(S27)。同時にそれぞれの処理内容のカウントを初期化する。
次にサンプリングデータの全てについて集計処理を行なったかを判断し(S28)、サンプリングデータ全てに集計を行なっていた場合、集計処理を終了する(S29)。サンプリングデータが残っている場合は、再度S21のフローに戻る。
[第二の実施形態]
第一の実施形態に係る集計部1は、例えば以下の構成を有していても良い。
図4に、集計部1の構成例を示す。集計部1は、判別部10、計数部11(カウンタ11a〜11nによって構成される)、基準カウンタ12、データバッファ13、取得部14を備えて構成される。
取得部14は、記憶部4から通信部7を介してサンプリングデータを読み出す処理を行ない、読み出したデータを判別部10とデータバッファ13に出力する。
判別部10は、条件指定部2の指示に基づき、計数部11の各カウンタと各カウンタに割り当てられている処理内容とを対応させ、読み出したデータが示す処理内容と対応するカウンタ11a〜カウンタ11nにカウンタの値に1加算する指示を出力する。
計数部11は複数のカウンタで構成され、計数の対象とする処理内容それぞれについてカウンタが割り当てられている。計数部11においては、判別部10からの指示に基づいて各カウンタの値を1加算する。各カウンタのうち、集計の単位を定める処理内容に対応するカウンタの値を加算した場合、基準カウンタ12に値を1加算する指示を出力する。また、基準カウンタ12の指示に応じて、各カウンタの値を表示制御部3に出力する。
基準カウンタ12は、計数部11の命令に応じてカウンタの値を1加算する。また、基準カウンタ12の値が、条件指定部2に指示された集計の単位を定めるデータ数と同じである場合に、計数部11に各カウンタの値の出力を指示する。
データバッファ13は、取得部14が出力したデータを一時的に記憶し、直近に読み込んだデータの時刻情報を基準カウンタ12の指示に応じて表示制御部3に出力する。
表示制御部3に出力する時刻情報は、データバッファ13に格納されているデータから時刻情報を読み出す方法以外にも、連続して読み出すデータの時刻差、もしくはユーザが入力したサンプリング処理の時間間隔と、集計の単位に含まれるデータ数に基づいて算出可能である。
[設定フロー]
条件設定のフローは、第一の実施形態と同様に図2のフローで行なわれる。
ユーザから集計に関する条件の入力がされる(S11)と、条件指定部2は、その入力内容を受け付け(S12)、設定すべき条件を設定する指示を集計部1と表示制御部3に出力する(S13)。
集計部1への指示とは、例えば、それぞれのカウンタがどの処理内容を示すデータについて計数するかというカウンタの割り当ての指定と、基準カウンタのカウントに反映させる対象のカウンタの指定と、集計の単位を定めるデータ数の指定とを含むことができる。また、表示制御部3には、集計結果をどのように表示させるかを指示する。
集計部1と表示制御部3は条件指定部2からの指示に基づき、設定を変更する(S14)。S14において、集計部1は各カウンタの設定と、集計の単位を定めるデータ数の設定を行ない、表示制御部3は出力形式の設定を行なう。
設定を変更した後、ユーザからの開始指示を入力されると、開始指示を受け付け、図5に示す集計処理のフローを開始する(S16)。
[集計処理フロー]
次に、図5を用いて、図4に示す集計部1を備えた集計システムが行なう集計処理のフローの例について説明する。集計処理開始(S31)前に、集計に関する条件は、図2に示す設定フローにより既に設定されている。
集計処理をスタートすると(S31)、まず各カウンタの値をリセットする(S32)。次に判別部10は、記憶部4からサンプリングデータを読み出し、そのデータが示す処理内容と対応するカウンタの値を1加算する(S33)。
S33で加算したカウンタが条件指定部2によりカウントの反映を指定されたカウンタであった場合、基準カウンタ12の値を1加算する(S35)。S33で加算したカウンタが条件指定部2によりカウントの反映を指定されていないカウンタである場合は、S36のフローに移行する。
次に、基準カウンタ12の値と集計の単位を定めるデータ数と比較する(S36)。比較した結果、基準カウンタ12の値が集計の単位を定めるデータ数に満たない場合は、取得部14がデータの読み出しを行なうフロー(S33)に移行する。基準カウンタ12の値が集計の単位を定めるデータ数と同じ場合は、計数部11の各カウンタの値と、データバッファ13に記憶されている直近に読み出したデータの時刻情報を表示制御部3に出力する(S37)。
次に、サンプリングデータを読み出したかを判断する(S38)。サンプリングデータを全て処理した場合は、集計処理を終了し(S39)、まだサンプリングデータがある場合は、S32のフローに移行し、再度S32〜S37の集計処理を行なう。
各カウンタとカウントする処理内容との関係の例を図6に示す。PIDは、プログラムのIDを示す。各カウンタは、条件指定部2の指定により、処理内容(PID及び関数名)と対応付けられており、それぞれは対応付けられた処理内容を示すデータについて計数を行なう。
さらに、それぞれのカウンタは、自らの計数を基準カウンタに反映させるかどうかを条件指定部2に指定されている。図6では、例として、識別情報を付加しており、識別情報が「1である」カウンタについては、計数を行なうたびに、その計数を基準カウンタにも反映させるなどとすればよい。
設定によって、ユーザは自在に計数の対象とする処理内容と、集計の単位を定める処理内容を指定できる。ユーザは実行時間内訳を求めたいプログラム又は関数毎にカウンタを割り当て、集計の単位を定める処理内容のみについて割り当てられたカウンタの計数を基準カウンタに反映させればよい。
図6に示した例であれば、「PID:26112」の「mult_bench::copy_u」と「mult_bench::memcpy_s」集計の単位を定める処理内容としており、この2つの処理内容を示すデータについて計数するたびに基準カウンタ12の値を加算することになる。
この設定はユーザが自在に行なうことができ、1つのプログラムに属する複数の関数を選択しても良いし、複数のプログラムから複数の関数を選択してもよい。つまり、複数のプログラムに関する処理内容を、集計の単位を定める処理内容とすることもできる。これは、例えば協働して動作するプログラムの性能分析に用いることが考えられる。
また、図6に示したカウンタと処理内容の対応で、カウンタ11dは「PID:26112」が実行する関数のうち他のカウンタで対応付けられていない関数を「その他」として対応付けている。これにより、それぞれの関数の実行時間内訳は求める必要がなくとも、何らかの関数が実行されていたものとして実行時間内訳に含めることができる。
また、カウンタ11nは、他のカウンタで対応付けられなかった処理内容を対応付けている。ユーザが指定しない処理内容についても計数しておくことで、ユーザが指定しない処理がどれだけされていたかという実行環境についての情報を得ることができる。
[データ形式]
図7に、プログラムを実行している処理装置から、実行している処理内容を示す情報を一定時間間隔でサンプリングしたサンプリングデータの例を示す。図7のサンプリングデータは、0.1ミリ秒ごとに、サンプリングの対象とするCPUのIDと、プログラムのIDと、関数名と、時刻情報をサンプリングしたものである。サンプリングデータは、記憶部4に記憶され、取得部14によって読み出される。
図8に、集計部1の集計処理による集計結果の例を示す。図8では、プログラム名と関数名で処理内容を示しており、集計の単位において、計数の対象とする処理内容ごとにカウントされた数を示している。そのカウントされた数と合わせて集計部1が出力した時刻情報をT1,T2,…,Tnとしている。
[表示制御]
表示制御部3は、集計部1から取得した集計結果を表示部6に表示させる制御を行なう。また、表示制御以外にも入力部5から入力される指示に応じて、出力形式を整えて、何らかの記憶媒体に保存するようにしても良い。
出力形式は、図8のデータテーブルを表示部6に表示させても良いし、グラフを作成して表示させることが考えられる。図8のデータテーブルに示される各集計の単位における各処理内容ごとの集計値は、それぞれサンプリングされた時刻情報と関連付けられており、その推移をグラフ化しても良い。
集計されたデータを用いて、処理内容ごとのデータ数の時間変化を折れ線グラフとしても良いし、面グラフとして示しても良い。また複数の処理内容の合算量、さらには全体量の評価も必要となることが考えられるので、積み上げの面グラフにすることも考えられる。
縦軸を処理内容ごとのデータ数とせず、集計の単位を定めるデータ数に対する比を求めて、処理の実行割合としても良い。実行割合を算出し、積み上げの面グラフとした場合、集計単位を定める処理内容についての実行割合の合算量は、常に1となる。
時間方向の座標は、集計されたデータの時刻(図8のT1,T2,・・・,Tn)をそのまま用いても良いし、1つ前の集計データの時刻を用いても良いし、その2つの中間値を用いても良い。また、集計結果のプロット位置は、集計データごとに等間隔に配置してもよいし、実際の時刻の間隔を反映させた間隔で配置しても良い。また、各集計の単位が含むデータに示される最も早い時刻と最も遅い時刻で、各集計単位の時間範囲を示しても良い。
また、集計されたデータの時刻情報と、その1つ前の集計されたデータの時刻との差分により、集計の単位に含まれるデータをサンプリングするのにかかった時間を算出可能である。この時間の時間変化を折れ線グラフ等にしても良い。
さらには、実行割合の推移を時間軸でなく、データ数に対して表示しても良い。集計の単位を定めるデータ数を例えば10000とした場合、横軸を0〜9999,10000〜19999,…といったようにして、データ数の範囲においての処理の実行割合を表示可能である。また、集計の単位を定める処理内容を示すデータの数だけでなく、各集計の単位に含まれる全てのデータの数を含めても良い。
[性能バグの見当づけ]
集計した結果を表示させ、表示結果を入手することで、ユーザは、性能バグの見当付けなどの性能分析を行なうことができる。
性能バグとは、プログラムのバグであって、誤動作を引き起こさず、単に動作を遅くするものをいう。ユーザは、性能バグが存在するプログラム、もしくは関数に対してデバッグを行ない、性能バグを改善することでプログラムの性能の向上を図る。
処理に時間のかかるプログラム又は関数は、性能バグを含んでいると考えられ、そのようなプログラム又は関数を見出すことで、効率的に性能改善を行なうことができる。そのため、処理に時間のかかるプログラム又は関数を見出すことも、性能分析の目的の1つである。
また、頻繁に呼び出される関数に対して、少しでも性能改善できれば、呼び出し回数に応じた性能向上が見込める。そのため、呼び出し回数の多いプログラム又は関数を見出すことも性能分析の目的の1つである。
また、特定の関数の頻繁な呼び出しに関しては、特定の関数を頻繁に呼び出すプログラム又は関数を見出すことができれば、そのプログラム又は関数を見直し、例えば、呼び出される関数の処理内容を含めることで改善が見込める。
上記に例示した、性能バグを含むプログラム又は関数などの処理は、集計の単位ごとの実行割合の推移にもとづいて見当づけることが可能である。例えば、性能バグを含んでいると考えられる処理と、頻繁に呼び出される処理については、実行割合を多く占めることが考えられるし、特定の関数を頻繁に呼び出す処理については、実行割合を多く占める関数と同時期に実行割合を占めると考えられる。そのような処理を見出すため、それぞれの処理が占める実行割合の増減を判別できる必要がある。
さらに、CPUの待機状態(アイドル状態)を示すデータが実行割合を多く占めるのと同時期に実行割合を占める処理は、アイドル状態を引き起こしやすいとも考えられ、そのような処理ないようについての情報も性能分析に役立つ情報となる。
ユーザは集計結果を入手して、その集計結果から上記のプログラム又は関数を見出し、性能分析を行なう。
[表示例]
記憶部4に既に蓄積されたデータに対して集計処理を行なう場合、ユーザは、同じデータに対して繰り返し集計処理を行なうことができ、そのたびに設定を変更することで、同じデータから異なった集計結果を得ることができる。
図9〜図14、図16〜図18のグラフを用いて、集計処理の設定による集計結果の違いを説明する。図9〜図14のグラフは、処理内容ごとの実行割合の推移を簡単なモデルで示した例であり、図16〜図18のグラフは、実際に処理内容をサンプリング処理して得たサンプリングデータに基づいて作成したグラフである。
図9〜図10、図12、図16は、処理装置が実行している処理内容を一定の時間間隔(例えば0.1ミリ秒など)でサンプリング処理して得たサンプリングデータを複数個含む所定の時間範囲(この例では1秒間)単位で、処理内容ごとのデータを集計し、実行割合を求めて作成したグラフを示している。
図11、図13〜図14、図17〜図18は、サンプリングデータのうち、指定した処理内容のいずれかを示すデータを指定した個数(例えば10000個)含むデータの集合を集計の単位として、計数の対象とする処理内容ごとのデータを集計し、実行割合を求めて作成したグラフを示している。
図9に、処理装置においてプログラムAのみが実行された場合をモデルとして、処理の実行割合を示すグラフの例を示す。このモデルは、処理装置において、CPUが待機状態になることなく、プログラムAに属する関数1と関数2のどちらかを実行していることを想定している。図9は、そのモデルにおける関数1と関数2の処理を示すデータの割合の時間推移を示している。図9に示すグラフにおいて集計の単位としている時間範囲は1秒間である。
図9に示す図は、簡単なモデル図であり、実際のグラフは図9に示すよりも複雑に推移する。また、一般には分析対象のプログラムを実行する処理装置において、ユーザが実行したプログラムのみが実行されることは考えにくい。実際には、ユーザが実行したプログラムの動作に応じて、OS(オペレーティングシステム)によるカーネルや、ガーベッジコレクションなどが動作することが考えられる。
図10は、プログラムA以外のプログラムが同時に動作した場合の処理内容の実行割合を示すグラフの例である。図10は、分析対象のプログラムを実行する処理装置において、経過時間が6秒の時点から、プログラムBの処理がCPUを5割占有した場合をモデルとしている。
図10の6秒以降の区間では、プログラムBが集計の単位においてCPUの割り当てを5割占めているため、プログラムAのプログラムAのCPUの割り当ても5割減少する。例えば、図9に示す実行割合の実行環境下において、6〜7秒の間に実行されていたプログラムAの処理は、図10に示す実行環境下においては、6〜8秒において実行されることとなる。
図10の実行環境下で、6〜8秒に実行されたプログラムAに関する処理は、図9の実行環境下での6〜7秒に実行された処理と同じであると考えられるが、その様子を図9の6〜7秒の区間と図10の6〜8秒の区間から把握することは困難である。
例えば、図9において、5〜6秒区間の実行割合と比べて、6〜7秒区間の関数実行割合は、ほぼ同じ割合を示しているが、図10においては、5〜6秒区間に比べて6〜7秒区間では関数1、関数2ともに実行割合が減少している。この図10の6〜7秒区間については、プログラムAの実行割合も減少しているため、プログラムAに比して各関数の実行割合が減少しているかは定かではない。これは、図10が得られた場合に、プログラムBが動作しなかった場合に6〜7秒区間に関数の実行割合がどう推移するかを把握できないことを意味する。つまり、分析対象のプログラム以外の処理が実行されることによって、その処理が実行されなかった場合に分析対象のプログラムに関する処理の実行割合の推移を把握できず、性能バグの見当づけが難しくなると考えられる。
図10に示したモデルでは、プログラムBのCPU割り当てが5割であるので、プログラムAに関する図10の6〜7秒区間と7〜8秒区間の実行割合を合算することで、図9の6〜7秒の区間と対応付けることができる。これは、モデルとして、CPU割り当てをたまたま5割としたために、図9の6〜7秒の区間と図10の6〜8秒の区間を対応づけられるが、実際には、多数のプログラムが予期しないタイミングで動作するため、分析対象のプログラムのみが実行された場合との対応付けは不可能である。
さらに、図10の6〜7秒区間や7〜8秒区間に示すように、関数1と関数2の実行割合が推移することについては、その原因を判別できない。それは、単純にCPUの割り当てが減少したために、図9よりもプログラムAに関しては少ないデータ数で集計されており、プログラムAの細かい実行割合推移が明らかになったのか、関数1又は関数2がプログラムBと関連した動作を行なうために、図10に示す実行割合になったのか、などの原因が考えられるからである。
従って、ユーザが、性能バグを含む処理内容の見当付けを行なう場合に、分析対象とする処理以外の処理によって、集計の単位に含まれる分析対象の処理内容を示すデータの数は変動しうる。そのため、ユーザが集計単位とする時間範囲の設定によって、性能バグの特定を見出す目的を果たせない場合もありうる。
集計の単位を定める時間範囲の設定は、ユーザの設定により決定される事項であり、その設定次第で得られる実行割合の時間推移のグラフは、異なったものになる。
ユーザが、性能バグを含む処理内容の見当付けを行なう場合にも、設定次第で得られる情報は異なる。例えば、細かい時間範囲を単位として集計することで、実行される関数の順序を見出すことができるかもしれないし、それよりも長い時間範囲を単位とすることで、単に同じ時間範囲で動作していることのみしか見出せなくなることもありうる。また、細かすぎる時間範囲を単位とすると、処理の順序のみの情報が提供されることになる。
図10に例示した実行環境下であっても、指定した処理内容を示すデータを指定した個数含むデータの集合を集計の単位とすることで、指定した処理内容のみが実行された場合と同等な集計単位ごとの処理の実行割合を求めることができる。
図10に示したモデルについて、プログラムAに属する関数を示すデータを指定した個数(例えば10000個など)含むデータの集合を集計単位として集計することが考えられる。図11は、その集計単位ごとの処理の実行割合のグラフである。
処理内容を複数指定することで、集計の単位内に指定した処理内容がそれぞれどの程度含まれるかという推移を知ることができる。図11においては、プログラムAに属する関数として、関数1、関数2の2つが集計単位を定める処理内容として指定されている。
図11において、いずれの集計単位においてもプログラムAに関するデータの数は同じであるため、プログラムAに関する処理の実行割合の和は、各集計の単位において一定になる。そのため、図9に示す、プログラムAのみが動作した場合と、プログラムAに関しては同等な実行割合推移を表示することができる。ただし、それぞれの集計単位を指し示す時間表示は図9と図11で異なる。前述のように、例えば、プログラムAに関するデータ数で横軸を表示しても良い。
図11の6〜8秒の区間は、図9の6〜7秒区間と同数のプログラムAに関するデータについて集計した結果であり、図9の6〜7秒区間と図11の6〜8秒の区間のプログラムAの実行割合は同じであると考えられる。
指定された処理内容を示すデータを指定された個数含むデータの集合を集計の単位とした場合についても、集計の単位を定めるデータ数の設定によって実行割合の時間推移のグラフは、異なったものになる。この点については、集計単位の時間範囲の設定と同様にユーザが適宜設定する。
指定した処理内容を示すデータが所定数含まれるデータを単位とした集計によって、他の処理内容を示すデータを除き、指定した処理内容のみの実行割合推移を提供するために、必ずしもグラフ化する必要はない。例えば、図8に示す形式の表を表示部6に表示させることで、指定した処理内容のみの実行割合推移を提供可能である。図9〜図11にグラフで示した集計結果について表で図20(a)〜(c)に示す。図9に対応する表が図20の(a)であり、図10に対応する表が図20の(b)であり、図11に対応する表が図20の(c)である。
図20(a)に、プログラムAのみが動作した場合に、6〜7秒区間、7〜8秒区間、8〜9秒区間における関数1と関数2に関するデータ数を示している。また、図20(b)に、プログラムAとプログラムBのそれぞれCPUの割り当てが5割である場合に、6〜7秒区間、7〜8秒区間、8〜9秒区間における関数1、関数2とプログラムBに関するデータ数を示している。また、図20(c)に、プログラムAとプログラムBのそれぞれCPUの割り当てが5割である場合に、プログラムAを示すデータを10000個含む区間における関数1、関数2とプログラムBに関するデータ数を示しており、そのそれぞれの区間の時刻は、6〜8秒、8〜10秒、10〜12秒となっている。
この例においては、集計の対象となるデータの時刻間隔は0.1[ms]であるとする。図20(a)、図20(b)のそれぞれの集計の単位において、0.1[ms]間隔のデータを1秒間分含めるため、サンプリングのミスなどがなければ、データ数は10000個である。
図20(a)においては、6〜7秒区間の関数1を示すデータ数が3000で、関数2を示すデータ数が7000であるのに対し、図20(b)においては、関数1を示すデータ数が1200で、関数2を示すデータ数が3800となっている。図20(b)の6〜7秒区間のプログラムAに関するデータ数は5000であり、図20(a)の6〜7秒区間の集合単位の一部分を単位として集計したものであるといえる。そのため、図20(a)において関数1と関数2の実行割合が3000:7000なのに対し、図20(a)においては1200:3800と関数1の割合が少なくなっているが、この違いが、単純に図20(a)と集計の単位が異なることに起因するのか、プログラムBの動作と連動する動作がプログラムAに発生したことに起因するのかは判別できない。
一方で、図20(c)に示す表においては、集計の単位に含まれるプログラムAに関するデータの数は同じであると考えられるので、関数1と関数2それぞれに関するデータの数も同じであることが予想される。図20(c)に示す6〜8秒区間の関数1と関数2それぞれのデータ数は、図20(a)の6〜7秒区間と同じである。その場合、図20(b)6〜7秒区間、7〜8秒区間に示すデータ数の推移が得られたのは、単純にプログラムBの処理にCPUを割り当てたために、プログラムAの図20(a)の6〜7秒区間に該当する処理が遅延したためであると予想できる。これが大きく異なる場合、プログラムAとプログラムBが何かしら連動して動作していることが予想される。
上述したように、分析対象のプログラムに関するデータを指定されたデータ数含むデータの集合を単位として集計することで、グラフのみでなく、表として表示しても、分析対象のみが動作した場合と同様の性能分析を行なうことができる。
また、他のプログラムが動作することに起因して、プログラムAに図9の動作にない関数が動作することも考えられる。例えば、プログラムAの動作中に、プログラムCが動作し、プログラムCが動作すると同時にプログラムAの関数3が動作した場合をモデルとして、処理の実行割合のグラフを図12に示す。
図12には、プログラムCが動作して、プログラムCにCPUが35%割り当てられ、プログラムAの関数3に15%割り当てられた場合を示している。この場合も、指定した処理内容を示すデータを指定されたデータ数含むデータの集合を単位として集計することで、指定した処理内容のみが動作した場合の処理の実行割合の推移と、対応付けることのできる処理の実行割合の推移を取得することができる。
図13に、プログラムAに関する処理を示すデータを指定して集計の単位を決めて、集計した場合の処理の実行割合の推移を示す。
この場合、プログラムCと関数3は、何かしら連動して動作していることが予想できるが、図10の例と同じく、関数1と関数2の実行割合が図9の例と異なることの原因を判別できない。
図14に、プログラムAの関数1と関数2を示すデータを指定されたデータ数含むデータの集合を単位として、集計した場合の処理の実行割合の推移を示す。
図14では、関数1と関数2の実行割合の推移は、図9での実行割合の推移と同様に推移している。このことから、プログラムCも関数3もCPU割り当ての増減以外に関数1と関数2の実行割合の推移に影響を及ぼしていないことなどが推測できる。
図9〜14において、モデルを用いて、指定した処理内容を示すデータを指定されたデータ数含むデータの集合を単位とする集計について説明した。上記の説明は、あくまでモデルであり、実際に分析対象のプログラムを処理装置に実行させ、サンプリングしたデータについて集計し、グラフ化したものの例として、図16〜18にそのグラフを示す。
図15に、図16〜図18に集計結果を示される集計処理において、計数の対象となった処理内容のリストを示す。以下に説明する処理内容についてのみ引き出し線を付けている。凡例のパターンと、引き出し線で示されたF1〜F6の指定は、図16〜図18の処理の実行割合を示す領域と対応している。
F1に示す処理内容は、分析対象のプログラムに関連する関数を示す処理内容である。F2に示す処理内容は、F1から分析対象のプログラムと連動するカーネル関数を除いたものである。F3は、CPUがアイドル状態にあり、どの処理も実行していないことを示している。F4の処理内容は、分析対象のプログラムに関するカーネル関数を示している。F5の処理内容は、スレッド間での排他制御に関わる関数を示している。F6は、「../libjvm.so:::oop_oop_iterate_nv」、「.../libc−2.3.4.so:memcpy」、「.../libjvm.so:::copy_to_survivor_space」という関数を示している。
図16は、所定の時間範囲(この例においては0.3秒間)に得られたデータの集合を単位として、関数リストに示した関数ごとに集計を行なったものである。図17は、サンプリングデータについて、関数リストのF1に該当する関数を示すデータを指定されたデータ数含むデータの集合を単位として、関数リストに示した関数ごとに集計を行なったものである。図18は、サンプリングデータについて、関数リストのF2に該当する関数を示すデータを指定されたデータ数含むデータの集合を単位として、関数リストに示した関数ごとに集計を行なったものである。
図16においては、各集計の単位に含まれる処理内容ごとの割合を示しており、処理内容の実行割合の和は、全ての集計の単位において1である。所定の時間範囲ごとに集計を行なっているため、グラフの時間軸の表示は一定間隔で表示される。図16においては3プロットごとに時間を表示しており、その表示は0.9秒間隔で一定である。
図17、図18においては、各集計の単位で、指定した処理内容を示すデータ数は同じであり、指定した処理内容の実行割合の和は、全ての集計単位において1である。集計するデータの集合に、指定した処理内容以外の処理も当然含まれているので、時刻表示は一定間隔でない。
指定された処理内容のデータ数に応じて集計の単位を定めることによって、性能バグを含む処理内容の見当づけられる場合について、以下に図17、図18を図16と比較しつつ説明する。図17のグラフは、F1に示す処理内容を指定し、図18のグラフは、F2に示す処理内容を指定した場合である。
例えば、図16のグラフにおいては、3秒、9秒、19秒、24秒近辺F3で示すアイドル状態の割合が増加している。それに対して、例えば、F6で示す関数は、同時期に関数の割合が増加しているのか判断できない。
これに対し、図17、図18のグラフにおいては、F6で示す関数のF1に示す関数の中での実行割合が、F3で示すCPUのアイドル状態と同期して増大していることが分かる。このことから、F6で示す関数が実行されることで、F3で示すアイドル状態を引き起こしているなどと見当づけられる。その点に関して改善し、CPUの待機状態を減らすことができれば、プログラムの性能が向上すると考えられる。
分析対象のプログラムに含まれる関数に、分析対象のプログラムに含まれない他の処理内容を引き起こす原因がある場合、引き起こされた他の処理によって、分析対象のプログラムにおける処理の実行割合の増減を判別できない事がある。その場合に、処理内容を指定して集計単位を定めると、分析対象のプログラムに含まれる関数であって、他のプログラムと相関する関数を見出すことができることがある。
例えば、図16のグラフで経過時間が10秒から16秒の間において、F4で示す関数の実行割合が増大している。この関数は、分析対象のプログラムと協働するカーネル関数である。図16、図17のグラフでは、10秒から16秒の間において、協働している関数の見当をつけることはできない。
F4で示す関数を除いて処理内容を指定して集計の単位を定めると、図18のグラフの10秒から16秒の間に示すように、F2に含まれる、例えばF5に示す関数の実行割合が増大している。このF5で示す関数は、カーネル関数の実行割合の増大と同期しており、F5に該当する関数の動作によってカーネル関数が呼び出されていると見当をつけることができる。そこで、F5で示す関数についてカーネル関数の呼び出し回数を少なくするように改善することで、プログラムの性能向上を図ることなどが考えられる。
1 集計部
2 条件指定部
3 表示制御部
4 記憶部
5 入力部
6 表示部
7 通信部
10 判別部
11 計数部
12 基準カウンタ
13 データバッファ
14 取得部
E1 集計装置
E2 記憶装置
E3 処理装置
E4 ネットワーク
E5 記憶装置
E6 処理装置
E7 中継装置

Claims (12)

  1. 情報処理装置が実行している処理内容を所定の時間間隔でサンプリング処理して得られた処理内容情報の集計処理を、コンピュータに実行させる集計プログラムにおいて、
    所定の複数種類の処理内容のうちのいずれかを示す処理内容情報を、所定の個数含む処理内容情報群について、処理内容ごとに集計を行なうこと
    をコンピュータに実行させることを特徴とする集計プログラム。
  2. 前記処理内容情報のそれぞれは、
    前記情報処理装置からサンプリング処理されたときの時間の情報を含み、さらに、
    プログラムを識別する情報、関数を識別する情報のうち少なくとも1つを含むこと
    を特徴とする請求項1記載の集計プログラム。
  3. 前記コンピュータに、
    連続してサンプリング処理された処理内容情報であって、前記複数種類の処理内容のいずれかを示す処理内容情報を前記個数含む処理内容情報群について、前記集計を行なうこと
    を実行させることを特徴とする請求項1又は請求項2に記載の集計プログラム。
  4. 前記コンピュータに、さらに、
    前記複数種類の処理内容と、前記個数の指定の受け付けを行なうこと
    を実行させることを含み、
    指定された前記複数種類の処理内容のいずれかを示す処理内容情報を、指定された前記個数含む処理内容情報群について、前記集計を行なうこと
    を前記コンピュータに実行させることを特徴とする請求項1〜請求項3のいずれか1つに記載の集計プログラム。
  5. 前記指定に、
    前記集計において計数の対象とする複数種類の処理内容の指定をさらに含み、
    前記コンピュータに、
    計数の対象として指定された複数種類の処理内容ごとに、前記集計を行なうこと
    を実行させることを特徴とする請求項4記載の集計プログラム。
  6. 前記計数の対象とする複数種類の処理内容の指定が、
    同一のプログラムに属する複数種類の関数を計数の対象とする指定であること
    を特徴とする請求項4又は請求項5記載の集計プログラム。
  7. 前記コンピュータに、
    サンプリング処理された処理内容情報から、前記処理内容情報群を複数設定し、前記処理内容情報群ごとに前記集計を行なうこと
    を実行させることを特徴とする請求項1〜請求項6のいずれか1つに記載の集計プログラム。
  8. 前記コンピュータに、さらに、
    前記集計による処理内容ごとの集計値を、前記集計を行なった前記処理内容情報群ごとに表示すること
    を実行させることを特徴とする請求項7記載の集計プログラム。
  9. 前記コンピュータに、さらに、
    前記集計による処理内容ごとの集計値と、前記個数との比を計算し、
    前記比を、前記集計を行なった前記処理内容情報群ごとに表示すること
    を実行させることを特徴とする請求項8に記載の集計プログラム。
  10. 前記コンピュータが、
    前記集計の前記処理内容情報群に含まれる処理内容情報が示す時間の情報の範囲を、前記処理内容情報群ごとに対応付けて表示すること
    を実行させることを特徴とする請求項8又は請求項9に記載の集計プログラム。
  11. 情報処理装置が実行している処理内容を所定の時間間隔でサンプリング処理して得られた処理内容情報の集計方法において、
    所定の複数種類の処理内容のうちのいずれかを示す処理内容情報を、所定の個数含む処理内容情報群について、処理内容ごとに集計を行なうこと
    を特徴とする集計方法。
  12. 情報処理装置が実行している処理内容を所定の時間間隔でサンプリング処理して得られた処理内容情報の集計を行なう集計装置において、
    所定の複数種類の処理内容のうちのいずれかを示す処理内容情報を、所定の個数の処理内容情報群について、処理内容ごとに集計を行なう手段
    を備えることを特徴とする集計装置。

JP2010025536A 2010-02-08 2010-02-08 集計方法、集計プログラム、集計装置 Expired - Fee Related JP5428912B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010025536A JP5428912B2 (ja) 2010-02-08 2010-02-08 集計方法、集計プログラム、集計装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010025536A JP5428912B2 (ja) 2010-02-08 2010-02-08 集計方法、集計プログラム、集計装置

Publications (2)

Publication Number Publication Date
JP2011164839A JP2011164839A (ja) 2011-08-25
JP5428912B2 true JP5428912B2 (ja) 2014-02-26

Family

ID=44595460

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010025536A Expired - Fee Related JP5428912B2 (ja) 2010-02-08 2010-02-08 集計方法、集計プログラム、集計装置

Country Status (1)

Country Link
JP (1) JP5428912B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6131829B2 (ja) * 2013-10-31 2017-05-24 富士通株式会社 情報処理装置、情報処理装置の解析方法および情報処理装置の解析プログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4899511B2 (ja) * 2006-02-08 2012-03-21 富士通株式会社 システム分析プログラム、システム分析装置、およびシステム分析方法
JP4893325B2 (ja) * 2007-01-17 2012-03-07 富士通株式会社 システム分析プログラム、該プログラムを記録した記録媒体、システム分析方法およびシステム分析装置

Also Published As

Publication number Publication date
JP2011164839A (ja) 2011-08-25

Similar Documents

Publication Publication Date Title
US10956291B2 (en) Method, computer apparatus, and user interface for performing automatic test upon storage devices
US8732576B2 (en) Operating system providing multi-touch support for applications in a mobile device
US8502822B2 (en) Method and apparatus for visualizing and interactively manipulating profile data
US20140067804A1 (en) Workflow generation server and method of generating workflow
JP2012531642A (ja) 多重仮想マシンのためのサポートを有する、トレース・データの時間ベース・コンテキスト・サンプリング
CN102207812B (zh) 触控式电子装置及其多窗口的管理方法
US20190035087A1 (en) Work analysis device, work analysis method, program and information storage medium
US20090319758A1 (en) Processor, performance profiling apparatus, performance profiling method , and computer product
JP4893325B2 (ja) システム分析プログラム、該プログラムを記録した記録媒体、システム分析方法およびシステム分析装置
US20190004923A1 (en) Non-transitory computer-readable storage medium, display control method, and display control device
JP6102575B2 (ja) 性能測定方法、性能測定プログラム及び性能測定装置
JP5428912B2 (ja) 集計方法、集計プログラム、集計装置
US9778854B2 (en) Computer system and method for controlling hierarchical storage therefor
US10114725B2 (en) Information processing apparatus, method, and computer readable medium
US10409636B2 (en) Apparatus and method to correct an execution time of a program executed by a virtual machine
WO2010089804A1 (en) Storage system
CN107220166B (zh) 一种cpu占用率的统计方法及装置
JP6666216B2 (ja) 電子制御装置、解析システム
TWI434215B (zh) 分配計數值至執行於多核處理器之工作
CN103246575A (zh) 软件有效代码量统计方法和装置
JP4769755B2 (ja) プロファイリング支援プログラム、プロファイリング支援方法、およびコンピュータ
US9646575B2 (en) Remote desktop system evaluating method, medium and apparatus
JP6187636B2 (ja) 情報処理装置、情報処理方法、プログラム
JP2008234354A (ja) Cpu負荷分析装置およびプログラム
KR101649606B1 (ko) 가상화 운영체제 성능 분석 방법, 이를 수행하는 가상화 운영체제 성능 분석 장치 및 이를 저장하는 기록매체

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131016

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131118

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees