JP6213309B2 - 情報処理装置、情報処理装置の性能情報採取プログラム及び情報処理装置の性能情報採取方法 - Google Patents

情報処理装置、情報処理装置の性能情報採取プログラム及び情報処理装置の性能情報採取方法 Download PDF

Info

Publication number
JP6213309B2
JP6213309B2 JP2014040641A JP2014040641A JP6213309B2 JP 6213309 B2 JP6213309 B2 JP 6213309B2 JP 2014040641 A JP2014040641 A JP 2014040641A JP 2014040641 A JP2014040641 A JP 2014040641A JP 6213309 B2 JP6213309 B2 JP 6213309B2
Authority
JP
Japan
Prior art keywords
cache
misses
unit
virtual machine
cache misses
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
JP2014040641A
Other languages
English (en)
Other versions
JP2015166896A (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 JP2014040641A priority Critical patent/JP6213309B2/ja
Publication of JP2015166896A publication Critical patent/JP2015166896A/ja
Application granted granted Critical
Publication of JP6213309B2 publication Critical patent/JP6213309B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、情報処理装置、情報処理装置の性能情報採取プログラム及び情報処理装置の性能情報採取方法に関する。
近年の情報処理装置では、通常、CPU(Central Processing Unit)等の演算処理装置と、その演算処理装置が使用する主記憶装置との間には動作速度(クロック周波数)に大きな差がある。そのため、現在では、主記憶装置へのアクセス頻度を抑えるための高速のメモリであるキャッシュメモリが演算処理装置に搭載されている。
キャッシュメモリの制御方式としては、ダイレクトマップ方式、セットアソシアティブ方式、及びフルアソシアティブ方式がある。何れの制御方式であっても、データはキャッシュライン単位で管理される。
ダイレクトマップ方式は、データを配置すべきキャッシュラインがアドレスによって一意に決定されるデータ格納構造である。このダイレクトマップ方式では、タグの構造が非常に単純となる。しかし、データを配置すべきキャッシュラインがアドレスによって一意に決定されるため、データの転送時にはキャッシュラインにおけるデータの入れ替えが必ず発生する。その結果、ダイレクトマップ方式には、キャッシュラインにおけるデータの入れ替えが頻発してスループットが低下するキャッシュスラッシングが起こりやすく、ヒット率は比較的に低いという特徴がある。
セットアソシアティブ方式は、同一のライン番号に複数のキャッシュラインを備えることにより、同一のライン番号に異なるアドレスのデータを複数、格納可能にしたデータ格納構造である。同一のライン番号に用意されたキャッシュラインの数は連想度(way)と呼ばれ、連想度が上がるほど、データを配置すべきキャッシュラインのライン番号の一致によるコンフリクトミスは発生し難くなり、キャッシュヒット率は上昇する。キャッシュヒット率(以降「ヒット率」と略記する)は、求めるデータがキャッシュメモリ上にヒットする割合である。
上記ダイレクトマップ方式、及びセットアソシアティブ方式では、データが格納可能なキャッシュラインはアドレスによって制限される。フルアソシアティブ方式は、データが格納されるキャッシュラインをアドレスによって制限しないデータ格納構造である。フルアソシアティブ方式でのヒット率は最も優れている。
演算処理装置の平均命令実行サイクル数を短縮させることによる性能の向上には、キャッシュメモリのヒット率を改善させることが有効である。ヒット率は、上記のように、データ格納構造に依存し、キャッシュラインのデータを入れ替える入れ替え方式にも依存する。例えキャッシュメモリ、及びそのキャッシュメモリ以外の構成も同じ演算処理装置であっても、ヒット率は、空間、或いは時間的なデータの局所性に大きく依存する。しかし、ヒット率は、データレイアウトの変更、或いはプログラムの作成の仕方等(以降、これらの対応を「チューニング」と総称する)によっても改善させることが可能である。
演算処理装置には、通常、求めるデータがキャッシュメモリ上に存在しなかったキャッシュミスが発生した回数を計数するための機能(以降「ミス計数機能」と表記)が搭載されている。そのミス計数機能により計数されるキャッシュミス数は、ヒット率を推定するうえで有用な情報である。それにより、OS(Operating System)のなかには、キャッシュミス数、或いは他の性能に係わる情報を採取するためのプログラムであるプロファイラを搭載したOSが存在する。ユーザは、プロファイラを用いて、アプリケーション・プログラム(以降「アプリケーション」と略記)を構成するサブプログラム(例えば関数)のなかでキャッシュミスが高頻度に発生するサブプログラムをホットスポットとして特定することができる。
近年、複数の仮想マシン(VM:Virtual Machine)を情報処理装置上に作成するケースが多くなっている。複数の仮想マシンが作成された情報処理装置では、演算処理装置、或いは演算処理装置に搭載されたコアに複数の仮想マシンが割り当てられるのが普通である。そのため、演算処理装置、或いは演算処理装置に搭載されたコアに割り当てられる仮想マシンは、定められた(短い)時間が経過する毎に切り替えられる。
ミス計数機能のキャッシュミス数は、仮想マシンの切り替え時に更新される。切り替え前の仮想マシンの動作時に計数されたキャッシュミス数は退避・保存され、ミス計数機能には、切り替え後の仮想マシンで退避・保存していたキャッシュミス数が新たにセットされる。そのようにして、ミス計数機能を用いたキャッシュミス数の計数は、仮想マシン毎に行われる。
切り替え後の仮想マシンの動作開始時、キャッシュメモリの各キャッシュラインには、切り替え前の仮想マシンの動作時に格納されたデータが残っている。キャッシュメモリに残っていたデータは、切り替え後の仮想マシンの動作により、順次、別のデータに入れ替えられる。このようなことから、ミス計数機能によるキャッシュミス数の計数には、キャッシュメモリに残っていたデータが全て別のデータに入れ変えられるまで、切り替え前の仮想マシンによる影響が残ることになる。
この影響は、ホットスポットを特定するうえでのノイズとなり、ホットスポットの特定を困難にさせる。切り替え前の仮想マシン(その仮想マシン上で実行されるアプリケーション)と、切り替え後の仮想マシン(その仮想マシン上で実行されるアプリケーション)とは、処理の内容上の関係はないのが普通である。このことから、ミス計数機能によるキャッシュミス数の計数では、直前に実行されていたプログラムによる影響を排除するのが望ましいと思われる。
情報処理装置(コンピュータ)の使い方として、TSS(Time Sharing System)がある。このTSSは、ユーザ、或いはプログラムといった主体を単位に、決まった短い時間を割り当てて情報処理装置(コンピュータ)に処理させることにより、複数の主体が同時に情報処理装置を利用できるようにしたシステムである。そのため、このTSSでも、ミス計数機能によるキャッシュミス数の計数には、直前に実行されていたプログラムによる影響が生じる。
特開2010−152458号公報 特開2008−225655号公報 特開2008−243203号公報 特開平8−30494号公報 特開2008−4054号公報
本発明は、直前に実行されていたプログラム(例えば仮想マシン)の影響を排除し、演算処理装置に搭載されたキャッシュメモリに発生したキャッシュミス数をより正確に計数するための技術を提供することを目的とする。
本発明を適用した情報処理装置は、キャッシュメモリを備えた演算処理装置と、前記キャッシュメモリに発生したキャッシュミスの回数であるキャッシュミス数を、前記演算処理装置が実行するプログラム毎に計数する計数部と、前記計数部が計数したキャッシュミス数のうち、他のプログラムの影響によってキャッシュミスが発生した回数をミス数として推定する推定部と、前記推定部が推定したミス数に基づき、前記計数部が計数したキャッシュミス数を修正する修正部と、を有する。
本発明により、直前に実行されていたプログラム(例えば仮想マシン)の影響を排除し、演算処理装置に搭載されたキャッシュメモリに発生したキャッシュミス数をより正確に計数することができる。
本実施形態による情報処理装置の構成例、及び運用例を説明する図である。 性能情報の採取方法例を説明する図である。 採取される性能情報例を説明する図である。 採取された性能情報の表示例を説明する図である。 ハイパーバイザーによって各仮想マシンに提供される環境を説明する図である。 ハイパーバイザーによって行われるPMCの管理を説明する図である。 各仮想マシンの動作時にPMCがオーバーフローによる割り込みを発生させるタイミング例を説明する図である。 本実施形態で仮想マシンにオーバーフローによる割り込みが通知されるタイミング例を説明する図である。 時刻記録部が仮想マシン毎に記録する動作開始時刻を説明する図である。 VM非動作時間帯記録領域に記録されるデータ例を説明する図である。 ノイズ分と推定するキャッシュミス数の算出方法例を説明する図である。 サンプリングドライバが実行する処理の流れを表すフローチャートである。 割り込み処理部が実行する処理の流れを表すフローチャートである。 キャッシュミス数算出部が実行する処理の流れを表すフローチャートである。
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図1は、本実施形態による情報処理装置の構成例、及び運用例を説明する図である。本実施形態による情報処理装置は、例えばデータセンタにサーバとして設置される情報処理装置である。このことから、情報処理装置は以降「サーバ」と表記する。
そのサーバは、ハードウェア群1、つまりハードウェア資源として、CPU(Central Processing Unit)11、メモリ(例えばメモリモジュール)12、ハードディスク装置13、及びNIC(Network Interface Card)14等を備えている。CPU11には、複数のCPUコア111、CPUコア111毎に用意された1次キャッシュメモリ112、2次キャッシュメモリ(図1中「L2キャッシュ」と表記)113、複数のPMC(Performance Monitoring Counter)114、及びTSC(Time Stamp Counter)115を備えている。ハードウェア群1は、図1に表す例に限定されるものではなく、演算処理装置もCPU11に限定されるものではない。CPU11の数は2以上であっても良い。
CPU11に搭載されたTSC115は、フリー・ランニング・カウンタであり、CPU11が動作を開始した後に外部から供給されるクロックの総数をカウントする。そのカウントは、レジスタを用いて行われ、初期値である0からそのレジスタのビット数(例えば64ビット)に応じた最大値までのカウントアップ(インクリメント)がサイクリックに行われる。以降、TSC115(のレジスタ)に格納されている時間を表す値は「TSC値」と表記する。
CPU11に搭載されたPMC114は、ハードウェア上の様々なイベントの計測(計数)が可能なカウンタであり、指定されたイベントが発生した回数を計数する。計測可能なイベントとしては、分岐命令数、分岐予測失敗数、実行命令数、1次キャッシュメモリ112のキャッシュミス数、及び2次キャッシュメモリ113のキャッシュミス数、等がある。
上記のようなハードウェア群1を備えたサーバ上には、図1に表すように、複数の仮想マシン3(3X、3Y)が作成される。それにより、サーバの運用は、各仮想マシン3を動作させ、各仮想マシン3にサービスを提供させることにより行われる。
本実施形態では、仮想化の実装方式として、ハイパーバイザー型が採用されている。作成された各仮想マシン3は、ハイパーバイザー2上で動作する。このハイパーバイザー2は、ハードウェア群1を仮想化し、複数の異なる仮想マシン3上のOS(ゲストOS)を並列に実行できるようにするソフトウェアである。仮想化の実装方式は、ホストOS型であっても良い。
ハードディスク装置13上には、ハイパーバイザー2、各仮想マシン3上で動作するゲストOS、及びアプリケーション、並びに各仮想マシン3の作成上の設定データ等が格納されている。CPU11は、ハードディスク装置13からハイパーバイザー2をメモリ12上に読み出して起動させた後、各仮想マシン3のゲストOS、及びアプリケーションをメモリ12上に読み出して起動する。
各仮想マシン3上では、各種性能情報を採取するためのプロファイラであるサンプリングドライバ(sampling driver)31が動作可能となっている。このサンプリングドライバ31は、例えばゲストOSに搭載されたプログラムである。
各仮想マシン3X、及び3Yには、CPUコア111単位でハードウェア資源を割り当てることができる。ここでは、各仮想マシン3X、及び3Yに対し、CPU11に搭載された全てのCPUコア111が割り当てられると想定する。その想定では、CPU11に搭載された全てのCPUコア111は、スケジューリングに従い、定められた時間が経過する度に、仮想マシン3Xと仮想マシン3Y間で割り当てか切り替えられる。
図2〜図4は、サンプリングドライバの機能例を説明する図である。図2は、性能情報の採取方法例、図3は、採取される性能情報例、図4は、採取された性能情報の表示例、をそれぞれ表している。
上記のように、CPU11に搭載されたPMC114は、ハードウェア上の様々なイベントの計測(計数)が可能なカウンタであり、1次キャッシュメモリ112のキャッシュミス数、及び2次キャッシュメモリ113のキャッシュミス数を計測できる。本実施形態では、このPMC114を、1次キャッシュメモリ112、或いは2次キャッシュメモリ113で発生したキャッシュミス数の計数に用いる。ここでは、便宜的に、キャッシュミス数を計数するのは1次キャッシュメモリ112と想定する。キャッシュミス数の計数自体は、PMC114以外のカウンタを用いて行っても良い。つまり、キャッシュミス数の計数方法は特に限定されるものではない。
PMC114は、計数に用いるレジスタ(以降「PMCレジスタ」と表記する。測定すべきイベントの種類を指定するためのレジスタは「イベント設定レジスタ」と表記する)のオーバーフローにより例外(割り込み)を発生させることができる。本実施形態では、PMC114のオーバーフローによる割り込みを利用して、サンプリングドライバ31による性能情報の測定(サンプリング)を行わせるようにしている。図2は、PMC114のオーバーフローによる割り込みを利用した性能情報のサンプリング方法例を表している。ここでは、サンプリングドライバ31は、ゲストOSのカーネル310のドライバとして実装されている。
性能情報のサンプリングは、予め定めた回数αのキャッシュミスの発生によって行うようにしている。そのため、PMCレジスタには、その回数αから1を引いた値を、そのPMCレジスタが表現可能な最大値(以降「フル値」と表記)から引いて得られる値(=フル値−α+1)が初期値として設定される。この結果、PMC114は、初期値がPMCレジスタに設定された後、回数αだけキャッシュミス数を計数することにより、オーバーフローによる割り込みを動作中の仮想マシン3に通知する(S1)。以降、回数αは、割り込みによるキャッシュミス数のサンプリングを行う周期を表すことから、「サンプリング周期値α」と表記する。PMCレジスタの値は「PMC値」と表記する。
動作中の仮想マシン3では、割り込みの通知をサンプリングドライバ31が処理する。サンプリングドライバ31は、割り込みの通知時に、仮想マシン3上で動作していたプログラムの情報(例えばプロセスID、或いは命令アドレス)をカーネル310から採取し、キャッシュミス数の累算値と共に、採取データ320として保存する(S2)。
時間の経過に従い、CPU11に制御が割り当てられるプログラムは順次、切り替えられる。図3は、時間の経過により、CPU11に制御が割り当てられるプログラム例を表している。図3中の「A」〜「C」は、CPU11に制御が割り当てられたプログラム名を表している。また、図3中の上向きの矢印は、それぞれ、PMC114による割り込みが発生したタイミングを表している。
図3に表すように、CPU11に制御が割り当てられるプログラムが切り替えられ、且つPMC114による割り込みが発生した場合、サンプリングドライバ31は、各割り込みが発生した時点で動作中のプログラムの情報を採取する。動作中のプログラムがサブプログラム(例えば関数)を呼び出していた場合、サンプリングドライバ31は、呼び出されていたサブプログラムの情報も併せて採取する。プログラムの情報、及びサブプログラムの情報は、採取データ(性能情報)320の一部として保存される。ここでは、便宜的に、プログラムの情報はプログラム名、サブプログラムの情報は関数名と想定する。プログラムの情報、及びサブプログラムの情報は以降「プログラム情報」と総称する。
プログラム毎の採取データ320の数は、そのプログラムが動作中に発生した割り込みの回数(サンプル数)である。サンプリングドライバ31は、例えば解析をユーザから指示された場合、採取データ320の解析を行い、その解析結果を出力、例えば表示する。
解析としては、サンプリングドライバ31は、例えば採取データ320の数をプログラム毎に計数し、計数した数を用いて、各プログラムの動作時に発生したキャッシュミス数を推定する。キャッシュミス数の推定は、例えば計数した数にサンプリング周期値αを乗算することで行われる。解析結果の表示は、例えば、推定したキャッシュミス数が大きいほうから、キャッシュミス数、プログラム名、及び関数名を配置することで行われる。図4は、そのようにして、性能情報として採取された採取データ320の解析結果の表示例を表している。
図4において、サンプル数は、プログラム毎に計数された採取データ320の数に相当する。キャッシュミス数は、サンプル数にサンプリング周期値αを乗算して得られる値であり、ここではサンプリング周期値αとして1000を想定している。
上記のように、サンプリングドライバ31は、PMC114がオーバーフローによる割り込みを発生させることを契機に、動作中のプログラムに係わる情報を採取することができ、保存した採取データ320の解析を行うことができる。しかし、ハイパーバイザー2は、基本的に、仮想マシン3で実際に動作しているプログラムを認識することができない。このことから、本実施形態では、ハイパーバイザー2を介して、PMC114からのオーバーフローによる割り込みを動作中の仮想マシン3に処理させるようにして、より多い情報量をユーザが得られるようにさせている。
図5は、ハイパーバイザーによって各仮想マシンに提供される環境を説明する図である。
ハイパーバイザー2は、ハードウェア群1を仮想化した環境を各仮想マシン3に提供する。ハードウェア群1の仮想化により、ハードウェア群1を構成する各ハードウェアは、疑似化(仮想化)されたハードウェアとして各仮想マシン3に認識される。その結果、図5に表すように、各仮想マシン3では、CPU11は、疑似(仮想)CPU11v(11vX、11vY)として認識され、CPU11上のPMC114も疑似(仮想)PMC114v(114vX、114vY)として認識される。
ハイパーバイザー2は、動作させる仮想マシン3毎に、アーキテクチャ・レジスタ・ステートの退避領域(以降「退避領域」と略記)200(200X、200Y)を確保する。この退避領域200は、例えばハードディスク装置13上にハイパーバイザー2が確保した領域であり、各仮想マシン3の動作時にPMC114によって計数されたPMC値201(201X、201Y)の保存に用いられる。動作させる仮想マシン3を仮想マシン3Xから仮想マシン3Yに切り替える場合、最後のPMC値201Xは退避領域200Xに退避・保存され、退避領域200Yに退避・保存されていたPMC値201YがPMC114に設定される。動作させる仮想マシン3を仮想マシン3Yから仮想マシン3Xに切り替える場合、最後のPMC値201Yは退避領域200Yに退避・保存され、退避領域200Xに退避・保存されていたPMC値201XがPMC114に設定される。それにより、PMC114は、仮想マシン3毎に、キャッシュミス数を計数する。
図6は、ハイパーバイザーによって行われるPMCの管理を説明する図である。
ハイパーバイザー2は、予め定められた時間が経過する度に、動作させる仮想マシン3を切り替える。動作させる仮想マシン3を切り替える際、ハイパーバイザー2は、図6に表すように、ハイパーバイザー処理を実行する。そのハイパーバイザー処理の実行により、動作中の仮想マシン3XはCPU11の制御を失って動作を終了し、CPU11の制御は仮想マシン3Yに渡される。仮想マシン3Xの動作時のPMC値は、ハイパーバイザー2により、他のCPU11に搭載された各種レジスタ等の値と共に退避領域200X上に退避される。退避領域200Y上に退避させていたPMC値、及び各種レジスタ等の値は、ハイパーバイザー2により、PMC114、及び各種レジスタ等にセット(復元)される。そのようなセットがハイパーバイザー処理で行われた後、仮想マシン3Yの動作は再開される。値を退避させるレジスタとしては、プログラムカウンタ、CCR(Condition Code Register)、FSR(Floating-Point State Register)、CWR(Current Window Register)、及びGPR(General Purpose register)等を挙げることができる。
図7は、各仮想マシンの動作時にPMCがオーバーフローによる割り込みを発生させるタイミング例を説明する図である。図7中、上向きの矢印はオーバーフローによる割り込みが発生したタイミングを表している。「自」は着目対象の仮想マシン(ここでは「自仮想マシン」と表記)3、「他」は着目対象の仮想マシン(ここでは「他仮想マシン」と表記)3の直前に動作する他の仮想マシン3、をそれぞれ表している。実線の矢印は、自仮想マシン3の動作時に割り込みが発生したタイミング、破線の矢印は、他仮想マシン3の動作時に割り込みが発生したタイミング、をそれぞれ表している。
1次キャッシュメモリ112のヒット率は、空間、或いは時間的なデータの局所性に大きく依存する。そのため、ヒット率は状況、つまり仮想マシン3が必要とするデータ等によって或る程度は変動する。
1次キャッシュメモリ112の各キャッシュラインに格納されているデータは、仮想マシン3の切り替え時の入れ換えの対象ではない。そのため、自仮想マシン3の動作の再開時には、1次キャッシュメモリ112のキャッシュラインの大部分に、他仮想マシン3の動作時に入れ換えられたデータが存在することになる。
各仮想マシン3には、重複しないようにハードウェア資源が割り当てられる。そのため、他仮想マシン3自体が使用するデータは、自仮想マシン3自体は使用しない。他仮想マシン3の動作時、1次キャッシュメモリ112の各キャッシュラインのデータは、他仮想マシン3自体が使用するデータに入れ換えられる。この結果、自仮想マシン3の動作再開時には、1次キャッシュメモリ112は、キャッシュラインの大部分に、他仮想マシン3自体が使用するデータが格納された状態となる。従い、自仮想マシン3が動作再開時には、キャッシュミスが頻発することになる。図7は、自仮想マシン3が動作を再開してから一定時間が経過するまでの期間(以降「影響発生期間」と表記する)70、頻発するキャッシュミスにより、PMC114からの割り込みが通常よりも短い時間間隔で発生したことを表している。
直前に他仮想マシン3が動作していたことによって発生するキャッシュミス分は、通常、自仮想マシン3とは基本的に関係がない。これは、自仮想マシン3の動作時に1次キャッシュメモリ112上に格納されたデータの全て、或いは殆どは、他仮想マシン3の動作時に入れ換えられるからである。このため、そのキャッシュミス分は、ノイズに相当し、自仮想マシン3上でキャッシュミスを高頻度に発生させるホットスポットの特定を困難とさせる。このことから、本実施形態では、PMC114が計数するキャッシュミス数からノイズ分を排除し、PMC114からのオーバーフローによる割り込みを仮想マシン3に通知するようにしている。
図8は、本実施形態で仮想マシンにオーバーフローによる割り込みが通知されるタイミング例を説明する図である。その図8において、上側は他仮想マシン3の動作による影響(ノイズ分となるキャッシュミス数)を排除しない場合の例であり、その例は図7に表した例である。下側は他仮想マシン3の動作による影響を排除した場合の例である。
図8に表すように、他仮想マシン3の動作による影響(ノイズ分となるキャッシュミス数)を排除しない場合、影響発生期間70内に2回、オーバーフローによる割り込みが自仮想マシン3に通知される。しかし、その影響を排除することにより、影響発生期間70内にオーバーフローによる割り込みが自仮想マシン3に通知される回数は0となっている。このことは、他仮想マシン3の動作による影響によって発生するキャッシュミス数は非常に多く、そのキャッシュミス数はホットスポットの適切な特定を行ううえで大きな障害となっていることを表している。
オーバーフローによる割り込みは、ハイパーバイザー2を介して、通知すべき仮想マシン3に通知される。このことから、本実施形態では、ノイズ分のキャッシュミス数の算出(推定)、及び算出したキャッシュミス数を反映させた割り込みの通知をハイパーバイザー2に行わせるようにしている。それにより、ハイパーバイザー2には、図1に表すように、機能として、VM切替部21、時刻記録部22、割り込み処理部24、及びキャッシュミス数算出部25が搭載されている。VM非動作時間帯記録領域23は、ハイパーバイザー2によって例えばメモリ12上、或いはハードディスク装置13上に確保される記憶領域である。図1では、説明上、便宜的に、VM非動作時間帯記録領域23をハイパーバイザー2内に表している。
VM切替部21は、図6に表すように、作成した各仮想マシン3のなかで動作させる仮想マシン3を順次、切り替え、その切り替え時に、退避すべき各種レジスタ等の値を対応する退避領域200上に退避させる機能である。VM切替部21は、動作させる仮想マシン3を切り替える際、その旨を時刻記録部22に通知する。
時刻記録部22は、図9に表すように、仮想マシン3が動作を開始(再開)した時刻をVM非動作時間帯記録領域23に記録する機能である。時刻としては、CPU11に搭載されたTSC115のカウント値が記録される。以降、記録される時刻は「動作開始時刻」と表記する。
図9に表記の「X」〜「Z」は、それぞれ、切り替えられる仮想マシン3を表している。それにより、図9では、3台の仮想マシン3(3X〜3Z)のなかの1台だけを動作させる場合を想定している。図9に表記の「T1」〜「T5」は、それぞれ、動作させる仮想マシン3を切り替えた時刻を表している。
図10は、VM非動作時間帯記録領域に記録されるデータ例を説明する図である。図10(a)は時刻t1、図10(b)は時刻t2にVM非動作時間帯記録領域23に記録されているデータ例を表している。
本実施形態では、仮想マシン3毎に、記録する動作開始時刻は1つのみとしている。これは、記録した動作開始時刻は、影響発生期間70内でノイズ分と見なすキャッシュミス数の算出に用いるためである。このことから、時刻t1では、図10(a)に表すように、仮想マシン3Xでは時刻T2、仮想マシン3Yでは時刻T1が記録される。時刻t1の時点で動作させたことのない仮想マシン3Zでは時刻が記録されない。また、時刻t2では、図10(b)に表すように、仮想マシン3Xでは時刻T5、仮想マシン3Yでは時刻T3、仮想マシン3Zでは時刻T4、がそれぞれ記録される。
割り込み処理部24は、PMC114のオーバーフローによる割り込みを、動作中の仮想マシン3に通知する機能である。キャッシュミス数算出部25は、割り込み処理部24からの指示により、動作中の仮想マシン3でPMC114が計数したキャッシュミス数のなかでノイズ分と推定すべきキャッシュミス数を算出する機能である。
上記のように、PMC114は、サンプリング周期値αのキャッシュミス数を計数した場合に、オーバーフローによる割り込みを行う。このことから、キャッシュミス数算出部25が算出するキャッシュミス数は、サンプリング周期値αのキャッシュミス数のなかでノイズ分と推定すべきキャッシュミス数である。それにより、割り込み処理部24は、キャッシュミス数算出部25が算出したキャッシュミス数が0であった場合、オーバーフローによる割り込みを動作中の仮想マシン3に通知する。
図11は、ノイズ分と推定するキャッシュミス数の算出方法例を説明する図である。
単位時間当たり(或いは単位命令数当たり)に発生するノイズ分のキャッシュミス数は、1次キャッシュメモリ112上でのデータの入れ換えにより、動作開始時刻から時間が経過するほど少なくなる。ノイズ分のキャッシュミスは、影響発生期間70の経過により、発生しなくなる。このことから、動作開始時刻を基点とする、単位時間当たりに発生するノイズ分のキャッシュミス数が全体に占める割合の時間変化は、基点とする動作開始時刻を最大値とし、影響発生期間70を経過後に最小値(=0)となるパターンと考えることができる。図11では、動作開始時刻を「自VM動作開始」と表記している。
図11(a)〜(c)では、そのパターンの代表例をグラフとして表している。横軸に時間、縦軸に重みをとっている。
図11において、Tは影響発生期間70の時間の長さ(以降「影響継続時間」と表記)を表している。ノイズ分のキャッシュミス数が全体に占める割合の時間変化は、反比例的に小さくなるパターン(図11(a))、放物線的に小さくなるパターン(図11(b))、及び直線的に小さくなるパターン(図11(c))に大別することができる。影響継続時間Tは、パターンによって異なる時間である。
図11(a)〜(c)において、縦軸にとった重みは、ノイズ分のキャッシュミス数が全体に占める割合を0〜1の間で正規化した指標である。それにより、キャッシュミス数算出部25は、ノイズ分のキャッシュミス数の算出に用いる重みを動作開始時刻からの経過時間により特定し、特定した重みをサンプリング周期値αに乗算することにより、ノイズ分のキャッシュミス数を算出する。つまり、ノイズ分のキャッシュミス数をSとした場合、そのキャッシュミス数Sは以下のようにして算出される。
S=ROUND(α・重み) ・・・(1)
ここで、ROUNDは四捨五入の操作を行う関数である。
キャッシュミスの発生頻度(例えば単位時間当たりに発生するキャッシュミス数)は、CPU11に採用されたアーキテクチャに依存する。そのアーキテクチャとは、具体的には1次キャッシュメモリ112のデータ格納構造、キャッシュラインのなかでデータを追い出すキャッシュラインを決定する方式、1次キャッシュメモリ112にデータを先取りする方式、及び分岐予測方式、等である。また、キャッシュラインのなかで仮想マシン3の動作によってデータが入れ換えられるキャッシュラインの割合は、仮想マシン3上で動作するアプリケーションによって異なる場合がある。CPU11内部で計算が可能な処理を多く実行させるアプリケーションでは、キャッシュライン112にアクセスする頻度も小さいことから、その割合は小さくなるのが普通である。このようなことから、本実施形態では、ノイズ分のキャッシュミス数Sの算出に用いるパターンは、CPU11のアーキテクチャ、及び切り替え前後の仮想マシン3(アプリケーション)の組み合わせを用いて選択するようにしている。
各仮想マシン3には、重複しないようにハードウェア資源が割り当てられる。そのため、動作する仮想マシン3によってキャッシュラインの全て、或いは大部分でデータの入れ換えが行われると想定できる場合、パターンはCPU11のアーキテクチャ、及び切り替え後の仮想マシン3から選択しても良い。そのパターンは以降、「重み付けパターン」と表記する。
選択対象となる重み付けパターンの形状は、シミュレーション結果を用いて特定することができる。また、サンプリング周期値αとして比較的に小さい値を設定し、小さい値のサンプリング周期値αを小さい値とした場合にPMC114からの割り込みが発生する時間間隔の変化を解析することにより、重み付けパターンの形状を特定することができる。
キャッシュミス算出部25は、選択対象とする各種重み付けパターンのデータをパターンデータ群25aとして管理している。それにより、キャッシュミス算出部25は、CPU11のアーキテクチャ、及び切り替え前後の仮想マシン3の組み合わせから選択される重み付けパターンのデータをパターンデータ群25aから抽出し、ノイズ分のキャッシュミス数Sの算出を行う。
割り込み処理部24は、キャッシュミス算出部25が算出したキャッシュミス数Sを受け取り、受け取ったキャッシュミス数Sが0より大きいか否かを確認する。受け取ったキャッシュミス数Sが0より大きい場合、割り込み処理部24は、PMC114が計数したキャッシュミス数のなかにノイズ分が含まれているとして、そのノイズ分の影響を排除する処理を行う。そのため、割り込み処理部24は、割り込みを仮想マシン3に通知せず、ノイズ分とするキャッシュミス数Sを排除した値をPMC114に新たに設定する。PMC114に新たに設定される値は、キャッシュミス数Sから1を引いた値を、そのPMC114のフル値から減算して得られる値(=フル値−S+1)である。
一方、割り込み処理部24は、受け取ったキャッシュミス数Sが0以下であった場合、PMC114が計数したキャッシュミス数のなかにノイズ分は含まれていないと見なす。そのため、割り込み処理部24は、割り込みを仮想マシン3に通知する。
上記のような処理を割り込み処理部24がオーバーフローによる割り込みの発生時に実行することにより、影響発生期間70内に仮想マシン3に実際に割り込みが通知される頻度は低減する。この結果、図8に表すように、影響発生期間70内を含め、仮想マシン3への割り込みの通知は、その仮想マシン3を切り替えることなく動作させている場合と同様の頻度で行われることとなる。
以降は、図12〜図14を参照し、サンプリングドライバ31、並びにハイパーバイザー2に搭載された割り込み処理部24、及びキャッシュミス数算出部25について更に詳細に説明する。
種類に係わらず、プログラムはCPU11(CPU11に搭載されたCPUコア111)によって実行される。そのため、各仮想マシン3(サンプリングドライバ31を含む)、及びハイパーバイザー2は、共に、CPU11(CPU11に搭載されたCPUコア111)によって実行される。しかし、ここでは、CPU11の制御が渡っているプログラムを明確にするために、実行主体としてプログラムを想定する。
図12は、サンプリングドライバが実行する処理の流れを表すフローチャートである。始めに図12を参照し、サンプリングドライバ31が実行する処理について詳細に説明する。
このサンプリングドライバ31は、指定された性能情報の測定を、指定された期間、行うようになっている。キャッシュミス数の測定では、オペレータは、キャッシュミス数を測定するキャッシュメモリの種類、サンプリング周期値α、及び測定時間、等を指定する。
先ず、サンプリングドライバ31は、オペレータの指定に従い、各種設定を行う(S101)。その設定により、PMC114のイベント設定レジスタには、1次キャッシュメモリ112のキャッシュミス数を表す測定イベント種が格納され、カウント用のレジスタには初期値(=フル値−α+1)が格納される。また、測定時間の計時のために、TSC値が保存される。
次に、サンプリングドライバ31は、PMC114からの割り込み(実際には、ハイパーバイザー2を介した仮想割り込み)が発生するのを待つ(S102)。PMC114からの割り込みが発生すると、サンプリングドライバ31は、プログラム情報(プログラム名、或いは関数名)を採取し(S103)、プログラム情報の採取後、PMC114に初期値を設定する(S104)。
次に、サンプリングドライバ31は、測定時間が終了したか否か判定する(S105)。S101で保存したTSC値から現在のTSC値を引いた値が表す測定時間が指定された測定時間より長い場合、測定時間が終了していることから、S105の判定はYesとなってS106に移行する。S101で保存したTSC値から現在のTSC値を引いた値が表す測定時間が指定された測定時間以下であった場合、S105の判定はNoとなって上記S102に戻る。それにより、サンプリングドライバ31は、PMC114からの次の割り込みに備える。
S106では、サンプリングドライバ31は、PMC114のイベント設定レジスタのクリアを行う。そのイベント設定レジスタのクリアにより、キャッシュミス数の測定が終了する。他に測定すべき性能情報が存在しない場合、サンプリングドライバ31もここで終了する。
上記のように、PMC114からの割り込みは、ハイパーバイザー2の割り込み処理部24によって処理され、ノイズ分のキャッシュミスSの影響が排除され、ハイパーバイザー2から仮想マシン3に通知される。そのため、サンプリングドライバ31への特別な機能の追加等は不要である。
図13は、割り込み処理部が実行する処理の流れを表すフローチャートである。次に、図13を参照し、割り込み処理部24が実行する処理について詳細に説明する。図13に表す処理は、PMC114からの割り込みを契機に実行される。割り込み処理部24は、ハイパーバイザー2に搭載された機能であるが、実行主体は割り込み処理部24とする。
全ての仮想マシン3でサンプリングドライバ31がキャッシュミス数の測定を行っていない場合、ノイズ分のキャッシュミス数Sの排除を行う必要はない。そのため、割り込み処理部24によるノイズ分のキャッシュミス数Sの排除は、サンプリングドライバ31と同様に、オペレータの指示により行わせれば良い。ここでは、便宜的に、ノイズ分のキャッシュミス数Sの排除を行う場合のフローチャートを図13に表している。
先ず、割り込み処理部24は、PMC114からの割り込みをキャッチする(S201)。次に、割り込み処理部24は、他の仮想マシン3の影響によりノイズ分として発生したキャッシュミス数Sの算出をキャッシュミス数算出部25に依頼する(S202)。
その依頼により、キャッシュミス数算出部25からキャッシュミス数Sが通知された後、割り込み処理部24は、通知されたキャッシュミス数Sが0より大きいか否か判定する(S203)。通知されたキャッシュミス数Sが0以下であった場合、S203の判定はNoとなり、割り込み処理部24は、動作中の仮想マシン3にPMC114の割り込みを仮想割り込みとして通知する(S204)。その仮想割り込みの通知により、割り込み処理部24は処理を終了する。一方、通知されたキャッシュミス数Sが1以上であった場合、S203の判定はYesとなり、割り込み処理部24は、PMC114のレジスタに、キャッシュミス数Sから1を引いた値をフル値から減算して得られる値(=フル値−S+1)を設定する(S205)。このPMC114への値の設定により、割り込み処理部24は処理を終了する。その結果、PMC114からの割り込みは無効とされる。
このような処理の実行により、動作中の仮想マシン3には、その仮想マシン3自身の動作によってサンプリング周期値αと同じ数のキャッシュミスが発生した場合に、PMC114の割り込みが通知されることとなる。PMC114によるキャッシュミス数の計数は、ノイズ分のキャッシュミスを除外する形で行われることとなる。
図14は、キャッシュミス数算出部が実行する処理の流れを表すフローチャートである。最後に、図14を参照し、キャッシュミス数算出部25が実行する処理について詳細に説明する。図14に表す処理は、割り込み処理部24からのキャッシュミス数Sの算出依頼を契機に実行される。キャッシュミス数算出部25も割り込み処理部24と同じく、ハイパーバイザー2に搭載された機能であるが、実行主体はキャッシュミス数算出部25とする。
先ず、キャッシュミス数算出部25は、動作中の仮想マシン3の動作開始時刻tsをVM非動作時間帯記録領域23から読み込む(S301)。次に、キャッシュミス数算出部25は、動作開始時刻tsからの経過時間tを算出する(S302)。経過時間tの算出は、現在時刻を表すTSC値から動作開始時刻tsを減算することで行われる。
経過時間tを算出したキャッシュミス数算出部25は、CPU11のアーキテクチャ、及び切り替え前後の仮想マシン3の組み合わせに応じて、重み付けパターンを選択する(S303)。次に、キャッシュミス数算出部25は、選択した重み付けパターンが表す影響継続時間T(図14中「一定時間T」と表記)が経過時間tより長いか否か判定する(S304)。影響継続時間Tが経過時間tより長い場合、つまり影響発生期間70である場合、S304の判定はYesとなってS305に移行する。影響継続時間Tが経過時間t以下であった場合、S304の判定はNoとなり、キャッシュミス数算出部25は、値が0のキャッシュミス数Sを割り込み処理部25に通知する(S307)。その通知後、キャッシュミス算出部25は処理を終了する。
S305では、キャッシュミス算出部25は、経過時間tを、選択した重み付けパターンにあてはめ、経過時間tのときの重みを計算する。次に、キャッシュミス数算出部25は、求めた重みをサンプリング周期値αに乗算することにより、キャッシュミス数Sを算出し(式(1))、算出したキャッシュミス数Sを割り込み処理部24に通知する(S306)。その後、キャッシュミス数算出部25は処理を終了する。
割り込み処理部24は、このようにして決定されるキャッシュミス数Sを用いて、PMC114からの割り込みの仮想マシン3への通知、或いはその割り込みを無効とし、PMC114への値の設定を行う。
なお、本実施形態では、キャッシュミス数Sの算出に用いる重みは、選択した重み付けパターンの経過時間t時に表す重みとしているが、別の重みを用いても良い。これは、図11に表すように、重み付けパターンによって、その形状は大きく異なるからである。このことから、重みは、経過時間tの間の平均値としても良い。また、影響発生期間70内にPMC114からの割り込みを複数回、仮想マシン3に通知する状況を想定し、1回の割り込みを仮想マシン3に通知した後、経過時間tとして、直前に割り込みを通知してからの経過時間を採用しても良い。
算出されたキャッシュミス数Sを用いて算出した値をPMC114に設定する場合、PMC114はサンプリング周期値αよりも少ないキャッシュミス数の計数により割り込みを発生させることになる。その結果、PMC114からの割り込みが短い時間内に多く発生する可能性が高い。
ハイパーバイザー2の負荷の増大に伴い、仮想マシン3が実際に動作する時間はより短くなる。これは、キャッシュミスの発生頻度を低下させる。このことから、PMC114に設定する値は、PMC114からの割り込みを通知しても良いタイミングとなるまでに発生すると予測するキャッシュミス数を反映させた値としても良い。つまり、PMC114からの割り込みが発生した場合、これまでに発生したと推測するキャッシュミス数Sに加えて、今後、その割り込みを仮想マシン3に通知すべきタイミングとなるまでに発生すると予測されるキャッシュミス数を求めるようにしても良い。PMC114には、キャッシュミス数Sと予測されるキャッシュミス数の加算値から1を引いて得られる値をフル値から減算した値を設定すれば良い。
PMC114を用いたキャッシュミス数の計数は、仮想マシン3毎に行うようになっている。しかし、キャッシュミス数の計数は、TSSのように実行するプログラムを切り替える運用であった場合、切り替えられるプログラム毎に行うようにしても良い。キャッシュミス数の計数対象は、2次キャッシュメモリ113(或いは3次キャッシュメモリ)であっても良い。
上記以外にも、様々な変形を行うことができる。
1 ハードウェア群
2 ハイパーバイザー
3、3X、3Y 仮想マシン
11 CPU
12 メモリ
13 ハードディスク装置
14 NIC
21 VM切替部
22 時刻記録部
23 VM非動作時間帯記録領域
24 割り込み処理部
25 キャッシュミス数算出部
111 CPUコア
112 1次キャッシュメモリ
113 2次キャッシュメモリ

Claims (5)

  1. キャッシュメモリを備えた演算処理装置と、
    前記キャッシュメモリに発生したキャッシュミスの回数であるキャッシュミス数を、前記演算処理装置が実行するプログラム毎に計数する計数部と、
    前記計数部が計数したキャッシュミス数のうち、他のプログラムの影響によってキャッシュミスが発生した回数をミス数として推定する推定部と、
    前記推定部が推定したミス数に基づき、前記計数部が計数したキャッシュミス数を修正する修正部と、
    を有することを特徴とする情報処理装置。
  2. 複数の仮想マシンが生成される場合、
    前記計数部は、前記仮想マシン毎にキャッシュミス数を計数し、計数した前記キャッシュミス数が所定値に達した場合に通知し、
    前記推定部は、前記計数部が通知した場合、前記ミス数を推定し、
    前記修正部は、前記推定部が推定したミス数に基づき、前記所定値に達したキャッシュミス数を修正する、
    ことを特徴とする請求項1記載の情報処理装置。
  3. 前記修正部は、前記推定部が推定したミス数に基づき、前記複数の仮想マシンのいずれかに通知する、
    ことを特徴とする請求項2記載の情報処理装置。
  4. キャッシュメモリを備えた演算処理装置を有する情報処理装置の性能情報採取プログラムにおいて、
    前記演算処理装置が有する計数部に、前記キャッシュメモリに発生したキャッシュミスの回数であるキャッシュミス数を、前記演算処理装置が実行するプログラム毎に計数させ、
    前記演算処理装置が有する推定部に、前記計数部が計数したキャッシュミス数のうち、他のプログラムの影響によってキャッシュミスが発生した回数をミス数として推定させ、
    前記演算処理装置が有する修正部に、前記推定部が推定したミス数に基づき、前記計数部が計数したキャッシュミス数を修正させることを特徴とする情報処理装置の性能情報採取プログラム。
  5. キャッシュメモリを備えた演算処理装置を有する情報処理装置の性能情報採取方法において、
    前記演算処理装置が有する計数部が、前記キャッシュメモリに発生したキャッシュミスの回数であるキャッシュミス数を、前記演算処理装置が実行するプログラム毎に計数し、
    前記演算処理装置が有する推定部が、前記計数部が計数したキャッシュミス数のうち、他のプログラムの影響によってキャッシュミスが発生した回数をミス数として推定し、
    前記演算処理装置が有する修正部が、前記推定部が推定したミス数に基づき、前記計数部が計数したキャッシュミス数を修正することを特徴とする情報処理装置の性能情報採取方法。
JP2014040641A 2014-03-03 2014-03-03 情報処理装置、情報処理装置の性能情報採取プログラム及び情報処理装置の性能情報採取方法 Expired - Fee Related JP6213309B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014040641A JP6213309B2 (ja) 2014-03-03 2014-03-03 情報処理装置、情報処理装置の性能情報採取プログラム及び情報処理装置の性能情報採取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014040641A JP6213309B2 (ja) 2014-03-03 2014-03-03 情報処理装置、情報処理装置の性能情報採取プログラム及び情報処理装置の性能情報採取方法

Publications (2)

Publication Number Publication Date
JP2015166896A JP2015166896A (ja) 2015-09-24
JP6213309B2 true JP6213309B2 (ja) 2017-10-18

Family

ID=54257748

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014040641A Expired - Fee Related JP6213309B2 (ja) 2014-03-03 2014-03-03 情報処理装置、情報処理装置の性能情報採取プログラム及び情報処理装置の性能情報採取方法

Country Status (1)

Country Link
JP (1) JP6213309B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6809165B2 (ja) * 2016-11-25 2021-01-06 富士通株式会社 情報処理装置、分析プログラム及び分析方法
CN119902875B (zh) * 2025-03-28 2025-08-12 山东浪潮科学研究院有限公司 一种基于Warp调度与缓存替换的自适应方法及装置、介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282613B1 (en) * 1999-04-30 2001-08-28 International Business Machines Corporation Very efficient technique for dynamically tracking locality of a reference
JP2006285430A (ja) * 2005-03-31 2006-10-19 Matsushita Electric Ind Co Ltd Cpuメモリアクセス解析装置
JP5353227B2 (ja) * 2008-12-24 2013-11-27 富士通株式会社 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。
US8855970B2 (en) * 2010-10-13 2014-10-07 The Trustees Of Columbia University In The City Of New York System and methods for precise microprocessor event counting

Also Published As

Publication number Publication date
JP2015166896A (ja) 2015-09-24

Similar Documents

Publication Publication Date Title
US10203996B2 (en) Filtering system noises in parallel computer system during thread synchronization
US10452417B2 (en) Methods, apparatus, and articles of manufacture to virtualize performance counters
US9037717B2 (en) Virtual machine demand estimation
JP5686904B2 (ja) 稼働情報予測計算機、稼働情報予測方法及びプログラム
EP3129887B1 (en) Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type
JP5353227B2 (ja) 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。
US8898434B2 (en) Optimizing system throughput by automatically altering thread co-execution based on operating system directives
Araujo et al. Software aging in the eucalyptus cloud computing infrastructure: characterization and rejuvenation
KR20170054485A (ko) 운영체제에서의 휴리스틱 프로세서 전력 관리
JP2011134333A (ja) 仮想cpuベースの、周波数、及び電圧制御
KR20130115574A (ko) 단말기에서 태스크 스케줄링을 수행하는 방법 및 장치
Machida et al. Job completion time on a virtualized server with software rejuvenation
US11132220B2 (en) Process scheduling
Wiseman et al. Economical Memory Management for Avionics Systems
Rameshan et al. Hubbub-scale: Towards reliable elastic scaling under multi-tenancy
JP4940996B2 (ja) プロファイリング装置およびプロファイリングプログラム
Rashid et al. Integrated analysis of cache related preemption delays and cache persistence reload overheads
Inam et al. Bandwidth measurement using performance counters for predictable multicore software
US8191062B2 (en) System for processor frequency governors to govern a processor frequency by deriving CPU utilization information based on the state of virtual machine monitor
Chae et al. CMcloud: Cloud platform for cost-effective offloading of mobile applications
Wang et al. Dynamic memory balancing for virtualization
Johnson et al. PAPI-V: Performance monitoring for virtual machines
JP6213309B2 (ja) 情報処理装置、情報処理装置の性能情報採取プログラム及び情報処理装置の性能情報採取方法
Sandberg et al. Efficient techniques for predicting cache sharing and throughput
CN105706049A (zh) 操作系统例行程序的预测历程储存器的部分使用

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161102

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170621

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170718

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170804

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170904

R150 Certificate of patent or registration of utility model

Ref document number: 6213309

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees