JP2014206786A - 性能データ収集プログラム、装置、及び方法 - Google Patents

性能データ収集プログラム、装置、及び方法 Download PDF

Info

Publication number
JP2014206786A
JP2014206786A JP2013082397A JP2013082397A JP2014206786A JP 2014206786 A JP2014206786 A JP 2014206786A JP 2013082397 A JP2013082397 A JP 2013082397A JP 2013082397 A JP2013082397 A JP 2013082397A JP 2014206786 A JP2014206786 A JP 2014206786A
Authority
JP
Japan
Prior art keywords
performance data
storage unit
arithmetic processing
unit
collected
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.)
Granted
Application number
JP2013082397A
Other languages
English (en)
Other versions
JP6064756B2 (ja
Inventor
美由紀 松尾
Miyuki Matsuo
美由紀 松尾
耕太 中島
Kota Nakajima
耕太 中島
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 JP2013082397A priority Critical patent/JP6064756B2/ja
Publication of JP2014206786A publication Critical patent/JP2014206786A/ja
Application granted granted Critical
Publication of JP6064756B2 publication Critical patent/JP6064756B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】解析対象のプログラムの動作に与える影響を抑制して、大量の性能データを収集する。
【解決手段】採取格納部32が、所定の関数で記述された解析対象のプログラムを実行するCPU12が呼び出した実行アドレスを含む性能データを所定のサンプリング間隔で採取して、メモリ14上の性能データ格納部38に格納する。判定部32が、性能データに含まれる実行アドレスが示す関数がアイドル関数かを判定することにより、CPU12がアイドル状態かを判定する。転送制御部36が、CPU12がアイドル状態の場合に、性能データ格納部38に格納された性能データの少なくとも一部を、CPU12を介さずに、リモート装置40のメモリ44へRDMA転送するよう、HCA16に転送を指示する。
【選択図】図1

Description

開示の技術は、性能データ収集プログラム、装置、及び方法に関する。
コンピュータで動作するプログラムにレスポンス低下などの性能劣化の問題が発生した際の原因解明や、プログラムの性能向上のためのチューニング箇所を特定するために、プログラムの性能を解析することが行われている。プログラムの性能解析は、プログラム実行時に収集した性能データなどの各種情報に基づいて行われる。性能データの収集の一手法として、解析対象のプログラムの実行中に、動作したプロセスや呼び出された関数等を示す性能データをサンプリングにより採取し、複数の性能データを収集する手法が存在する。
例えば、所定のサンプリング間隔でCPU(Central Processing Unit)が実行しているアドレスを取得し、取得したアドレスに取得時刻を関連づけ、アドレスデータとしてメインメモリ上のアドレスデータ記憶部に時系列に格納する技術が提案されている。この技術では、サンプリング期間終了後に、アドレスデータ記憶部に格納されたアドレスデータを、HDD(Hard Disk Drive)上のファイルに書き出し、一括して解析処理を行っている。
また、サンプリングにより採取したデータを、カーネル空間の一時バッファ領域を介してユーザ空間にコピーし、コピーしたデータに対して、デーモン(バックグラウンド処理)で解析処理を行い、解析結果をHDD上のファイルに書き出す技術が存在する。
特開2007−213205号公報
"openSUSE 12.3 システム分析とチューニングガイド"、[online]、[平成25年3月8日検索]、インターネット<URL:http://opensuse-man-ja.berlios.de/opensuse-html/cha.tuning.oprofile.html>
1台のコンピュータに複数のプロセッサを搭載しているコンピュータで実行されるプログラムを解析対象のプログラムとする場合には、コンピュータに搭載されているプロセッサ毎に性能データを収集する必要がある。また、近年、プロセッサのマルチコア化に伴い、1つのLSI(Large Scale Integrated circuit)パッケージ内に組み込まれるコア数が増加している。また、1つのコアが複数のスレッドをそれぞれ実行するマルチスレッド化も進んでいる。このようにマルチコア化されたプロセッサで実行されるプログラムや、マルチスレッドを利用したプログラムを解析対象とする場合には、コア毎またはスレッド毎に性能データを収集する必要がある。
また、HPC(High Performance Computing)などの科学技術計算向けアプリケーションプログラムでは、プログラムの実行時間が長いため、1回に収集すべき性能データのデータ量が増大する。さらに、金融などのミッションクリティカルなシステムで使用されるアプリケーションプログラムでは、高速なレスポンスが要求される。例えば、株式売買システムにおける注文処理で、1/1000秒(1ms)以下のレスポンスタイムを実現するシステムが存在する。なお、注文処理とは、例えば、ユーザ端末からの注文を受け付け、注文を受け付けたことを確認し、注文内容をチェックしてからサーバへ登録し、登録した旨をユーザ端末へ通知する一連の処理である。このような注文処理のシステムを実現するアプリケーションプログラムの性能解析を行う場合には、システムの挙動を捉えるために、より細かいサンプリング間隔で性能データを採取して、サンプリング期間分の性能データを収集する必要がある。
収集する性能データのデータ量は、例えば下記のように計算することができる。
・収集する性能データのデータ量=1性能データのサイズ×1システム当たりのプロセッサ数×1プロセッサ当たりのコア数×1コア当たりのスレッド数×1スレッド当たりの収集する性能データの個数
・なお、収集する性能データの個数=サンプリング期間÷サンプリング間隔
従って、マルチプロセッサ化、マルチコア化、マルチスレッド化、またはシステムの高速化により、収集する性能データのデータ量は増大する。このように、プログラムの性能解析では、大量の性能データを収集できることが要求される。
しかし、サンプリング期間終了後に一括して解析処理を行う従来技術では、収集可能なデータ量はメモリサイズに依存するが、メモリサイズを大きくするには限界がある、という問題がある。
また、性能データのサンプリング処理を行いながらデーモンで解析処理を行う従来技術では、カーネル空間の一時バッファ領域に保持した解析結果をHDD上のファイルに書き出した後は、カーネル空間の一時バッファ領域を再利用することができる。しかし、同一のコンピュータが性能データのサンプリングを行いながら転送指示を行うことにより、コンピュータの処理負荷が高い場合に転送指示を行っているため、解析対象のプログラムの動作に影響を与えてしまい、収集した性能データの解析時において性能データに影響を与えた要因の切り分けが困難であった、という問題がある。
開示の技術は、一つの側面として、収集した性能データの解析時において、性能データに影響を与えた要因の切り分けを容易にすることが目的である。
開示の技術は、演算処理装置と転送制御部とを有する情報処理装置に、所定の関数で記述された解析対象のプログラムを実行する演算処理装置が呼び出した関数を示す情報を含む性能データを、所定のサンプリング間隔で採取して、主記憶部に格納させる。また、開示の技術は、前記情報処理装置に、採取した性能データに基づいて、前記演算処理装置の処理負荷を判定させる。また、開示の技術は、前記演算処理装置の処理負荷が所定値以下の場合に、前記主記憶部に格納した性能データの少なくとも一部を、前記転送制御部により前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送させる。
開示の技術は、一つの側面として、演算処理装置の処理負荷が所定値以下の場合に、転送指示を行うため、収集した性能データの解析時において性能データに影響を与えた要因の切り分けが容易になる、という効果を有する。
本実施形態に係る性能データ収集装置の構成の一例を示すブロック図である。 性能データの一例を示す図である。 シンボルテーブル(System.mapファイル)の一部の一例を示す図である。 性能データ格納部のアドレス管理を説明するための図である。 性能データ格納部のアドレス管理を説明するための図である。 性能データ格納部のアドレス管理を説明するための図である。 性能データ格納部のアドレス管理を説明するための図である。 性能データ収集装置として機能するコンピュータの一例を示す概略ブロック図である。 解析対象プログラムの実行を示すフローチャートである。 性能データ収集処理を示すフローチャートである。 アイドル状態判定処理を示すフローチャートである。 転送制御処理を示すフローチャートである。 性能データ収集装置の他の構成例を示すブロック図である。
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。
図1に、本実施形態の概略を示す。図1に示すように、本実施形態に係る性能データ収集装置10は、CPU(Central Processing Unit)12、メモリ14、及びHCA(Host Channel Adapter)16を含んでいる。性能データ収集装置10は、コンピュータ等の情報処理装置である。CPU12は、解析対象のプログラム及び後述する性能データ収集プログラムを実行する演算処理装置である。メモリ14は、例えばRAM(random access memory)などの主記憶部である。HCA16は、例えばInfiniBand(登録商標)等のインタコネクトを利用したRDMA(Remote Direct Memory Access)を行うための通信部としてのインターフェースカードである。
また、性能データ収集装置10は、例えばInfiniBand(登録商標)等のインタコネクトを利用した通信を行うことができる通信ケーブル48を介して、性能データ収集装置10とは異なるコンピュータであるリモート装置40と接続されている。リモート装置40は、性能データ収集装置10と同様の構成とすることができ、少なくとも主記憶部であるメモリ44及び通信部であるHCA46を備えている。性能データ収集装置10は、メモリ14に格納されたデータを、CPU12を介することなく、HCA16、通信ケーブル48、及びリモート装置40のHCA46を介して、リモート装置40のメモリ44へ直接転送するRDMA転送を行う。
また、図1には、性能データ収集装置10の各機能を示す機能ブロックも合わせて示している。性能データ収集装置10は、CPU12の各機能として、採取格納部32、判定部34、及び転送制御部36を備えている。また、メモリ14上に性能データを格納する領域である性能データ格納部38を備えている。
採取格納部32は、複数の関数で記述された解析対象のプログラムを実行中のCPU12が呼び出した関数を示す情報を含む性能データを、設定されたサンプリング期間(サンプリングの開始から終了までの期間)において、設定されたサンプリング間隔で採取する。採取格納部32は、例えば図2に示すような性能データを採取する。図2の例では、各性能データは、CPUID、PID、及び実行アドレスを含んでいる。CPUIDは、解析対象のプログラムを実行中のCPUを識別するための識別番号である。PIDは、CPU12が実行中のプロセス(関数を含むプログラムの実行単位)を識別するための識別番号である。実行アドレスは、CPU12が実行中の関数が格納されたメモリ14上のアドレスである。また、性能データに、採取時刻を示すタイムスタンプを付加してもよい。
例えばLinux(登録商標)の場合には、解析対象のプログラムに関するプロセスを表現するための情報を含む構造体がカーネル空間に生成される。従って、採取格納部32は、カーネル空間に生成された構造体から性能データとして必要な情報を採取することができる。構造体に含まれる情報は、CPU12内のレジスタに格納された値などに基づいて、カーネルにより設定される。より具体的には、解析対象のプログラムを実行中のCPUのCPUIDを返す関数(例えば、smp_processor_id)を呼び出して実行することにより、CPUIDを採取することができる。また、CPUで実行中のプロセスを示すシンボル(current)を用いて、PIDを返す関数(例えば、current->pid)を呼び出して実行することにより、実行中のプロセスのPIDを採取することができる。また、実行中のプロセスの状態に関する情報が格納された構造体pt_regsを参照して、実行アドレスを返す関数(例えば、pt_regs->ip)を呼び出して実行することにより、実行アドレスを採取することができる。
なお、マルチプロセッサを利用して解析対象のプログラムが実行される場合には、上記のCPUIDによりそれぞれのCPUを識別可能であるため、CPU毎の性能データを採取することができる。前述のCPUIDを返す関数で取得するCPUIDは論理的なCPUを識別する識別番号であり、マルチコア及びマルチスレッドの場合にも異なるCPUIDとなる。このようにして、コア毎及びスレッド毎の性能データを採取することができる。
また、採取格納部32は、採取した性能データを格納するための領域である性能データ格納部38をメモリ14上に確保し、性能データ格納部38の先頭アドレスをaddr_RS、末尾アドレスをaddr_REで定められるアドレス範囲の記憶領域に記憶する。採取格納部32は、採取した性能データを、性能データ格納部38の空き領域の先頭から順に格納していく。
判定部34は、性能データ格納部38に格納された性能データに基づいて、CPU12の処理負荷を判定する。例えば、判定部34は、CPU12がアイドル状態の場合には、処理負荷が所定値以下であり、CPUが性能に影響を与えるような処理を実行していないと判定することができる。CPU12がアイドル状態か否かの判定は、例えば、所定期間に採取された性能データに含まれる実行アドレスが示す関数におけるアイドル関数の割合に基づいて判定することができる。
より具体的には、所定期間に採取された性能データに含まれる実行アドレスが示す関数におけるアイドル関数の割合が所定値以上の場合に、CPU12がアイドル状態であると判定することができる。例えば、サンプリング期間または解析対象のプログラムの動作時間に基づいて、アイドル状態を判定するための所定期間を定めておく。例えば、下記のように所定期間を定めることができる。
例1:サンプリング期間が、例えば100秒の場合に、サンプリング期間の1%である1秒
例2:サンプリング期間内に動作時間が例えば1msの間、解析対象のプログラムが複数回実行される場合に、例えば10回分のプログラムの動作時間10ms
上記のように定めた所定期間をサンプリング間隔で割り、所定期間内に採取される性能データの数、すなわち所定期間内の関数の数を計算しておく。例えばサンプリング間隔を100μsとすると、所定期間内の関数の数は、上記例1の場合は10000個、上記例2の場合は100個である。
この所定期間内の関数の数に対するアイドル関数の数の割合が所定値以上か否かを判定する。例えば所定値を95%とすると、上記例1の場合は9500個以上、上記例2の場合は95個以上がアイドル関数であれば、CPU12がアイドル状態であると判定する。また、所定期間に採取された性能データに含まれる実行アドレスが示す関数のうち、アイドル関数以外の関数の割合が所定値以下の場合に、CPU12がアイドル状態であると判定してもよい。例えば所定期間のうち5%は他の関数が含まれていてもよいとすると、所定期間内で他の関数が許容される許容数は、上記例1の場合は500個以下、上記例2の場合は5個以下である。
また、所定期間内の関数に対するアイドル関数の数の割合が、例えば100%か否かを判定するようにしてもよい。アドレス関数の数の割合が100%の場合は、実行アドレスがアイドル関数であることを示す性能データが、所定期間連続して採取されたことを示すこととなる。
なお、実行アドレスが示す関数がアイドル関数か否は、関数名を含むシンボルの名前とメモリ14上のアドレスとの対応関係を示すシンボルテーブルに基づいて判定することができる。例えばLinux(登録商標)の場合、アイドル関数はカーネル関数であり、カーネルが使用するシンボルテーブルSystem.mapファイルを参照することにより、カーネル関数の名前とアドレスとの対応関係が得られる。図3に、System.mapファイルの一部の一例を示す。図3の例では、先頭の項目は各関数のアドレス範囲の先頭アドレス、次の項目はシンボルの型、及び最後の項目は関数名である。CPU12がアイドル状態か否かを判定するためのアイドル関数は、例えば「poll_idle」など、予め関数名で識別することができる。そこで、System.mapを参照して、対象のアイドル関数のアドレス範囲を取得することができる。上記のpoll_idle関数を対象のアイドル関数とする場合には、ffffffff810148d0≦アイドル関数のアドレス範囲<ffffffff810149480となる。従って、実行アドレスが対象のアイドル関数のアドレス範囲に含まれる場合には、実行アドレスが示す関数はアイドル関数であると判定することができる。
転送制御部36は、性能データ格納部38の空き領域のアドレス及び格納された性能データの数を管理する。また、転送制御部36は、判定部34によりCPU12がアイドル状態であると判定され、かつ性能データ格納部38に格納された性能データが所定量を超えた場合に、性能データの転送制御を行う。以下、詳細に説明する。
例えば図4に示すように、転送制御部36は、性能データ格納部38内の空き領域の先頭アドレスaddr_1、末尾アドレスaddr_2のアドレス範囲の記憶領域に性能データを記憶する。図4に示すように、性能データ格納部38に性能データが格納されていない状態では、性能データ格納部38の先頭アドレスaddr_RS=addr_1、性能データ格納部38の末尾アドレスaddr_RE=addr_2である。また、転送制御部36は、空き領域の先頭アドレスaddr_1と末尾アドレスaddr_2とを比較して、空き領域のサイズを判定する。addr_1>addr_2の場合には、アドレスaddr_1からアドレスaddr_REまでの領域と、アドレスaddr_RSからアドレスaddr_2までの領域が空き領域となる。すなわち、性能データ格納部38を、先頭アドレスaddr_RSと末尾アドレスaddr_REとを繋いだ循環したメモリ領域とみなす。
採取格納部32により採取された性能データは、性能データ格納部38の空き領域の先頭から順次格納される。転送制御部36は、性能データ格納部38に格納された性能データの個数kをカウントする。また、図5に示すように、性能データ格納部38にk番目に格納された性能データの末尾アドレスをaddr_kEとする。転送制御部36は、性能データ格納部38にk番目の性能データが格納された際に、空き領域の先頭アドレスaddr_1を、アドレスaddr_kEに更新する。
また、転送制御部36は、性能データ格納部38に格納された性能データが所定量を超えたか否かを判定する。この判定は、性能データ格納部38に格納された性能データの個数kが閾値K(1≦K≦k)を超えたか否かにより判定することができる。例えば、Kは一度に転送する性能データの個数とすることができる。転送制御部36は、性能データ格納部38に格納された性能データが所定量を超えたと判定すると、例えば図6に示すように、空き領域の末尾アドレスaddr_2を、転送する性能データの先頭アドレスaddr_KSに指定する。また、K番目に格納された性能データの末尾アドレスを、転送する性能データの末尾アドレスaddr_KEに指定する。
ここで、一度に転送する性能データの個数は、性能データ格納部38に格納された性能データの全てであってもよいし、一部であってもよい。一度に全ての性能データを転送する場合には、上記のK番目に格納された性能データの末尾アドレスaddr_KEはaddr_1となる。また、一度に転送する性能データのデータ量を、判定部34でCPU12のアイドル状態を判定する際のアイドル関数の連続時間やデータ転送速度などを考慮して決定してもよい。例えばデータ転送速度が2GBps(1秒間に2GB)で、アイドル関数の連続時間を1秒としている場合には、一度に転送する性能データのデータ量を2GBとすることができる。さらに、性能データ格納部38の性能データの格納以外の利用を考慮して、その半分の1GBを一度に転送するデータ量としてもよい。このように定めたデータ量を1性能データ当たりのデータ量で割って、一度に転送する性能データの個数Kを定めておく。
転送制御部36は、転送する性能データの先頭アドレスaddr_KS及び末尾アドレスaddr_KEと、転送先のリモート装置40のメモリ44を指定する情報を含む転送情報を通信部であるHCA16に設定することにより、HCA16に性能データの転送を指示する。性能データの転送を指示されたHCA16は、設定された転送情報に基づいて、CPU12を介することなく、性能データ格納部38内の指定されたアドレスに格納された性能データを、指定された転送先のリモート装置40のメモリ44へRDMA転送する。
なお、上記では、性能データ格納部38に格納された性能データが所定量を超えたか否かを、性能データ格納部38に格納された性能データの数kが、一度に転送する性能データの数Kを超えたか否かにより判定する場合について説明したが、これに限定されない。一度に転送する性能データの個数Kと、性能データ格納部38に格納された性能データが所定量を超えたか否かを判定するための閾値とは、それぞれ異なる値を設定してもよい。
また、図7に示すように、転送制御部36は、空き領域の末尾アドレスaddr_2を、転送する性能データの末尾アドレスaddr_KEに更新する。これにより、格納されていた性能データが転送された領域を、再び空き領域として利用して、新たな性能データを格納することができる。
性能データ収集装置10は、例えば図8に示すように、CPU12、メモリ14、及びHCA16に加え、不揮発性の記憶部18、及び入出力インターフェース(I/F)20を備えたコンピュータ80で実現することができる。CPU12、メモリ14、HCA16、記憶部18、及び入出力I/F20は、バス22を介して互いに接続されている。入出力I/F20には、マウス、キーボード、ディスプレイ等の入出力装置が接続されている。
記憶部18はHDD、SSD(Solid State Drive)、フラッシュメモリ等によって実現できる。記録媒体としての記憶部18には、コンピュータ80を性能データ収集装置10として機能させるための性能データ収集プログラム50が記憶されている。また、記憶部18には、解析対象プログラム60も記憶されている。CPU12は、解析対象プログラム60を記憶部18から読み出してメモリ14に展開し、解析対象プログラム60が有するプロセスを順次実行する。また、CPU12は、解析対象プログラムを実行中に、性能データ収集プログラム50を記憶部18から読み出してメモリ14に展開し、性能データ収集プログラム50が有するプロセスを順次実行する。解析対象プログラムは特に限定されないため、ここでは詳細な説明を省略する。
性能データ収集プログラム50は、採取格納プロセス52、判定プロセス54、及び転送制御プロセス56を有する。CPU12は、採取格納プロセス52を実行することで、図1に示す採取格納部32として動作する。また、CPU12は、判定プロセス54を実行することで、図1に示す判定部34として動作する。また、CPU12は、転送制御プロセス56を実行することで、図1に示す転送制御部36として動作する。これにより、性能データ収集プログラム50を実行したコンピュータ80が、性能データ収集装置10として機能することになる。
なお、CPU12により実現される各機能は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)等で実現することも可能である。
次に、本実施形態に係る性能データ収集装置10の作用について説明する。まず、CPU12が解析対象プログラム60の実行を開始する。具体的には、図9に示すように、ステップ120で、CPU12が、解析対象プログラム60を記憶部18から読み出してメモリ14に展開する。この際、CPU12内のレジスタに格納された値などに基づいて、解析対象のプログラムに関するプロセスを表現するための情報を含む構造体がカーネル空間に生成される。
次に、ステップ122で、CPU12が、プログラムカウンタに格納されたアドレスから関数を取り出して命令レジスタに取り込み、命令レジスタに取り込んだ関数を実行する。この際、CPU12は、プログラムカウンタの値を、次に実行すべき関数が格納されたメモリ14上のアドレスに更新するなど、CPU12内の各レジスタの値を適宜更新する。これにより、カーネル空間に生成された構造体に設定される情報も更新される。
次に、ステップ124で、CPU124は、プログラムを終了するか否かを判定し、終了しない場合には、ステップ122へ戻って、次の関数を実行し、終了すると判定した場合には、解析対象プログラムの処理を終了する。
図9に示す解析プログラムの実行中に、CPU12が、図10に示す性能データ収集処理を実行する。
図10に示す性能データ収集処理のステップ100で、採取格納部32が、メモリ14上に性能データ格納部38を確保し、性能データ格納部38の先頭アドレスaddr_RS、及び末尾アドレスaddr_REを所定の記憶領域に記憶する。また、転送制御部36が、性能データ格納部38内の空き領域の先頭アドレスaddr_1を性能データ格納部38の先頭アドレスaddr_RSに設定する。また、性能データ格納部38内の空き領域の末尾アドレスaddr_2を性能データ格納部38の末尾アドレスaddr_REに設定する。
次に、ステップ102で、採取格納部32が、カーネル空間に生成された構造体から必要な情報を取得することにより、性能データを採取する。ここでは、例えば図2に示すように、CPU12の識別番号であるCPUID、実行中のプロセスの識別番号であるPID、及び実行アドレスを含む性能データを採取するものとする。採取格納部32は、採取した性能データを、性能データ格納部38の空き領域の先頭アドレスから格納する。
次に、ステップ104で、判定部34が図11に示すアイドル状態判定処理を実行する。
図11に示すアイドル状態判定処理のステップ1040で、判定部34が、CPU12が実行中のプロセスが、カーネルプロセスかユーザプロセスかを判定する。後段の処理で判定されるアイドル関数はカーネル関数であるため、実行中のプロセスがユーザプロセスの場合には、実行アドレスを判定するまでもなく、CPU12がアイドル状態ではないと判定することができる。例えばLinux(登録商標)の場合、性能データに含まれるPIDが0であれば、実行中のプロセスはカーネルプロセス、PIDが0以外であればユーザプロセスであると判定することができる。CPU12により実行中のプロセスがカーネルプロセスの場合には、ステップ1042へ移行し、ユーザプロセスの場合には、ステップ1052へ移行する。
ステップ1042では、判定部34が、カーネル関数の名前とアドレスとの対応関係を定めたシンボルテーブルを参照して、性能データに含まれる実行アドレスが、アイドル関数のアドレス範囲に含まれるか否かを判定する。実行アドレスがアイドル関数のアドレス範囲に含まれる場合には、実行アドレスがアイドル関数であると判定し、ステップ1044へ移行する。一方、実行アドレスがアイドル関数のアドレス範囲に含まれない場合には、実行アドレスがアイドル関数ではないと判定し、ステップ1052へ移行する。
次に、1044では、判定部34が、アイドル関数の連続数を示す変数mを1インクリメントする。次に、ステップ1046で、判定部34が、変数mが、アイドル状態を判定するためのアイドル関数の連続数の閾値Mを超えたか否かを判定する。m>Mの場合には、ステップ1048へ移行し、判定部34が、CPU12がアイドル状態であると判定する。次に、ステップ1050で、判定部34が、変数m及び変数n(後述)を0に設定(リセット)し、性能データ収集処理へリターンする。一方、上記ステップ1046で、判定部34が、m≦Mと判定した場合には、CPU12がアイドル状態であると判定することなく、アイドル関数の連続数のカウントを継続するため、そのまま性能データ収集処理へリターンする。
また、上記ステップ1040またはステップ1042が否定判定の場合、すなわち、実行アドレスが示す関数がアイドル関数ではない場合には、ステップ1052で、判定部34が、変数mが0を超えているか否かを判定する。m>0の場合には、判定部34は、アイドル関数の連続数のカウントを継続中であると判定して、ステップ1054へ移行する。
ステップ1054では、判定部34が、アイドル関数以外の他の関数の出現回数を示す変数nを1インクリメントする。次に、ステップ1056で、判定部34が、変数nが、変数mが閾値Mに達するまでの期間内で他の関数が許容される許容数Nを超えたか否かを判定する。n>Nの場合には、アイドル関数の連続数のカウントをリセットするため、ステップ1050へ移行して、変数m及び変数nを0に設定する。一方、判定部34が、上記ステップ1052で、m=0と判定した場合、または上記ステップ1056で、n≦Nと判定した場合には、アイドル関数の連続数のカウントを継続するため、そのまま性能データ収集処理へリターンする。
図10に示す性能データ収集処理に戻って、ステップ106で、判定部34が、上記ステップ104において、CPU12がアイドル状態であると判定したか否かを判定する。CPU12がアイドル状態であると判定した場合には、ステップ108へ移行し、転送制御部36が、図12に示す転送制御処理を実行する。CPU12がアイドル状態であると判定しなかった場合には、性能データ収集処理を終了する。
図12に示す転送制御処理のステップ1080で、転送制御部36が、性能データ格納部38に格納された性能データの個数を示す変数kを1インクリメントする。次に、ステップ1082で、変数kが、一度に転送する性能データの個数として定めた閾値Kを超えたか否かを判定する。k>Kの場合には、ステップ1084へ移行し、転送制御部36が、例えば図6に示すように、空き領域の末尾アドレスaddr_2を、転送する性能データの先頭アドレスaddr_KSに指定する。また、K番目に格納された性能データの末尾アドレスを、転送する性能データの末尾アドレスaddr_KEに指定する。転送制御部36は、アドレスaddr_KS及びaddr_KEと、転送先のリモート装置40のメモリ44を指定する情報とを含む転送情報をHCA16に設定することにより、HCA16に性能データの転送を指示する。
次に、ステップ1086で、転送制御部36が、例えば図7に示すように、空き領域の末尾アドレスaddr_2を、転送する性能データの末尾アドレスaddr_KEに更新する。次に、ステップ1088で、転送制御部36が、変数kを、kから転送した性能データの個数Kを差し引いた値に更新して、図10に示す性能データ収集処理へリターンする。
一方、上記ステップ1082で、転送制御部36が、k≦Kと判定した場合には、まだ、性能データの転送タイミングではないため、ステップ1090へ移行する。ステップ1090では、転送制御部36が、例えば図5に示すように、空き領域の先頭アドレスaddr_1を、性能データ格納部38にk番目に格納された性能データの末尾アドレスaddr_kEに更新して、図10に示す性能データ収集処理へリターンする。
図10に示す性能データ収集処理に戻って、ステップ110で、転送制御部36が、空き領域の先頭アドレスaddr_1と末尾アドレスaddr_2とを比較して、空き領域のサイズを求める。転送制御部36は、求めた空き領域のサイズが所定サイズ以上か否かを判定する。空き領域が所定サイズ以上の場合には、性能データの採取及び格納を継続可能であると判定して、ステップ112へ移行する。
ステップ112では、採取格納部32が、予め設定されたサンプリング期間を終了したか、または解析対象プログラム60の実行が終了したか否かを判定することにより、性能データの採取を終了するか否かを判定する。性能データの採取を継続する場合には、ステップ102へ戻って、サンプリング間隔毎に性能データの採取及び格納を繰り返す。
一方、上記ステップ110で、転送制御部36が、空き領域が所定サイズに満たないと判定した場合、または上記ステップ112で、採取格納部32が、性能データの採取を終了すると判定した場合には、性能データ収集処理を終了する。これにより、メモリ14及びリモート装置40のメモリ44に、複数の性能データが収集される。
以上説明したように、本実施形態に係る性能データ収集装置10によれば、CPUがアイドル状態の場合、すなわちCPUが性能に影響を与えるような処理を実行していない場合に、メモリ上の性能データ格納部に格納された性能データをリモート装置へRDMA転送する。これにより、CPUの処理負荷が所定値以下の場合に転送指示を行うため、収集した性能データの解析時において、性能データに影響を与えた要因の切り分けが容易になる。そして、解析対象のプログラムの動作に与える影響を抑制して、採取した性能データを転送しない場合に比べて、大量の性能データを収集することができる。
また、CPUがアイドル状態であり、かつメモリに格納された性能データが所定量を超えた場合に、性能データの転送を行うことで、転送回数を低減させることができるため、より解析対象のプログラムの動作に与える影響を抑制することができる。
収集した性能データは、解析対象プログラムの解析に用いることができる。例えば、収集した性能データを集計し、性能ボトルネックとなる呼び出し回数の多い関数を見つけることができる。また、性能データに採取時刻を示すタイムスタンプを付加した場合には、サンプリング期間全体の統計だけでなく、時系列分析も可能になる。
なお、上記実施形態では、CPUを介さないデータ転送としてRDMA転送を行う場合について説明したが、CPUを介さない、またはCPUの負荷が小さい転送方法であれば、例えばDMA(Direct Memory Access)転送などの他の転送方法を用いてもよい。
図13に、DMA転送を行う場合の性能データ収集装置210の一例を示す。性能データ収集装置210は、CPU12、メモリ14、記憶部18、及びDMAC(Direct Memory Access controller)24を含んでいる。なお、上記実施形態に係る性能データ収集装置10と同一の部分については同一符号を付している。性能データ収集装置210では、主記憶部であるメモリ14から、リモート装置40のメモリ44ではなく、自装置内の補助記憶部である記憶部18へデータが転送される。転送制御部36は、上記と同様に、転送する性能データのアドレス範囲及び転送先を指定する転送情報をDMAC24に設定することにより、DMAC24に性能データの転送を指示する。性能データの転送を指示されたDMAC24は、設定された転送情報に基づいて、CPU12を介することなく、性能データ格納部38内の指定されたアドレスに格納された性能データを、記憶部18へDMA転送する。
また、上記では開示の技術における性能データ収集プログラムの一例である性能データ収集プログラム50が記憶部18に予め記憶(インストール)されている態様を説明した。しかし、開示の技術における性能データ収集プログラムは、CD−ROMやDVD−ROM等の記録媒体に記録されている形態で提供することも可能である。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
演算処理装置と転送制御部とを有する情報処理装置に、
所定の関数で記述された解析対象のプログラムを実行する前記演算処理装置が呼び出した関数を示す情報を含む性能データを、所定のサンプリング間隔で採取して、主記憶部に格納させ、
採取した性能データに基づいて、前記演算処理装置の処理負荷を判定させ、
前記演算処理装置の処理負荷が所定値以下の場合に、前記主記憶部に格納した性能データの少なくとも一部を、前記転送制御部により前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送させる
ことを特徴とする性能データ収集プログラム。
(付記2)
前記演算処理装置の処理負荷の判定は、
前記情報処理装置に、
採取した性能データに基づいて、前記演算処理装置がアイドル状態かを判定させることを特徴とする付記1記載の性能データ収集プログラム。
(付記3)
前記演算処理装置の処理負荷の判定は、
前記情報処理装置に、
所定期間に採取した複数の性能データの各々に含まれる情報が示す関数におけるアイドル関数の割合が所定割合以上の場合に、前記演算処理装置がアイドル状態であると判定させることを特徴とする付記2記載の性能データ収集プログラム。
(付記4)
前記主記憶部以外の記憶部への転送は、
前記情報処理装置に、
前記主記憶部に格納した性能データが所定量を超えた場合に、前記主記憶部に格納した性能データの少なくとも一部を、前記転送制御部により前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送させることを特徴とする付記1〜付記3のいずれか1つに記載の性能データ収集プログラム。
(付記5)
所定の関数で記述された解析対象のプログラムを実行する演算処理装置と、
前記演算処理装置が呼び出した関数を示す情報を含む性能データを、所定のサンプリング間隔で採取して、主記憶部に格納する採取格納部と、
採取された性能データに基づいて、前記演算処理装置の処理負荷を判定する判定部と、
前記演算処理装置の処理負荷が所定値以下の場合に、前記主記憶部に格納された性能データの少なくとも一部を、前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送する転送制御部と、
を含む性能データ収集装置。
(付記6)
前記判定部は、採取された性能データに基づいて、前記演算処理装置がアイドル状態かを判定することを特徴とする付記5記載の性能データ収集装置。
(付記7)
前記判定部は、所定期間に採取された複数の性能データの各々に含まれる情報が示す関数におけるアイドル関数の割合が所定割合以上の場合に、前記演算処理装置がアイドル状態であると判定することを特徴とする付記6記載の性能データ収集装置。
(付記8)
前記転送制御部は、前記主記憶部に格納された性能データが所定量を超えた場合に、前記主記憶部に格納された性能データの少なくとも一部を、前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送させることを特徴とする付記5〜付記7のいずれか1つに記載の性能データ収集プログラム。
(付記9)
演算処理装置と転送制御部とを有する情報処理装置が、
所定の関数で記述された解析対象のプログラムを実行する前記演算処理装置が呼び出した関数を示す情報を含む性能データを、所定のサンプリング間隔で採取して、主記憶部に格納し、
採取した性能データに基づいて、前記演算処理装置の処理負荷を判定し、
前記演算処理装置の処理負荷が所定値以下の場合に、前記主記憶部に格納した性能データの少なくとも一部を、前記転送制御部により前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送する
ことを特徴とする性能データ収集方法。
(付記10)
前記演算処理装置の処理負荷の判定は、
前記情報処理装置が、
採取した性能データに基づいて、前記演算処理装置がアイドル状態かを判定することを特徴とする付記9記載の性能データ収集方法。
(付記11)
前記演算処理装置の処理負荷の判定は、
前記情報処理装置が、
所定期間に採取した複数の性能データの各々に含まれる情報が示す関数におけるアイドル関数の割合が所定割合以上の場合に、前記演算処理装置がアイドル状態であると判定させることを特徴とする付記10記載の性能データ収集方法。
(付記12)
前記主記憶部以外の記憶部への転送は、
前記情報処理装置が、
前記主記憶部に格納した性能データが所定量を超えた場合に、前記主記憶部に格納した性能データの少なくとも一部を、前記転送制御部により前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送することを特徴とする付記9〜付記11のいずれか1つに記載の性能データ収集方法。
(付記13)
演算処理装置と転送制御部とを有する情報処理装置に、
所定の関数で記述された解析対象のプログラムを実行する前記演算処理装置が呼び出した関数を示す情報を含む性能データを、所定のサンプリング間隔で採取して、主記憶部に格納させ、
採取した性能データに基づいて、前記演算処理装置の処理負荷を判定させ、
前記演算処理装置の処理負荷が所定値以下の場合に、前記主記憶部に格納した性能データの少なくとも一部を、前記転送制御部により前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送させ、
前記主記憶部及び前記主記憶部以外の記憶部に収集した複数の性能データを集計して、前記解析対象のプログラムを解析させる
ことを特徴とする解析プログラム。
(付記14)
所定の関数で記述された解析対象のプログラムを実行する演算処理装置と、
前記演算処理装置が呼び出した関数を示す情報を含む性能データを、所定のサンプリング間隔で採取して、主記憶部に格納する採取格納部と、
採取された性能データに基づいて、前記演算処理装置の処理負荷を判定する判定部と、
前記演算処理装置の処理負荷が所定値以下の場合に、前記主記憶部に格納された性能データの少なくとも一部を、前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送する転送制御部と、
前記主記憶部及び前記主記憶部以外の記憶部に収集された複数の性能データを集計して、前記解析対象のプログラムを解析する解析部と、
を含む解析装置。
(付記15)
演算処理装置と転送制御部とを有する情報処理装置が、
所定の関数で記述された解析対象のプログラムを実行する前記演算処理装置が呼び出した関数を示す情報を含む性能データを、所定のサンプリング間隔で採取して、主記憶部に格納し、
採取した性能データに基づいて、前記演算処理装置の処理負荷を判定し、
前記演算処理装置の処理負荷が所定値以下の場合に、前記主記憶部に格納した性能データの少なくとも一部を、前記転送制御部により前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送し、
前記主記憶部及び前記主記憶部以外の記憶部に収集した複数の性能データを集計して、前記解析対象のプログラムを解析する
ことを特徴とする解析方法。
10 性能データ収集装置
14 メモリ
16 HCA
18 記憶部
24 DMAC
32 採取格納部
34 判定部
36 転送制御部
38 性能データ格納部
40 リモート装置
44 リモート装置のメモリ
80 コンピュータ

Claims (6)

  1. 演算処理装置と転送制御部とを有する情報処理装置に、
    所定の関数で記述された解析対象のプログラムを実行する前記演算処理装置が呼び出した関数を示す情報を含む性能データを、所定のサンプリング間隔で採取して、主記憶部に格納させ、
    採取した性能データに基づいて、前記演算処理装置の処理負荷を判定させ、
    前記演算処理装置の処理負荷が所定値以下の場合に、前記主記憶部に格納した性能データの少なくとも一部を、前記転送制御部により前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送させる
    ことを特徴とする性能データ収集プログラム。
  2. 前記演算処理装置の処理負荷の判定は、
    前記情報処理装置に、
    採取した性能データに基づいて、前記演算処理装置がアイドル状態かを判定させることを特徴とする請求項1記載の性能データ収集プログラム。
  3. 前記演算処理装置の処理負荷の判定は、
    前記情報処理装置に、
    所定期間に採取した複数の性能データの各々に含まれる情報が示す関数におけるアイドル関数の割合が所定割合以上の場合に、前記演算処理装置がアイドル状態であると判定させることを特徴とする請求項2記載の性能データ収集プログラム。
  4. 前記主記憶部以外の記憶部への転送は、
    前記情報処理装置に、
    前記主記憶部に格納した性能データが所定量を超えた場合に、前記主記憶部に格納した性能データの少なくとも一部を、前記転送制御部により前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送させることを特徴とする請求項1〜請求項3のいずれか1項記載の性能データ収集プログラム。
  5. 所定の関数で記述された解析対象のプログラムを実行する演算処理装置と、
    前記演算処理装置が呼び出した関数を示す情報を含む性能データを、所定のサンプリング間隔で採取して、主記憶部に格納する採取格納部と、
    採取された性能データに基づいて、前記演算処理装置の処理負荷を判定する判定部と、
    前記演算処理装置の処理負荷が所定値以下の場合に、前記主記憶部に格納された性能データの少なくとも一部を、前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送する転送制御部と、
    を含む性能データ収集装置。
  6. 演算処理装置と転送制御部とを有する情報処理装置が、
    所定の関数で記述された解析対象のプログラムを実行する前記演算処理装置が呼び出した関数を示す情報を含む性能データを、所定のサンプリング間隔で採取して、主記憶部に格納し、
    採取した性能データに基づいて、前記演算処理装置の処理負荷を判定し、
    前記演算処理装置の処理負荷が所定値以下の場合に、前記主記憶部に格納した性能データの少なくとも一部を、前記転送制御部により前記演算処理装置を介さずに、前記主記憶部以外の記憶部へ転送する
    ことを特徴とする性能データ収集方法。
