JP6918267B2 - ボトルネック検出装置及びボトルネック検出プログラム - Google Patents

ボトルネック検出装置及びボトルネック検出プログラム Download PDF

Info

Publication number
JP6918267B2
JP6918267B2 JP2021503314A JP2021503314A JP6918267B2 JP 6918267 B2 JP6918267 B2 JP 6918267B2 JP 2021503314 A JP2021503314 A JP 2021503314A JP 2021503314 A JP2021503314 A JP 2021503314A JP 6918267 B2 JP6918267 B2 JP 6918267B2
Authority
JP
Japan
Prior art keywords
bottleneck
execution
period
load
load information
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
JP2021503314A
Other languages
English (en)
Other versions
JPWO2020178985A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6918267B2 publication Critical patent/JP6918267B2/ja
Publication of JPWO2020178985A1 publication Critical patent/JPWO2020178985A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • 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/3409Recording 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 for performance assessment
    • G06F11/3419Recording 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 for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • 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/3409Recording 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 for performance assessment
    • G06F11/3433Recording 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 for performance assessment for load management
    • 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/3452Performance evaluation by statistical analysis
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • G06F8/4452Software pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Description

この発明は、プログラムの実行で発生する性能のボトルネックを検出する、ボトルネック検出装置及びボトルネック検出プログラムに関する。
特許文献1は、1回目のプログラムの実行でボトルネックの要因となる単一メソッドを特定し、そのメソッドを修正あるいはトレースオプション付きでリビルドする。そして、2回目のプログラムの実行で、特定したメソッドのトレース結果が記録される。特許文献1には、これら一連処理を自動化する方法が、開示されている。
特許文献1の場合、特定されたメソッドに対するプログラムの修正、リビルド、またはアプリケーションのパラメータ設定が必要であるため、一連処理が自動化されたとしても、プログラムにおける性能ボトルネックの発見から性能ボトルネックの要因特定までに時間がかかる。また、特許文献1の場合、複数のメソッドにまたがる処理に対するボトルネックの特定が、困難である。
特開2003−140928号公報
本発明は、プログラムにおける性能ボトルネックの発見から性能ボトルネックの要因特定までを迅速に処理できるボトルネック検出装置の提供を目的とする。
この発明のボトルネック検出装置は、
単体のプログラムと複数のプログラムとのいずれかである実行対象の少なくとも1回の実行に対して生成された、時間の経過と、負荷として設定されている負荷量との対応を示す負荷情報を取得し、前記負荷量が限界状態で継続する期間を示すボトルネック期間を、前記負荷情報を用いて計算する期間計算部と、
前記負荷情報の生成の元になる前記実行の後に実行される前記実行対象の実行中に、前記ボトルネック期間に実行される関数を、トレース機能を用いて記録する記録スケジューラーと
を備える。
本発明により、プログラムにおける性能ボトルネックの発見から性能ボトルネックの要因特定までを迅速に処理できるボトルネック検出装置を提供できる。
実施の形態1の図で、ボトルネック検出システム1001の構成図。 実施の形態1の図で、ボトルネック期間Tbを模式的に示す図。 実施の形態1の図で、ターゲット機器20の動作の概要を示すフローチャート。 実施の形態1の図で、ターゲット機器20の動作を示す別のフローチャート。 実施の形態1の図で、性能データ311及び性能グラフを示す図。 実施の形態1の図で、ボトルネック期間Tbを示す図。 実施の形態1の図で、ボトルネック期間計算部22による、ボトルネック期間Tbの計算方法を示す図。 実施の形態1の図で、実行関数トレースデータ331を示す図。 実施の形態1の図で、実行関数トレースデータ331が生成されるまでの過程を示す図。 実施の形態2の図で、実施の形態2のボトルネック検出システム1002の構成図。 実施の形態3の図で、実施の形態3のボトルネック検出システム1003の構成図。 実施の形態3の図で、実施の形態3のターゲット機器20の動作の概要を示すフローチャートである。 実施の形態3の図で、ターゲット機器20の動作の詳細を示すフローチャート。 実施の形態4の図で、ターゲット機器20の動作概要を示すフローチャート。 実施の形態4の図で、OR方式を説明する図。 実施の形態5の図で、ボトルネック検出装置100のハードウェア構成を示す図。 実施の形態5の図で、ボトルネック検出装置100のハードウェア構成を示す別の図。 実施の形態5の図で、ボトルネック検出装置100の機能がハードウェアで実現されることを示す図。
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
実施の形態1.
図1から図9を参照して、実施の形態1のボトルネック検出システム1001を説明する。
図1は、ボトルネック検出システム1001の構成を示す。ボトルネック検出システム1001は、ホストコンピュータ10と、ターゲット機器20とを備える。ボトルネック検出システム1001は、コンピュータの性能ボトルネックを検出する。より具体的には、性能ボトルネックの要因となる関数を、プログラムのリビルド及び修正をすることなく検出する。
ここで性能ボトルネックとは、プロセッサの負荷またはI/Oスループットのようなシステム負荷が、コンピュータの性能限界に近い状態で、一定期間継続する状態である。性能ボトルネックは、以下、ボトルネックと表記する。以下ではプロセッサの負荷として、CPU(Central Processing Unit))負荷を例としている。ホストコンピュータ10は、ターゲット機器20を試験する。
ホストコンピュータ10は、ターゲット機器20の有するプログラム1、2、3、・・・mを自動的に実行することによって、プログラム1、2、3、・・・mのボトルネックを検出する。図1にプログラム1、2、3、・・・mを示している。プログラム1は、図示はしていないが、関数11、関数12・・・関数1nを有する。プログラム2は、図示はしていないが、関数21、関数22・・・関数2nを有する。プログラムmは、関数m1、関数m2・・・関数mnを有する。
以下の説明では実行対象という用語が登場する。実行対象は、単体のプログラムと複数のプログラムとのいずれかである。実行対象が単体のプログラムの場合は、例えば図1のプログラム1が実行対象である。実行対象が複数のプログラムの場合は、例えば図1のプログラム1からプログラムmが実行対象である。
実行対象は複数回実行されるが、実行対象が単体のプログラムであれば同一の単体のプログラムが複数回実行される。図1のプログラム1が単体のプログラムとしての実行対象である場合、プログラム1が複数回実行される。単体のプログラム1の複数回の実行では、1回目に実行した関数の実行順序を2回目以降の実行でも、同じ順序で実行する。
実行対象が複数のプログラムであれば、同一の複数のプログラムが複数回、実行される。図1のプログラム1からプログラムmのm個が複数のプログラムとしての実行対象である場合、プログラム1からプログラムmが複数回、実行される。プログラム1、2、3、・・・mの1回目の実行、2回目の実行・・・のような場合は、具体的には以下のようである。1回目の実行、2回目の実行...における実行は、1回目に実行した複数のプログラム1、2、3、・・・mの実行順序、及び各プログラムを構成する関数の実行順序を、2回目以降の実行も、同じ順序で実行する。
***構成の説明***
ホストコンピュータ10は、プログラム実行モジュール11及び出力モジュール12を備えている。
(1)プログラム実行モジュール11は、事前に設定したルールに従い、ターゲット機器200を対象として、単体のプログラムと複数のプログラムとのいずれかである実行対象を自動的に実行する。
プログラム実行モジュール11は、CI(Continuous Integration)ツールが相当する。なお、ターゲット機器20で実行対象を実行するのはターゲット機器20のプロセッサである。プログラム実行モジュール11は、性能値記録モジュール21及びボトルネック期間計算部22の機能をオン、オフする。プログラム実行モジュール11は、実行関数記録スケジューラー24を実行する。プログラム実行モジュール11は、実行対象を実行する。
実行関数記録スケジューラー24は、記録スケジューラーである。
(2)トレース出力モジュール12は、実行対象のボトルネックの要因になる関数のトレース結果を出力する。
ターゲット機器20は、性能値記録モジュール21、ボトルネック期間計算部22、実行関数記録モジュール23、実行関数記録スケジューラー24、第1記憶部31、第2記憶部32、第3記憶部33及び第4記憶部34を備えている。
(1)性能値記録モジュール21は、CPU使用率またはI/Oウェイトのような、機器全体の性能負荷の状態を性能データ311として時系列で記録する。性能データ311は、例えばCPU使用率の性能ログである。性能値記録モジュール21は、性能データ311から性能グラフを生成する。図1に示すように、性能値記録モジュール21は、性能データ311ともに第1記憶部31に性能グラフを格納する。(2)ボトルネック期間計算部22は、性能値記録モジュール21が記録した性能データを基に生成した性能グラフから、ボトルネックが発生している箇所を特定し、ボトルネックの開始時刻Tsからボトルネックの終了時刻Teまでのボトルネック期間Tbを算出する。
図2は、ボトルネック期間Tbを模式的に示す。図2において、開始時刻Tsからボトルネックの終了時刻Teまでがボトルネック期間Tbである。ボトルネック期間Tbの計算方法は後述する。
(3)実行関数記録モジュール23は、記録スケジューラーである実行関数記録スケジューラー24によって機能がオン状態にされている時には、実行された関数を、時系列に記録する。
(4)実行関数記録スケジューラー24は、実行関数記録モジュール23の機能をオンにして、実行関数記録モジュール23に、ボトルネック期間Tbに実行される関数を、時系列で記録させる。
実行関数記録スケジューラー24は実行される関数の記録タイミングを制御するスケジューラーである。
(5)第1記憶部31は、性能値記録モジュール21の出力する複数の性能データ311を格納する。
(6)第2記憶部32は、ボトルネック期間計算部22の出力するボトルネック期間Tbを格納する。
(7)第3記憶部33は、実行関数記録モジュール23の記録した、実行関数トレースデータ331を格納する。
(8)第4記憶部34は、プログラム実行モジュール11によって実行される、複数のプログラムを格納する。図1では、プログラムmが、関数m1、m2、・・・mnを有することを示している。ボトルネック期間Tbに関数m1と関数m2とが実行された場合、実行関数記録モジュール23によって、関数m1と関数m2の実行が、時刻と共に記録される。
***動作の説明***
<ターゲット機器20の動作の概要>
図3は、実施の形態1のターゲット機器20の動作の概要を示すフローチャートである。図3の括弧内は動作の主体を示す。ターゲット機器20の動作は、関数記録方法に相当する。また、ターゲット機器20の動作は、ボトルネック検出プログラムの処理に相当する。
実施の形態1では、ボトルネック期間計算部22は、単体のプログラムと複数のプログラムとのいずれかである実行対象の少なくとも1回の実行に対して生成された、時間の経過と、負荷として設定されている負荷量との対応を示す負荷情報を取得する。負荷情報は性能グラフである。なお性能データも負荷情報である。ボトルネック期間計算部22は、負荷量が限界状態で継続する期間を示すボトルネック期間を、負荷情報を用いて計算する。
継続的インテグレーション及びバッチスクリプトが繰り返し実行可能な環境下において、ターゲット機器20、ステップS101からからステップS103を自動的に実行する。
ステップS101において、性能値記録モジュール21は、1回目の実行対象の実行によって、CPU使用率またはメモリ使用量またはI/Oスループット性能のような負荷グラフである性能グラフを生成する。
ステップS102において、ボトルネック期間計算部22は、性能グラフにおけるボトルネック期間Tbを計算する。
ステップS103において、実行関数記録スケジューラー24は、2回目の実行対象の実行で、ステップS102によって得られたボトルネック期間Tbで実行関数記録モジュール23のトレース機能をオンにし、実行関数記録モジュール23を用いてトレースログを記録する。実行関数記録スケジューラー24は、ボトルネック期間Tbが終了すれば、実行関数記録モジュール23のトレース機能をオフにする。これにより、実行関数記録スケジューラー24は、ボトルネック期間Tb以外では、実行関数記録モジュール23を用いたトレースログの記録は実行しない。実行関数記録スケジューラー24は、実行関数記録モジュール23を用いて、トレースログからボトルネック期間Tbに実行された関数を抽出し、実行関数トレースデータ331を生成する。
実施の形態1では、負荷情報は、単体のプログラムと複数のプログラムとのいずれかである実行対象の1回の実行に対して生成され、ボトルネック期間計算部22は、この負荷情報から、ボトルネック期間を計算する。
上記のステップS101からステップS103の特徴は以下のようである。
(1)トレースの対象となる実行対象にトレース機能を設定するのではなく、トレース機能である実行関数記録モジュール23のON、OFFを切り替えることによって、トレースログの記録容量を小さくする。
(2)ターゲット機器20は、1回目の実行では、トレースログの記録期間として、ボトルネック期間Tbを決定する。
(3)ターゲット機器20は、2回目の実行では、ボトルネック期間Tbに到達した際に、トレース機能である実行関数記録モジュール23をONにして、トレースログを記録する。ボトルネック期間Tbが経過すると、実行関数記録スケジューラー24が実行関数記録モジュール23をオフにする。
図4は、ボトルネック検出装置100であるターゲット機器20の動作を示すフローチャートである。図4を参照してターゲット機器20の動作を説明する。
<ステップS11>
ステップS11において、1回目の実行対象の実行で、性能値記録モジュール21が、性能データを取得し、性能データ311をグラフ化して、性能グラフを生成する。
図5は、性能データ311及び性能グラフを示す。左の性能グラフの枠の範囲が、右の性能データに対応する。性能データ311は、CPU負荷またはIOスループットのような負荷値を示す負荷情報が、時系列で記録されたデータである。負荷値は0%から100%の範囲とする。負荷値は、原則、システム全体の値とする。時刻は、起動あるいは特定のアプリケーション実行からの、経過時刻とする。絶対時刻(現実の時計時刻)と区別するため、相対時刻と呼ぶ。図5の右に示す性能データ311はテキストの生データである。図5では、相対時刻12:02:21.100に、CPU負荷率が10%のように示している。性能グラフは、横軸が相対時刻、縦軸が負荷値である。図1の第1記憶部31には性能データ311を示しているが、第1記憶部31には性能グラフも格納されている。
<ステップS12>
ステップS12において、ボトルネック期間計算部22が、性能グラフからボトルネック期間Tbを計算する。性能グラフは性能データが形式的にグラフ化されているに過ぎず、性能グラフは性能データである。
図6は、ボトルネック期間Tbを示す。ボトルネック期間Tbは、ボトルネックが発生した開始時刻Tsと終了時刻Teで表される。ボトルネック期間計算部22は、複数のボトルネック期間Tbを計算することも可能である。図6は、複数のボトルネック期間Tbを示している。ID(identification)によって、ボトルネック期間Tbが区別される。IDはオプションである。ID=1は1回目のボトルネック期間Tbを示し、ID=2は2回目のボトルネック期間Tbを示す。
図7は、ボトルネック期間計算部22による、ボトルネック期間Tbの計算方法を示す。以下にボトルネック期間Tbの計算方法を示す。ボトルネック期間計算部22は、負荷情報である性能データ311から生成した性能グラフを、連続する3つ以上の複数の時間帯に分割する。ボトルネック期間計算部22は、時間的に連続する3つの時間帯において中央の時間帯の両隣の2つの時間帯である第1の時間帯と第2の時間帯とのそれぞれの負荷平均値に基づき、ボトルネック期間Tbを計算する。
具体的には以下のようである。
図7ではボトルネック期間計算部22は以下の処理を行う。図7では性能グラフとして、CPU使用率を用いている。
<ステップS51>
図7に示すステップS51において、ボトルネック期間計算部22は、ターゲット機器20の性能グラフの時間帯を大まかに分割し、連続する3つの時間帯の中央の時間帯の両隣の時間帯の平均負荷値を計算する。図7では、ボトルネック期間計算部22は、範囲41の平均負荷値[X−1]及び範囲43の平均負荷値[X+1]を計算する。そして、ボトルネック期間計算部22は、平均負荷値[X+1]と平均負荷値[X−1]との差の絶対値を、式1のように、平均負荷値変化量Xとして計算する。
平均負荷値変化量X=|[X+1]−[X−1]| (式1)
<ステップS52>
ステップS52において、複数の平均負荷値変化量Xのうち、ボトルネック期間計算部22は、最大の平均負荷値変化量Xを、式2から抽出する。
Max[平均負荷値変化量X:|平均負荷値[x+1]−平均負荷値[x−1]|] (式2)
式2は、複数の平均負荷値変化量Xのうち、最大の平均負荷値変化量Xを示している。平均変化量Xの右側の式は、平均負荷値変化量Xが式1で計算されることを示している。
<ステップS53>
ステップS53において、ボトルネック期間計算部22は、時間の範囲をさらに細分化して時間帯を分割し、ステップS51の式1、ステップS52の式2を計算する。
以上を再帰的に実行し、最終的にボトルネック期間Tbを特定する(ステップS54)。
範囲44は、一時的な負荷の盛り上がりであり、ボトルネック期間Tbからは除去すべき箇所である。範囲42は、負荷が上昇し、貼り付きが発生している。範囲42は、ボトルネックの可能性あり、範囲42をさらに細分化し、ボトルネック期間として計算することが好ましい。
上記のステップS51からステップS54により、範囲44をボトルネック期間Tbから除去し、範囲45をボトルネック期間Tbとして計算することができる。
ステップS13において、ターゲット機器20は、プログラム実行モジュール11からの指示で、実行対象の2回目の実行を行う。
ステップS14において、記録スケジューラーである実行関数記録スケジューラー24は、負荷情報の生成元の元になる実行の後に実行される実行対象の実行中に、ボトルネック期間Tbに実行される関数を、トレース機能を用いて記録する。実行関数記録モジュール23はトレース機能である。
具体的には以下のようである。実行関数記録スケジューラー24は、現在の実行時刻を定期的に取得する。
ステップS15において、実行関数記録スケジューラー24は、ボトルネック期間Tbかどうかを判定する。つまり、実行関数記録スケジューラー24は、ボトルネック期間Tbの開始時刻Tsになったかを判定する。
開始時刻Tsになった場合(ステップS15でYES)、実行関数記録スケジューラー24は、実行関数記録モジュール23の機能をオンにする。実行関数記録モジュール23は、関数の実行を、実行関数トレースデータ331として記録する(ステップS16)。
また、ステップS15において、実行関数記録スケジューラー24は、ボトルネック期間Tbの終了時刻Teになったかを判定する。終了時刻Teになった場合(ステップS15でNO)、実行関数記録スケジューラー24は、実行関数記録モジュール23の機能をオフにする。
これにより、実行関数記録モジュール23は、ボトルネック期間Tbが終了する終了時刻Teまで関数の実行の記録を継続し、ボトルネック期間Tbの終了と共に停止する。
図8は、実行関数トレースデータ331を示す。実行関数トレースデータ331は、アプリケーション及びシステムを構成する関数の実行の開始時刻と、関数の実行状態との組を記録したデータある。例えば、相対時刻12:02:21.100では、関数FuncA()の実行状態がStartであり、相対時刻12:02:21.150では、関数FuncA()の実行状態が、Endである。実行関数記録スケジューラー24によって実行関数記録モジュール23がONの状態の場合、実行関数記録モジュール23は、関数の実行を記録する。OFFの場合は実行関数記録モジュール23は関数の実行を記録しない。ユーザは、ホストコンピュータ10の出力モジュール12を介して、実行関数トレースデータ331を閲覧可能である。なお、ボトルネック期間Tbに対応して、実行関数記録スケジューラー24が実行関数記録モジュール23をオン、オフすることによって、実行関数の記録開始及び実行関数の記録停止をすることが特徴である。
図9は、実行関数トレースデータ331が生成されるまでの過程を示す。
(1)まず、性能データ311が、性能値記録モジュール21によって生成される。
(2)次に、ボトルネック期間Tbが、ボトルネック期間計算部22によって生成される。
(3)実行関数記録スケジューラー24は、ボトルネック期間Tbの開始時刻Tsになると実行関数記録モジュール23の機能をオフからオンにし、ボトルネック期間Tbの終了時刻Teになると実行関数記録モジュール23の機能をオフにする。ボトルネック期間Tb以外では、実行関数記録モジュール23がオフである。実行関数記録モジュール23は、ボトルネック期間Tbにおける関数の実行状態を、実行関数トレースデータ331として記録する。
***実施の形態1の効果***
実施の形態1のターゲット機器20によれば、実行対象を修正またはリビルドする必要がないので、実行関数記録スケジューラー24が実行関数記録モジュール23を用いて行う、トレースログ記録(ステップS16)の記録時間を短くできる。
また、ターゲット機器20の実行対象を書き換える必要がないため、ターゲット機器20の実行対象の実行時間に与える影響が従来に比べ小さく、ビルドに時間がかかる組込機器に対しては効果的である。
また、ボトルネック期間Tbにのみ、実行関数記録モジュール23はトレースログを生成するので、従来に比べ、ログ記録容量を小さくできる。
実施の形態2.
図10は、実施の形態2のボトルネック検出システム1002の構成図である。図10を参照して実施の形態2のボトルネック検出システム1002を説明する。ボトルネック検出システム1002は、ボトルネック期間Tbで実行関数のトレースログを記録する点では、実施の形態1のボトルネック検出システム1001と同じである。ボトルネック検出システム1002のボトルネック検出システム1001との相違点は、ボトルネック期間計算部22、実行関数記録スケジューラー24及びボトルネック期間を格納する第2記憶部32が、ホストコンピュータ10に配置されている点である。ボトルネック検出システム1002では、ホストコンピュータ10がボトルネック検出装置100である。
***実施の形態2の効果***
ボトルネック期間計算部22および実行関数記録スケジューラー24が、ホストコンピュータ10に配置されることにより、ターゲット機器20のソフトウェア構成を変更することなく、ボトルネック要因の関数を特定できる。
実施の形態3.
図11、図12、図13を参照して実施の形態3のボトルネック検出システム1003を説明する。
図11は、実施の形態3のボトルネック検出システム1003の構成図である。
ボトルネック検出システム1003では、ターゲット機器20のボトルネック期間計算部22が、近似グラフ作成部22aを有する。
図12は、実施の形態3のターゲット機器20の動作の概要を示すフローチャートである。
図13は、実施の形態3のターゲット機器20の動作の詳細を示すフローチャートである。ボトルネック検出システム1003では、ターゲット機器20がボトルネック検出装置100である。
図12を参照してターゲット機器20の動作概要を説明する。実施の形態3では、ボトルネック期間計算部22は、単体のプログラムと複数のプログラムとのいずれかである実行対象の複数回の実行ごとに生成された複数の負荷情報を取得する。ボトルネック期間計算部22は取得した複数の負荷情報から、複数の負荷情報のそれぞれに近似する近似情報を生成し、近似情報から、ボトルネック期間を計算する。実施の形態3では、ボトルネック期間計算部22は、実行対象の2回の実行ごとに生成された2つの負荷情報を取得するが、これは例示であり3つ以上の負荷情報を取得しても良い。以下に具体的に説明する。
ボトルネック検出システムでは、実行対象の1回目の実行の性能データ311と、実行対象の2回目の実行の性能データとの相違が大きい場合も有り得る。そこで、実施の形態3では、合計3回の実行によって、ボトルネック要因の関数を抽出する。
(1)ステップS301において、1回目の実行対象の実行で、性能値記録モジュール21が、第1の性能グラフを生成する。
(2)ステップS302において、2回目の実行対象の実行で、性能値記録モジュール21が、第2の性能グラフを生成する。
(3)近似グラフ作成部22aは、第1の性能グラフと第2の性能グラフの近似度APを0から1.0の範囲で計測する。AP=0は不一致であり、AP=1.0は完全一致である。また、閾値はAP=0.7とする。ステップS303において、近似グラフ作成部22aは、近似度APが閾値以上の場合に、二つのグラフの近似グラフを生成する。近似グラフは、近似情報である。
(4)ステップS304において、ボトルネック期間計算部22は、近似グラフに対して、ボトルネック期間Tbを計算する。
(5)ステップS305において、実行関数記録スケジューラー24は、3回目の実行対象の実行で、ステップS304で計算したボトルネック期間Tbにおいて、トレースログを生成する。
図13を参照してターゲット機器20の動作の詳細を説明する。
ステップS31において、性能値記録モジュール21が、1回目の実行対象の実行で、第1の性能グラフを生成する。
ステップS32において、ボトルネック期間計算部22が、第1の性能グラフにボトルネック期間Tbが存在するかどうか判定する。ボトルネック期間Tbが存在する場合、処理は、ステップS33に進む。
ステップS33において、性能値記録モジュール21が、2回目の実行対象の実行で、第2の性能グラフを生成する。
ステップS34において、ボトルネック期間計算部22が、第2の性能グラフにボトルネック期間Tbが存在するかどうか判定する。ボトルネック期間Tbが存在する場合、処理は、ステップS35に進む。
ステップS35において、近似グラフ作成部22aが、第1のグラフと第2のグラフの近似度APを求める。
ステップS36において、近似グラフ作成部22aが、近似度APが閾値0.7以上かどうかを判定する。近似度APが閾値0.7以上であれば、処理は、ステップS37に進む。
ステップS37において、近似グラフ作成部22aが、第1のグラフと第2のグラフとの、近似グラフを生成する。
ステップS38において、ボトルネック期間計算部22が、近似グラフから
ボトルネック期間Tbを計算する。
ステップS39において、実行関数記録スケジューラー24が実行関数記録モジュール23を用いて、3回目の実行対象の実行で、ボトルネック期間Tbに実行される関数を記録する。
***実施の形態3の効果***
実施の形態3によれば、第1の性能グラフと第2の性能グラフとの相違が考慮されるので、ボトルネックが発生している可能性の高いボトルネック期間Tbを得ることができる。
実施の形態4.
図14、図15を参照して実施の形態3のボトルネック検出システム1004を説明する。ボトルネック検出システム1003のシステム構成は、ボトルネック検出システム1001と同じであるので図は省略する。
図14は、ボトルネック検出システム1004のターゲット機器20の動作概要を示すフローチャートである。
図15は、後述のOR方式を説明する図である。ターゲット機器20はボトルネック検出装置100である。図14を参照してターゲット機器20の動作を説明する。
実施の形態4では、ボトルネック期間計算部22は、単体のプログラムと複数のプログラムとのいずれかである実行対象の複数回の実行ごとに生成された複数の負荷情報を取得する。複数の負荷情報は、複数の性能グラフである。ボトルネック期間計算部22は、複数の負荷情報ごとにボトルネック期間Tbを計算し、複数の前記ボトルネック期間を用いて、新たなボトルネック期間を生成する。実行関数記録スケジューラー24は、負荷情報の生成の元になる実行の後に実行される実行対象の実行中に、新たなボトルネック期間Tbに実行される関数を、トレース機能である実行関数記録モジュール23を用いて記録する。
具体的には以下のようである。
(1)ステップS401において、1回目の実行対象の実行で、性能値記録モジュール21が、第1の性能グラフを生成する。
(2)ステップS402において、ボトルネック期間計算部22が、第1の性能グラフから第1のボトルネック期間Tb1を計算する。
(3)ステップS403において、2回目の実行対象の実行で、性能値記録モジュール21が、第2の性能グラフを生成する。
(4)ステップS404において、ボトルネック期間計算部22が、第2の性能グラフから第2のボトルネック期間Tb2を計算する。
(5)ステップS405において、ボトルネック期間計算部22が、第1のボトルネック期間Tb1と、第2のボトルネック期間Tb2とから、新たなボトルネック期間Tb3を計算する。ボトルネック期間Tbを補正する点では実施の形態3と同様である。
実施の形態4では、ボトルネック期間Tbの開始時刻Tsと終了時刻Teとを、第1のボトルネック期間Tb1と第2のボトルネック期間Tb2とのOR(最も早い開始時刻Tsから最も遅い終了時刻Te)を取ることで補正する。図15ではORによって得られたボトルネック期間Tb3は、第1のボトルネック期間Tb1の開始時刻Ts1と、第2のボトルネック期間Tb2の終了時刻Te2とを持つ。
あるいは、第1のボトルネック期間Tb1と第2のボトルネック期間Tb2とのAND(第1のボトルネック期間Tb1と第2のボトルネック期間Tb2との重複期間)を、新たなボトルネック期間Tb3として生成してもよい。
(6)ステップS406において、実行関数記録スケジューラー24は、3回目の実行対象の実行で、ステップS405で計算した新たなボトルネック期間Tb3において、関数のトレースログを生成する。
***実施の形態4の効果***
ボトルネック期間どうしのORを取ることで、トレースログの記録サイズは増えるものの、実行関数の取りこぼしを防ぐことができる。
また、ボトルネック期間どうしのANDを取ることで、ボトルネックに大きく影響する関数を抽出できる。
(1)実行関数記録モジュール23の起動に伴う遅延を考慮し、ボトルネック期間Tbの開始時刻Tsよりも一定時間△Tだけ前の時刻を、開始時刻Tsとして設定しても構わない。
(2)性能値記録モジュール21による性能データ311の記録開始は、実行対象の起動直後から記録しても構わない。
しかし、操作または通信受信のような外部イベント、あるいは、特定の関数の実行開始時刻を、記録開始の契機としてもよい。
(3)JenkinsのようなCIツールによる各部及び各モジュールの実行を想定している。しかし、各フローチャートの処理が自動実行できれば、その限りではない。例えば、ターゲット機器20にバッチファイルまたはスクリプトファイルを組み込んでおき、自動でフローチャートの流れを実行できれば、CIツールなしの構成でも構わない。
実施の形態5
実施の形態5は、実施の形態1から実施の形態4で説明したボトルネック検出装置100のハードウェア構成を説明する。実施の形態2ではボトルネック検出装置100はホストコンピュータ10である。実施の形態1、3,4ではボトルネック検出装置100はターゲット機器20である。
図16は、ボトルネック検出装置100である図1及び図11のターゲット機器20のハードウェア構成を示す。
図1、図11のターゲット機器20では、性能値記録モジュール21、ボトルネック期間計算部22、実行関数記録モジュール23及び実行関数記録スケジューラー24は、ボトルネック検出装置100のプロセッサ110がボトルネック検出プログラム101を実行することで実現される。図1、図11のターゲット機器20では、第1記憶部31から第5記憶部35は、ボトルネック検出装置100の主記憶装置120または補助記憶装置130に相当する。
ボトルネック検出装置100は、コンピュータである。ボトルネック検出装置100は、プロセッサ110を備えるとともに、主記憶装置120、補助記憶装置130、入力IF140、出力IF150及び通信IF160といった他のハードウェアを備える。なおIFはインタフェースを示す。プロセッサ110は、信号線170を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
ボトルネック検出装置100は、機能要素として、性能値記録モジュール21、ボトルネック期間計算部22、実行関数記録モジュール23及び実行関数記録スケジューラー24を備える。性能値記録モジュール21、ボトルネック期間計算部22、実行関数記録モジュール23及び実行関数記録スケジューラー24の機能は、ボトルネック検出プログラム101により実現される。
図16に示すように、ボトルネック検出プログラム101は、性能値記録モジュール21、ボトルネック期間計算部22、実行関数記録モジュール23及び実行関数記録スケジューラー24に対応する、性能値記録プログラム、ボトルネック期間計算プログラム、実行関数記録プログラム及び実行関数記録スケジューラープログラムから構成される。
プロセッサ110は、ボトルネック検出プログラム101を実行する装置である。ボトルネック検出プログラム101は、性能値記録モジュール21、ボトルネック期間計算部22、実行関数記録モジュール23及び実行関数記録スケジューラー24の機能を実現するプログラムである。プロセッサ110は、演算処理を行うIC(Integrated Circuit)である。プロセッサ110の具体例は、CPU、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
主記憶装置120の具体例は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)である。主記憶装置120は、プロセッサ110の演算結果を保持する。
補助記憶装置130は、データを不揮発的に保管する記憶装置である。補助記憶装置130は、ボトルネック検出プログラム101、ボトルネック期間Tb及びプログラム1,2,3,...mを格納している。補助記憶装置130の具体例は、HDD(Hard Disk Drive)である。また、補助記憶装置130は、SD(登録商標)(Secure Digital)メモリカード、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disk)といった可搬記録媒体であってもよい。補助記憶装置130は、ボトルネック期間Tbを記憶している。
入力IF40は、マウスあるいはキーボーのような入力装置が接続され、各装置からデータが入力されるポートである。
出力IF50は、各種機器が接続され、各種機器にプロセッサ110によりデータが出力されるポートである。
通信IF60はプロセッサ110が他の装置と通信するための通信ポートである。
他の装置としては、ホストコンピュータ10である。
プロセッサ110は補助記憶装置130からボトルネック検出プログラム101を主記憶装置120にロードし、主記憶装置201からボトルネック検出プログラム101を読み込み実行する。主記憶装置120には、ボトルネック検出プログラム101及びボトルネック期間Tbの他に、OS(Operating System)も記憶されている。プロセッサ110は、OSを実行しながら、ボトルネック検出プログラム101を実行する。
ボトルネック検出装置100は、プロセッサ110を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、ボトルネック検出プログラム101の実行を分担する。それぞれのプロセッサは、プロセッサ110と同じように、ボトルネック検出プログラム101を実行する装置である。ボトルネック検出プログラム101により利用、処理または出力されるデータ、情報、信号値及び変数値は、主記憶装置120、補助記憶装置130、または、プロセッサ110内のレジスタあるいはキャッシュメモリに記憶される。
ボトルネック検出プログラム101は、ボトルネック期間計算部22及び実行関数記録スケジューラー24の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程をコンピュータに実行させるプログラムである。
また、ボトルネック検出方法は、コンピュータであるボトルネック検出装置100がボトルネック検出プログラム101を実行することにより行われる方法である。ボトルネック検出プログラム101は、コンピュータ読取可能な記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
図17は、ボトルネック検出装置100である図10のホストコンピュータ10のハードウェア構成を示す。
図10のホストコンピュータ10では、ボトルネック期間計算部22及び実行関数記録スケジューラー24は、ボトルネック検出装置100のプロセッサ110がボトルネック検出プログラム101aを実行することで実現される。
ボトルネック検出プログラム101aは、ボトルネック期間計算部22及び実行関数記録スケジューラー24に対応する、ボトルネック期間計算プログラム及び実行関数記録スケジューラープログラムから構成される。
補助記憶装置130には、ボトルネック検出プログラム101a及びボトルネック期間101aが記憶されている。
<ハードウェア構成の補足>
図16及び図18のボトルネック検出装置100では、ボトルネック検出装置100の機能がソフトウェアで実現されるが、ボトルネック検出装置100の機能がハードウェアで実現されてもよい。
図18は、ボトルネック検出装置100の機能がハードウェアで実現される構成を示す。図18の電子回路90は、プロセッサ110、主記憶装置120、補助記憶装置130、入力IF140、出力IF150及び通信IF160の機能を実現する専用の電子回路である。電子回路90は、信号線91に接続している。電子回路90は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、または、FPGAである。GAは、Gate Arrayの略語である。ASICは、Application Specific Integrated Circuitの略語である。FPGAは、Field−Programmable Gate Arrayの略語である。ボトルネック検出装置100の構成要素の機能は、1つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。また、ボトルネック検出装置100の構成要素の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。
プロセッサ110と電子回路90の各々は、プロセッシングサーキットリとも呼ばれる。ボトルネック検出装置100において、ボトルネック期間計算部22、実行関数記録スケジューラー24のような機能がプロセッシングサーキットリにより実現されてもよい。あるいは、ボトルネック期間計算部22、実行関数記録スケジューラー24のような機能、主記憶装置120、補助記憶装置130、入力IF140、出力IF150及び通信IF160の機能が、プロセッシングサーキットリにより実現されてもよい。
以上、実施の形態1から実施の形態4について説明したが、これら実施の形態のうち、1つを部分的に実施しても構わない。あるいは、複数の実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、これら実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
Ts 開始時刻、Te 終了時刻、Tb ボトルネック期間、10 ホストコンピュータ、11 プログラム実行モジュール、12 出力モジュール、20 ターゲット機器、21 性能値記録モジュール、22 ボトルネック期間計算部、22a 近似グラフ作成部、23 実行関数記録モジュール、24 実行関数記録スケジューラー、31 第1記憶部、32 第2記憶部、33 第3記憶部、34 第4記憶部、35 第5記憶部、41,42,43 範囲、90 電子回路、91 信号線、100 ボトルネック検出装置、101 ボトルネック検出プログラム、110 プロセッサ、120 主記憶装置、130 補助記憶装置、140 入力IF、150 出力IF、160 通信IF、170 信号線、311 性能データ、331 実行関数トレースデータ、1001,1002,1003 ボトルネック検出システム。

Claims (5)

  1. 単体のプログラムと複数のプログラムとのいずれかである実行対象の少なくとも1回の実行に対して生成された、時間の経過と、負荷として設定されている負荷量との対応を示す負荷情報を取得し、前記負荷量が限界状態で継続する期間を示すボトルネック期間を、前記負荷情報を用いて計算するボトルネック期間計算部と、
    前記負荷情報の生成の元になる前記実行の後に実行される前記実行対象の実行中に、前記ボトルネック期間に実行される関数を、トレース機能を用いて記録する記録スケジューラーと
    を備え、
    前記ボトルネック期間計算部は、
    前記負荷情報を連続する3つ以上の複数の時間帯に分割し、時間的に連続する3つの時間帯において中央の時間帯の両隣の2つの時間帯である第1の時間帯と第2の時間帯とのそれぞれの負荷平均値に基づき、前記ボトルネック期間を計算するボトルネック検出装置。
  2. 前記負荷情報は、前記実行対象の1回の実行に対して生成されており、
    前記ボトルネック期間計算部は、
    前記負荷情報から、前記ボトルネック期間を計算する請求項1に記載のボトルネック検出装置。
  3. 前記ボトルネック期間計算部は、
    前記実行対象の複数回の実行ごとに生成された複数の負荷情報を取得し、前記複数の負荷情報から、前記複数の負荷情報のそれぞれに近似する近似情報を生成し、前記近似情報から、前記ボトルネック期間を計算する請求項2に記載のボトルネック検出装置。
  4. 前記ボトルネック期間計算部は、
    前記実行対象の複数回の実行ごとに生成された複数の負荷情報を取得し、前記複数の負荷情報ごとに前記ボトルネック期間を計算し、複数の前記ボトルネック期間を用いて、新たなボトルネック期間を生成し、
    前記記録スケジューラーは、
    前記負荷情報の生成の元になる前記実行の後に実行される前記実行対象の実行中に、前記新たなボトルネック期間に実行される関数を、トレース機能を用いて記録する請求項1に記載のボトルネック検出装置。
  5. コンピュータに、
    単体のプログラムと複数のプログラムとのいずれかである実行対象の少なくとも1回の実行に対して生成された、時間の経過と、負荷として設定されている負荷量との対応を示す負荷情報を取得し、前記負荷量が限界状態で継続する期間を示すボトルネック期間を、前記負荷情報を用いて計算し、前記負荷情報を連続する3つ以上の複数の時間帯に分割し、時間的に連続する3つの時間帯において中央の時間帯の両隣の2つの時間帯である第1の時間帯と第2の時間帯とのそれぞれの負荷平均値に基づき、前記ボトルネック期間を計算する期間計算処理と、
    前記負荷情報の生成の元になる前記実行の後に実行される前記実行対象の実行中に、前記ボトルネック期間に実行される関数を、トレース機能を用いて記録するスケジュール処理と
    を実行させるボトルネック検出プログラム。