JP2013082397A 2013-04-10 2013-04-10 性能データ収集プログラム、装置、及び方法 Active JP6064756B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013082397A JP6064756B2 (ja) 2013-04-10 2013-04-10 性能データ収集プログラム、装置、及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013082397A JP6064756B2 (ja) 2013-04-10 2013-04-10 性能データ収集プログラム、装置、及び方法

Publications (2)

Publication Number Publication Date
JP2014206786A true JP2014206786A (ja) 2014-10-30
JP6064756B2 JP6064756B2 (ja) 2017-01-25

Family

ID=52120312

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013082397A Active JP6064756B2 (ja) 2013-04-10 2013-04-10 性能データ収集プログラム、装置、及び方法

Country Status (1)

Country Link
JP (1) JP6064756B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017162337A (ja) * 2016-03-11 2017-09-14 富士通株式会社 情報処理装置および制御プログラム
KR102456150B1 (ko) * 2022-01-26 2022-10-18 (주)한국소프트웨어아이엔씨 실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005339107A (ja) * 2004-05-26 2005-12-08 Nec Electronics Corp パフォーマンス・モニタ回路

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005339107A (ja) * 2004-05-26 2005-12-08 Nec Electronics Corp パフォーマンス・モニタ回路

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017162337A (ja) * 2016-03-11 2017-09-14 富士通株式会社 情報処理装置および制御プログラム
KR102456150B1 (ko) * 2022-01-26 2022-10-18 (주)한국소프트웨어아이엔씨 실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치
WO2023146231A1 (ko) * 2022-01-26 2023-08-03 주식회사 한국소프트웨어아이엔씨 실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치