JP2021503314A 2019-03-05 2019-03-05 ボトルネック検出装置及びボトルネック検出プログラム Active JP6918267B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/008667 WO2020178985A1 (ja) 2019-03-05 2019-03-05 ボトルネック検出装置及びボトルネック検出プログラム

Publications (2)

Publication Number Publication Date
JP6918267B2 true JP6918267B2 (ja) 2021-08-11
JPWO2020178985A1 JPWO2020178985A1 (ja) 2021-09-13

Family

ID=72338476

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021503314A Active JP6918267B2 (ja) 2019-03-05 2019-03-05 ボトルネック検出装置及びボトルネック検出プログラム

Country Status (3)

Country Link
US (1) US20210373866A1 (ja)
JP (1) JP6918267B2 (ja)
WO (1) WO2020178985A1 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001337790A (ja) * 2000-05-24 2001-12-07 Hitachi Ltd 記憶システム及びその階層管理制御方法
JP2003140928A (ja) * 2001-11-02 2003-05-16 Fujitsu Ltd 仮想マシン内部情報自動取得システム
US8103685B1 (en) * 2007-03-30 2012-01-24 Emc Corporation Methods and apparatus for capturing last discovery time of managed objects
US20130117275A1 (en) * 2010-07-16 2013-05-09 Nec Corporation Index monitoring system, index monitoring method and program
WO2013088477A1 (ja) * 2011-12-15 2013-06-20 株式会社日立製作所 監視計算機及び方法