Also Published As

Publication number Publication date
JP6064756B2 (ja) 2017-01-25

Similar Documents

Publication Publication Date Title
US9384037B2 (en) Memory object reference count management with improved scalability
US8898422B2 (en) Workload-aware distributed data processing apparatus and method for processing large data based on hardware acceleration
CN106293881B (zh) 一种基于非一致性i/o访问构架的性能监控器及其监控方法
WO2014208139A1 (ja) 異常検出装置、制御方法、及びプログラム
US9733982B2 (en) Information processing device and method for assigning task
JP6090327B2 (ja) ボトルネック検出装置、方法及びプログラム
US11210127B2 (en) Method and apparatus for processing request
CN113419824A (zh) 数据处理方法、装置、系统及计算机存储介质
CN111209164B (zh) 异常信息存储方法及装置、电子设备、存储介质
JP7135853B2 (ja) バッファオーバーフローの低減
KR102581849B1 (ko) 해제후 사용 메모리 손상 버그들의 근본 원인 식별 기술들
US9740618B2 (en) Memory nest efficiency with cache demand generation
US9697127B2 (en) Semiconductor device for controlling prefetch operation
US8862786B2 (en) Program execution with improved power efficiency
JP6064756B2 (ja) 性能データ収集プログラム、装置、及び方法
CN107451038B (zh) 硬件事件采集方法、处理器和计算系统
Qi et al. Data mining based root-cause analysis of performance bottleneck for big data workload
CN115686789A (zh) 一种离散事件并行处理方法、终端设备及存储介质
CN106095631B (zh) 一种基于有限状态机实现的多周期非流水线cpu动态调试方法
CN117093335A (zh) 分布式存储系统的任务调度方法及装置
CN106354722B (zh) 一种流式计算系统的消息处理方法和装置
US20150134919A1 (en) Information processing apparatus and data access method
JP2009199121A (ja) 情報処理装置、通信情報採取方法、及び、プログラム
CN111198900A (zh) 工业控制网络的数据缓存方法、装置、终端设备及介质
JP4941355B2 (ja) 滞留データ測定システム、方法、及び、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161031

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161205

R150 Certificate of patent or registration of utility model

Ref document number: 6064756

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150