Also Published As

Publication number Publication date
US20210373866A1 (en) 2021-12-02
WO2020178985A1 (ja) 2020-09-10
JPWO2020178985A1 (ja) 2021-09-13

Similar Documents

Publication Publication Date Title
US8661306B2 (en) Baseboard management controller and memory error detection method of computing device utilized thereby
US9465675B2 (en) Communication control device, information processing apparatus, parallel computer system, and control method for parallel computer system
JP7004712B2 (ja) プログラム可能クロックモニタ
US10095542B2 (en) Cooperative thread array granularity context switch during trap handling
KR20140024060A (ko) 랭크-특정 순환 중복 검사
US10289418B2 (en) Cooperative thread array granularity context switch during trap handling
US20100332914A1 (en) Dump output control apparatus and dump output control method
JP2006178646A (ja) 情報処理装置、情報処理方法、半導体装置、コンピュータプログラム
TWI596612B (zh) 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
JP6918267B2 (ja) ボトルネック検出装置及びボトルネック検出プログラム
US9720037B2 (en) Debug circuit, semiconductor device, and debug method
US9753084B2 (en) Debug circuit, semiconductor device, and debug method
US20110066880A1 (en) Apparatus and method for compensating for system memory error
US11106478B2 (en) Simulation device, simulation method, and computer readable medium
US10534683B2 (en) Communicating outstanding maintenance tasks to improve disk data integrity
US9043586B2 (en) Memory training results corresponding to a plurality of memory modules
US11256537B2 (en) Interrupt control apparatus, interrupt control method, and computer readable medium
US10452368B2 (en) Recording medium having compiling program recorded therein, information processing apparatus, and compiling method
JP6861885B2 (ja) トレーサビリティ管理装置、トレーサビリティ管理方法及びトレーサビリティ管理プログラム
JP2016045676A (ja) デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法
US20200004503A1 (en) Information processing device, information processing method, and computer readable medium
US20180253349A1 (en) Fault tolerant operating metohd and electronic device using the same
US11861181B1 (en) Triple modular redundancy (TMR) radiation hardened memory system
KR20170065845A (ko) 프로세서 및 제어 방법
JP2006227668A (ja) メモリモデルとプログラムと論理回路検証方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210324

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210324

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20210324

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20210406

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210525

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210720

R150 Certificate of patent or registration of utility model

Ref document number: 6918267

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150