JP6070712B2 - 情報処理装置及び性能解析データの収集方法 - Google Patents
情報処理装置及び性能解析データの収集方法 Download PDFInfo
- Publication number
- JP6070712B2 JP6070712B2 JP2014539498A JP2014539498A JP6070712B2 JP 6070712 B2 JP6070712 B2 JP 6070712B2 JP 2014539498 A JP2014539498 A JP 2014539498A JP 2014539498 A JP2014539498 A JP 2014539498A JP 6070712 B2 JP6070712 B2 JP 6070712B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- message
- processing
- unit
- value
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Description
本願開示は、情報処理装置及び性能解析データの収集方法に関する。
ネットワークでは、高速なパケット処理を行うための情報処理装置として、パケット処理専用プロセッサが用いられる。パケット処理専用プロセッサは、パケット処理を効率化するための専用命令やハードウェアアクセラレータ等を備え、パケットヘッダの書き換え等の処理を実行する。
近年は、コスト削減を目的として、汎用のプロセッサコアを複数搭載したパケット処理専用プロセッサが用いられるようになっている。汎用のプロセッサコアを用いるので、Linux(登録商標)等のオペレーティングシステムサービスを利用することができ、またC言語等の高級言語によるソフト開発が可能となる。また開発環境をLinux(登録商標)とした場合、oProfileやGDB等のオープンソフトウェアを利用した性能解析やデバッグが可能となり、設計効率を大幅に向上させることができる。
しかし、oProfile等のサンプリング型プロファイラを性能解析ツールとして使用した場合、性能分析を高精度で行うことは困難である。サンプリング型プロファイラは、オペレーティングシステムからプログラムに対して一定間隔で割込みをかけてプログラムカウンタを調べ、調べたプログラムカウンタの値を記録していく。プログラム終了後、記録されているプログラムカウンタの値から、プログラム全体の実行に要した時間と、プログラム内で呼ばれている各サブルーチン(関数)の実行に要した時間とを調べることにより、何れのサブルーチンに時間を費やしているかを解析できる。このようなサンプリング型プロファイラでは、プログラムカウンタをサンプリングする間隔が短くなればなるほど、性能解析用のデータを計測する精度は向上する。しかしながら、オペレーティングシステムの割り込みを用いる場合、サンプリング間隔はCPUサイクルと比較して極めて大きな値となりため、精度を上げることが困難である。このような問題点はあるが、サンプリング型プロファイラの場合、プログラムの変更は不要であり、通常動作時と性能解析時とでほぼ同じ速度で対象プログラムを実行させることができる。
またサンプリング型プロファイラの場合、サンプリング間隔はプログラムの起動イベント(パケット到着イベント等)に対して非同期であり、設計者が本来知りたい箇所のみをサンプリングすることができない。例えばパケット処理の性能解析をしたい場合であっても、サンプリング間隔がパケット到着間隔に対して非同期であるため、パケット到着前のポーリング処理等の本来の処理に関係の無いデータも性能解析データに含まれてしまう。またサンプリング型プロファイラの場合、プロセッサコア以外のハードウェア処理の時間、即ちメモリアクセスに要する時間や専用のハードウェアアクセラレータの処理時間等を知ることは困難である。
従って、パケット処理の性能解析をする場合や、メモリアクセス時間や専用のハードウェアアクセラレータ処理時間まで含めた性能解析をする場合、性能カウンタ等の値を読み出すためのコードをプログラム中に埋め込むことが行われる。しかしこの方法では、元のソースコードに性能解析データ収集のためのコードを埋め込んでプログラムを再コンパイルすることが必要になる、という問題点がある。また性能評価対象のプログラムが、埋め込んだコードにより本来のプログラムとは異なった動作をすることになる、という問題がある。プログラム中に上記コードを挿入し、プログラム実行中に何回もカウンタにアクセスすると、合計で数百サイクル程度のオーバーヘッドとなってしまい、正確な性能解析を行うことができなくなってしまう。
以上を鑑みると、プログラムを変更することなくパケット処理の性能解析のためのデータを取得することが可能な情報処理装置が望まれる。
情報処理装置は、パケットを受信するとパケット処理依頼を生成すると共に、パケット毎にパケットヘッダの格納位置を示すポインタ情報を含むメッセージを生成するパケット前処理部と、前記パケット処理依頼に応答して前記パケットを処理するCPUコアと、
前記パケットの出力時に、前記パケットヘッダの格納位置を示すポインタ情報を含むメッセージを生成するパケット出力部と、前記CPUコアに設けられ、前記パケットの処理に伴い生起する所定のイベントに応答して、前記所定のイベントを特定する情報を含むメッセージを生成するハードウェアと、前記パケット前処理部が生成するメッセージ、前記パケット出力部が生成するメッセージ、及び前記ハードウェアが生成するメッセージをタイマのカウント値と共に記録するメッセージ記録部とを含んでよい。
前記パケットの出力時に、前記パケットヘッダの格納位置を示すポインタ情報を含むメッセージを生成するパケット出力部と、前記CPUコアに設けられ、前記パケットの処理に伴い生起する所定のイベントに応答して、前記所定のイベントを特定する情報を含むメッセージを生成するハードウェアと、前記パケット前処理部が生成するメッセージ、前記パケット出力部が生成するメッセージ、及び前記ハードウェアが生成するメッセージをタイマのカウント値と共に記録するメッセージ記録部とを含んでよい。
本願開示の少なくとも1つの実施例によれば、プログラムを変更することなくパケット処理の性能解析のためのデータを取得することが可能な情報処理装置が提供される。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。なお各図において、他の図と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
図1は、情報処理装置としてのパケット処理専用プロセッサの構成の一例を示す図である。図1のパケット処理専用プロセッサ10は、パケット前処理部11、CPUコア12−1乃至12−n、ハードウェアアクセラレータ13、メモリコントローラ14、パケット出力部15、共有キャッシュ16、及びプロファイルデータ取得部17を含む。パケット処理専用プロセッサ10は、更に、ジョブキュー18を含む。パケット前処理部11は、パケット受信処理部21、パケットディスクリプタ生成部22、及びメッセージ生成部23を含む。CPUコア12−1乃至12−nはそれぞれ、メッセージ生成部25−1乃至25−nを含む。パケット出力部15は、メッセージ生成部27を含む。パケット処理専用プロセッサ10は外部メモリ5に接続されている。
パケット前処理部11は、入力パケットを受信すると、CPUコア12−1乃至12−nに対するパケット処理依頼を生成する。具体的には、まずパケット前処理部11のパケット受信処理部21が、入力パケットを受信すると、入力パケットに対してMACレイヤ終端処理、パケットヘッダの切り出し処理、フロー振り分け(負荷分散)処理等を実行する。入力パケットから切り出されたパケットヘッダは、各コア共通の共有キャッシュ16に格納されてよい。また入力パケットのペイロードは、メモリコントローラ14を介して外部メモリ5に格納されてよい。パケット受信処理部21による受信処理の後、パケット前処理部11のパケットディスクリプタ生成部22が、CPUコア12−1乃至12−nで処理を効率化するための情報やパケットヘッダの格納位置を示すポインタ情報等を含むパケット記述子を生成する。パケットディスクリプタ生成部22は、各コア毎に設けられたジョブキュー18にパケット記述子を格納することにより、CPUコア12−1乃至12−nに対するパケット処理依頼を行う。
パケット前処理部11のメッセージ生成部23は、パケット毎に、パケット前処理部11を特定するID及びパケットヘッダの格納位置を示すポインタ情報を含むメッセージを生成し、生成したメッセージをプロファイルデータ取得部17に供給する。プロファイルデータ取得部17は、後述するように、受け取ったメッセージをタイマのカウント値と共に内蔵メモリに記録する。これにより、ある入力パケットがパケット処理専用プロセッサ10に到着した時刻が分かる。
CPUコア12−1乃至12−nの各々は、パケット処理依頼に応答してパケットを処理する。具体的には、CPUコア12−1乃至12−nは、自コアに割りつけられたジョブキュー18を監視しており、キューにデータがあれば、パケット処理を開始する。このパケット処理により、CPUコア12−1乃至12−nは、次に当該パケットを送る宛先であるIPアドレスを書き換えたり、IPパケットの生存期間を示すTTL(Time To Live)の値をルータ通過毎に1つ減らしたりする処理等を行う。
CPUコア12−1乃至12−nの各々は、ハードウェアとしての電子回路であるメッセージ生成部25−1乃至25−nを含む。メッセージ生成部25−1乃至25−nは、対応CPUコア12−1乃至12−nにおいてパケットの処理に伴い生起する所定のイベントに応答して、当該所定のイベントを特定する情報を含むメッセージを生成する。このメッセージは、対応CPUコアを特定するID及びパケットヘッダの格納位置を示すポインタ情報を更に含んでよい。またこのメッセージに含まれる所定のイベントを特定する情報としては、CPUコアのプログラムカウンタの値を示すデータであってよい。即ち、何れの命令を実行したのかを特定可能なデータがメッセージに含まれていてよい。
上記所定のイベントは、CPUコアによるサブルーチンのコール命令の実行及びサブルーチンのリターン命令の実行を含んでよい。即ち例えばCPUコア12−1がサブルーチンをコールした場合には、CPUコア12−1のメッセージ生成部25−1が、CPUコア12−1のID等を含むメッセージを生成してよい。また上記所定のイベントは、CPUコアにおけるパケット処理依頼に応答したパケット処理の開始イベントを含んでよい。これらのイベントにより生成されたメッセージは、プロファイルデータ取得部17に供給される。プロファイルデータ取得部17は、後述するように、受け取ったメッセージをタイマのカウント値と共に内蔵メモリに記録する。
ハードウェアアクセラレータ13は、前記パケットの処理の一部を前記CPUコアの代わりに高速に実行するための専用ハードウェアであり、前記CPUコアからのアクセスに応答して処理を開始する。即ちハードウェアアクセラレータ13は、CPUコアからの処理実行要求に応答して、処理を実行する。なお前述のCPUコア12−1乃至12−nのメッセージ生成部25−1乃至25−nがメッセージを生成する契機となる所定のイベントには、CPUコアによるハードウェアアクセラレータ13等への専用ハードウェアへのアクセスも含まれる。即ち、例えばCPUコア12−1がハードウェアアクセラレータ13へアクセスした場合(即ち処理実行要求をした場合)には、CPUコア12−1のメッセージ生成部25−1が、当該所定のイベントを特定する情報を含むメッセージを生成する。このメッセージは、対応CPUコアを特定するID、ハードウェアアクセラレータ13等の個々の専用ハードウェアを特定するID、及びパケットヘッダの格納位置を示すポインタ情報を更に含んでよい。またこのメッセージに含まれる所定のイベントを特定する情報としては、CPUコアのプログラムカウンタの値を示すデータであってよい。
なお、プログラム内からのハードウェアアクセラレータへのアクセスには、メーカ独自のAPI(Application Program Interface)が通常提供される。CPUコア12−1乃至12−nでは、APIの処理開始時点とハードウェアアクセラレータの処理待ち完了時点との両方において、メッセージ生成部25−1乃至25−nがメッセージを生成するようにしてよい。
メモリコントローラ14は、外部メモリ5へのアクセスを管理する。CPUコア12−1乃至12−nからメモリコントローラ14へのリードアクセスが発生すると、対応するメッセージ生成部25−1乃至25−nがメッセージを生成してよい。またCPUコア12−1乃至12−nにメモリコントローラ14からリードデータが返送されたときも、対応するメッセージ生成部25−1乃至25−nがメッセージを生成してよい。このメッセージには、当該所定のイベント(メモリリードアクセス又はリードデータ返送)を特定する情報、対応CPUコアを特定するID、及びパケットヘッダの格納位置を示すポインタ情報が含まれてよい。またこのメッセージに含まれる所定のイベントを特定する情報としては、CPUコアのプログラムカウンタの値を示すデータであってよい。またこのメッセージには、アクセス対象であるメモリの物理アドレスが含まれてよい。
パケット出力部15は、CPUコア12−1乃至12−nによるパケット処理が完了すると、共有キャッシュ16からのパケットヘッダと外部メモリ5からのペイロードとを組み合わせてパケットを構成する。当該パケットは、パケット出力部15により、パケット処理専用プロセッサ10の外部に出力される。メッセージ生成部27は、パケット出力時に、メッセージ生成部27を特定するID及びパケットヘッダポインタを格納したメッセージを生成し、プロファイルデータ取得部17に送付する。プロファイルデータ取得部17は、受け取ったメッセージをタイマのカウント値と共に内蔵メモリに記録する。プロファイルデータ取得部17が記録したデータから、パケットヘッダポインタ値をキーとして特定のパケット処理にかかったログのみを抽出することが可能である。こうして抽出されさたログに基づいて、あるパケットの入力から出力までの処理時間(処理サイクル数)を求めることができる。
図2は、CPUコア12−1の構成の一例を示す図である。他のCPUコア12−2乃至12−nについてもCPUコア12−1と同様の構成であってよい。図2のCPUコア12−1は、命令実行ユニット31、命令デコーダ32、及びメッセージ生成部25−1を含む。命令デコーダ32は、プログラムカウンタが示すアドレスからフェッチしたプログラムの命令をデコードし、デコード結果を示す制御信号を命令実行ユニット31に供給する。命令実行ユニット31は、命令デコーダ32によるデコード結果を示す制御信号に基づいて、上記プログラムの命令を実行する。メッセージ生成部25−1は、命令実行のための前記命令実行ユニット31とは別に設けられたメッセージ生成のための専用の回路である。即ち、メッセージ生成部25−1は、プログラム中の演算式や制御文等の通常の命令を実行する回路ではなく、またプログラム中に挿入された性能カウンタ等の値を読み出すための命令を実行する回路でもない。メッセージ生成部25−1は、例えば前記の所定のイベントの生起(サブルーチンのコール命令の実行やリターン命令の実行)に応答してメッセージを生成するためのハードウェアである。例えば、命令デコーダ32がサブルーチンのコール命令やリターン命令をデコードすると、命令デコーダ32がメッセージ生成部25−1に所定のイベントが生起したことを通知してよい。メッセージ生成部25−1は、所定のイベントの生起に応答して、メッセージを生成する。
或いは例えば、CPUコア12−1乃至12−nの内部に処理要求レジスタを設けておき、所定のイベントの生起に応答して処理要求レジスタに所定の値をセットしてよい。メッセージ生成部25−1は、処理要求レジスタの上記所定の値への状態変化をトリガーとして、メッセージを生成してよい。処理要求レジスタへの所定の値のセットは、予め特定しておいた複数の所定の命令の何れかがデコードされると行われるようにしてよい。或いは、処理要求レジスタへ所定の値をセットするレジスタセット命令を、パケット処理プログラム中に明示的に挿入してもよいし、コンパイラで自動的に挿入してもよい。
図3は、図1に示すパケット処理専用プロセッサ10により取得可能なデータについて説明するための図である。図3に示す例では、時間t0において、パケットがパケット前処理部11に到着すると、時間t0に対応するカウンタ値と共にメッセージがプロファイルデータ取得部17に記録される。時間t1において、当該パケットに対するCPUコアの処理が開始されると、時間t1に対応するカウンタ値と共にメッセージがプロファイルデータ取得部17に記録される。時間t2において、当該パケットの処理中にCPUコアがサブルーチンを呼び出すと、時間t2に対応するカウンタ値と共にメッセージがプロファイルデータ取得部17に記録される。時間t3において、当該パケットの処理中にCPUコアが当該サブルーチンからのリターン命令を実行すると、時間t3に対応するカウンタ値と共にメッセージがプロファイルデータ取得部17に記録される。時間t4において、当該パケットの処理中にCPUコアがハードウェアアクセラレータ13を呼び出すと、時間t4に対応するカウンタ値と共にメッセージがプロファイルデータ取得部17に記録される。時間t5において、当該パケットの処理中にCPUコアがハードウェアアクセラレータ13の処理完了を受け付けると、時間t5に対応するカウンタ値と共にメッセージがプロファイルデータ取得部17に記録される。時間t6において、当該パケットに対するCPUコアの処理が終了すると、時間t6に対応するカウンタ値と共にメッセージがプロファイルデータ取得部17に記録される。時間t7において、当該パケットがパケット出力部15から出力されると、時間t7に対応するカウンタ値と共にメッセージがプロファイルデータ取得部17に記録される。このようにして、プロファイルデータ取得部17が記録したデータには、各イベントが生起した時刻に対応するカウンタ値(即ち各時刻を示すカウンタ値)が含まれる。従って、記録データ(性能解析データ)を調べることにより、当該パケットの処理全体に要した時間、サブルーチン処理に要した時間、ハードウェアアクセラレータでの処理に要した時間等を知ることができる。
上記説明したようにパケット処理専用プロセッサ10においては、各機能ブロック(パケット前処理部11、CPUコア12−1乃至12−n、パケット出力部15等)に内蔵したハードウェアが自律的にメッセージを送信する。従って、アプリケーションソフトに影響を与えることなく、性能解析データの取得にともなうオーバーヘッドを略ゼロにしながら、精度の高い処理サイクル数を計測することができる。またパケット処理待ちループ等のパケット処理に関係の無い部分については、性能解析データを取得しないので、ユーザ側での性能解析データの分析や性能解析データの取得に係る工数を低減することができる。また各機能ブロック毎にメッセージ生成の有無を切り替える機能を設ければ、選択したブロックの性能解析データのみを取得することができる。また、性能解析データを取得しない場合には、クロックゲーティングで対象回路のクロックを停止することにより、或いは、パワーゲーティングで電源を停止することにより、不要な電力を削減することができる。
図4は、各メッセージ生成部が生成するメッセージの構成の一例を示す図である。図4に示すメッセージは、ID41、ハードウェアアクセラレータID42、ヘッダポインタ43、物理アドレス44、及びプログラムカウンタ値45を含む。ID41は、当該メッセージを生成した機能ブロック(パケット前処理部11、CPUコア12−1乃至12−n、パケット出力部15等)を特定する識別子である。ハードウェアアクセラレータID42は、CPUコア12−1乃至12−nに代わりプロセッサ処理を高速に実行する専用ハードウェアを特定する識別子である。ヘッダポインタ43は、パケットヘッダの格納位置を示すポインタ情報である。物理アドレス44は、データ読出し命令等によるメモリアクセス先の物理アドレスである。プログラムカウンタ値45は、当該メッセージを生成したCPUコアのプログラムカウンタの値を示すデータであり、当該メッセージ生成の契機となるイベント生起時のプログラムカウンタの値を示す。
図5は、異なるイベント生起に応答して生成される異なるメッセージの内容を示す図である。図5に示されるように、パケット前処理部11がパケットを受信したときに生成するメッセージには、ID41とヘッダポインタ43とが含まれる。CPUコア12−1乃至12−nがパケットを受信したとき(パケット処理を開始するとき)に生成するメッセージには、ID41、ヘッダポインタ43、及びプログラムカウンタ値45が含まれる。CPUコア12−1乃至12−nがハードウェアアクセラレータ13にアクセスしたときに生成するメッセージには、ID41、ハードウェアアクセラレータID42、ヘッダポインタ43、及びプログラムカウンタ値45が含まれる。パケット出力部15がパケットを出力したときに生成するメッセージには、ID41とヘッダポインタ43とが含まれる。またCPUコア12−1乃至12−nがサブルーチンのコール命令やリターン命令を実行したときに生成するメッセージには、ID41、ヘッダポインタ43、及びプログラムカウンタ値45が含まれる。
図6は、プロファイルデータ取得部17の構成の一例を示す図である。プロファイルデータ取得部17は、ハードウェアタイマ51、内蔵メモリ制御部52、外部メモリ書き込み制御部53、メッセージ入力部54−1乃至54−n+2、及び複数の付加ユニット55を含む。プロファイルデータ取得部17は、外部メモリ5と内蔵メモリ56とに接続される。なお内蔵メモリ56は、プロファイルデータ取得部17に含まれてもよい。
ハードウェアタイマ51は、パケット処理専用プロセッサ10の動作クロック等に基づいてカウント動作を行い、時間経過の指標となるカウント値を示すデータを出力する。メッセージ入力部54−1乃至54−n+2は、パケット前処理部11、CPUコア12−1乃至12−n、及びパケット出力部15にそれぞれ対応して設けられ、各機能ブロックから供給されるメッセージを受け取る。これにより、複数の機能ブロックから同時にメッセージが到来しても、それぞれのメッセージを問題なく処理することができる。
複数の付加ユニット55は、メッセージ入力部54−1乃至54−n+2のそれぞれに対応して設けられる。付加ユニット55は、メッセージ入力部54−1乃至54−n+2から出力されるメッセージに対して、ハードウェアタイマ51が生成するカウント値を示すデータを付加する。これにより、カウント値を示すデータであるタイムスタンプ(TS)40が、図4に示す構造のメッセージに対して追加される。このタイムスタンプ40は、当該メッセージを受信した時間を示す情報となる。内蔵メモリ制御部52は、受け取ったメッセージを内蔵メモリ56に格納する。内蔵メモリ56に所定量のデータが蓄積されると、内蔵メモリ制御部52は内蔵メモリ56からデータを読出し、外部メモリ書き込み制御部53を介して外部メモリ5にデータを転送する。これにより、数多くのパケットに対するパケット処理に関して、大量の性能解析データが収集されても、問題なく全てのデータを記録することができる。
しかしながら、数多くのパケット処理中に生起する全てのイベントについて生成される全てのメッセージを時系列で保存していくと、メモリ容量を大きく取れない場合には、短時間分の性能解析データしか収集できない可能性がある。以下においては、性能解析データを効率的に圧縮した形式で蓄積する方式について説明する。
図7は、性能解析データを効率的に圧縮した形式で蓄積するために用いるメッセージの構成の一例を示す図である。図7に示すメッセージは、図4に示す構成のメッセージに加え、S/Eフィールド46を含む。S/Eフィールド46は、1ビットのフラグであってよく、開始(S)と終了(E)との2つの事象を表現するものである。
図8は、性能解析データを効率的に圧縮した形式で蓄積する方式を説明するための図である。図8において、記憶領域60は、性能解析データを記憶するためのメモリ中の領域である。記憶領域60には、パケット前処理部&後処理部格納領域61やハードウェアアクセラレータデータ格納領域63等のように、各機能ブロックに対応して性能解析データの格納領域が設けられる。
まずパケット前処理部11が、パケットPacket−Aを受信すると、パケット前処理部11を特定するIDやパケットヘッダポインタ等に加え、開始を示す値Sを設定したS/Eフィールド46(図7参照)を含むメッセージを送信する。プロファイルデータ取得部17は、このメッセージを受信すると、例えばパケット前処理部11のIDとパケットヘッダポインタとに基づいて、パケット前処理部&後処理部格納領域61中のPacket−A到着時刻フィールド71のアドレスを算出する。このアドレスは、例えばパケット前処理部11のIDとパケットヘッダポインタとから決まるハッシュ値であってよい。或いは、パケット前処理部11のIDとパケットヘッダポインタとを連想メモリ(Content Addressable Memory)にエントリし、アドレスを決定してもよい。プロファイルデータ取得部17は、S/Eフィールド46が開始を示す値Sである場合、Packet−A到着時刻フィールド71の値を現在の時刻(現在のタイマの値)で更新する。
次に例えばCPUコア12−1が、パケットPacket−Aについてのパケット処理を開始し、このパケット処理中にサブルーチン(関数−A)を呼び出す。このサブルーチンのコール時に、CPUコア12−1は、CPUコア12−1を特定するIDやプログラムカウンタ値に加え、開始を示す値Sを設定したS/Eフィールド46(図7参照)を含むメッセージを送信する。プロファイルデータ取得部17は、このメッセージを受信すると、例えばCPUコア12−1を特定するIDとプログラムカウンタ値とに基づいて、CPU#0関数−Aデータ格納領域62中の関数−A処理開始時刻フィールド74のアドレスを算出する。このアドレスは、例えばCPUコア12−1を特定するIDとプログラムカウンタ値とから決まるハッシュ値であってよい。或いは、連想メモリからアドレスを決定してもよい。プロファイルデータ取得部17は、S/Eフィールド46が開始を示す値Sである場合、関数−A処理開始時刻フィールド74の値を現在の時刻(現在のタイマの値)で更新する。
その後CPUコア12−1が、サブルーチン(関数−A)の完了時点でリターン命令を実行する。このリターン命令実行時に、CPUコア12−1は、CPUコア12−1を特定するIDやプログラムカウンタ値に加え、終了を示す値Eを設定したS/Eフィールド46を含むメッセージを送信する。なおサブルーチンからのリターン命令が実行される場合、プログラムの実行位置は、サブルーチンのコール命令の次の命令の位置に戻る。上記メッセージに含まれるプログラムカウンタ値としては、「リターン位置−1」(即ちコール命令の位置)を設定しておく。プロファイルデータ取得部17は、このメッセージを受信すると、例えばCPUコア12−1を特定するIDとプログラムカウンタ値とに基づいて、CPU#0関数−Aデータ格納領域62中の関数−A処理開始時刻フィールド74のアドレスを算出する。プロファイルデータ取得部17は、S/Eフィールド46が終了を示す値Eである場合、現在の時刻(現在のタイマの値)から関数−A処理開始時刻フィールド74の値(関数−Aコール時のタイマの値)を引いてカウンタ値の差分を求める。プロファイルデータ取得部17は、累計処理サイクル数フィールド75に格納される当該サブルーチン(関数−A)を実行した累計のサイクル数を示す値に、上記の求めたカウンタ値の差分を加算する。プロファイルデータ取得部17は更に、呼び出し回数フィールド76に格納されているコール回数を示す値を1増加させる。
ハードウェアアクセラレータデータ格納領域63へのデータ書き込み動作についても、上記のデータ書き込み動作と同様である。但し、アドレス決定には、例えば対応CPUコアのID、パケットヘッダポインタ、及びハードウェアアクセラレータのIDを用いてよい。またメモリアクセスデータ格納領域64へのデータ書き込み動作についても、上記のデータ書き込み動作と同様である。但し、アドレス決定には、例えば対応CPUコアのID、及び物理アドレスを用いてよい。
最後にパケット出力部15が、パケットPacket−Aを出力するときに、パケット出力部15を特定するIDやパケットヘッダポインタ等に加え、終了を示す値Eを設定したS/Eフィールド46を含むメッセージを送信する。プロファイルデータ取得部17は、パケット出力部15のIDを含むメッセージを受信すると、アドレス算出には、パケット出力部15のIDではなくパケット前処理部11のIDとパケットヘッダポインタとを用いる。これにより、パケット前処理部&後処理部格納領域61中のPacket−A到着時刻フィールド71のアドレスを算出することができる。プロファイルデータ取得部17は、S/Eフィールド46が終了を示す値Eである場合、現在の時刻(現在のタイマの値)からPacket−A到着時刻フィールド71の値(Packet−A到着時のタイマの値)を引いてカウンタ値の差分を求める。プロファイルデータ取得部17は、累計処理サイクル数フィールド72に格納される値(初期値0)に、上記の求めたカウンタ値の差分を加算する。プロファイルデータ取得部17は更に、処理パケット数フィールド76に格納されている処理パケット数を示す値を1増加させる。
上記のように、メッセージは第1の値S及び第2の値Eの何れか一方の値を示すS/Eフィールド46を含む。プロファイルデータ取得部17は、メッセージのS/Eフラグ46が第1の値Sを示す場合にはタイマの現在カウント値である第1のカウント値を記録する。またプロファイルデータ取得部17は、メッセージのS/Eフラグ46が第2の値Eを示す場合には、上記記録された第1のカウント値とタイマの現在カウント値である第2のカウント値との差分を記録する。これにより、性能解析データを効率的に圧縮した形式で蓄積することができる。
図9は、性能解析データを効率的に圧縮した形式で蓄積する場合におけるプロファイルデータ取得部17の構成の一例を示す図である。図9に示すプロファイルデータ取得部17は、ハードウェアタイマ81、前処理メッセージ処理部82、CPU#0メッセージ処理部83、メモリアドレス生成回路84、及びメモリR&W制御回路85を含む。各CPUコアに対応して、CPU#0メッセージ処理部83と同様のメッセージ処理部が設けられてよい。またパケット出力部15に対応して、前処理メッセージ処理部82と同様のメッセージ処理部が設けられてよい。
前処理メッセージ処理部82は、データ更新回路91及びメッセージ解析部92を含む。CPU#0メッセージ処理部83は、データ更新回路93及びメッセージ解析部94を含む。前処理メッセージ処理部82の動作とCPU#0メッセージ処理部83の動作とは基本的に同様であるので、以下においては、CPU#0メッセージ処理部83の動作を例として説明する。
CPU#0(例えばCPUコア12−1)が、サブルーチンのコール時に、CPU#0を特定するIDやプログラムカウンタ値に加え、開始を示す値Sを設定したS/Eフィールド46を含むメッセージを送信する。CPU#0メッセージ処理部83のメッセージ解析部94がこのメッセージを受信すると、CPU#0を特定するIDとプログラムカウンタ値とをメモリアドレス生成回路84に供給する。メモリアドレス生成回路84は、CPU#0を特定するIDとプログラムカウンタ値とに基づいて、処理開始時刻フィールドのアドレスを算出する。このアドレスは、例えばCPU#0を特定するIDとプログラムカウンタ値とから決まるハッシュ値であってよい。メッセージ解析部94は、S/Eフィールド46が開始を示す値Sである場合、データ更新回路93から現在のハードウェアタイマ81のカウント値を受け取り、メモリR&W制御回路85を介して処理開始時刻フィールドに当該カウント値を書き込む。
その後CPU#0が、サブルーチンのリターン命令実行時に、CPU#0を特定するIDやプログラムカウンタ値に加え、終了を示す値Eを設定したS/Eフィールド46を含むメッセージを送信する。CPU#0メッセージ処理部83のメッセージ解析部94がこのメッセージを受信すると、CPU#0を特定するIDとプログラムカウンタ値とをメモリアドレス生成回路84に供給する。メモリアドレス生成回路84は、CPU#0を特定するIDとプログラムカウンタ値とに基づいて、処理開始時刻フィールドのアドレスを算出する。メッセージ解析部94は、S/Eフィールド46が終了を示す値Eである場合、メモリR&W制御回路85を介して、当該アドレスから処理開始時刻フィールドの値、累計処理サイクル数フィールドの値、及び呼び出し回数フィールドの値を読み出す。メッセージ解析部94は、これらの読み出した値をデータ更新回路93に供給する。データ更新回路93は、現在のハードウェアタイマ81のカウント値から処理開始時刻フィールドの値(コール時のタイマのカウント値)を引いてカウンタ値の差分を求め、更に、累計処理サイクル数フィールドの値にカウンタ値の差分を加算する。これにより、累計処理サイクル数フィールドの値が更新される。データ更新回路93は更に、呼び出し回数フィールドの値(コール回数を示す値)を1増加させる。これにより、呼び出し回数フィールドの値が更新される。メッセージ解析部94は、メモリR&W制御回路85を介して、累計処理サイクル数フィールドの更新値を累計処理サイクル数フィールドに書き込むとともに、呼び出し回数フィールドの値の更新値を呼び出し回数フィールドに書き込む。
なお上記説明で用いた図1,2,6,9の各々において、各ボックスで示される各機能ブロックと他の機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。電子回路により実装されたハードウェアである各機能ブロックは、他のブロックと物理的にある程度分離された1つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の1つの機能を示したものであってもよい。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
5 外部メモリ
10 パケット処理専用プロセッサ
11 パケット前処理部
12−1〜12−n CPUコア
13 ハードウェアアクセラレータ
14 メモリコントローラ
15 パケット出力部
16 共有キャッシュ
17 プロファイルデータ取得部
18 ジョブキュー
21 パケット受信処理部
22 パケットディスクリプタ生成部
23 メッセージ生成部
25−1〜25−n メッセージ生成部
27 メッセージ生成部
10 パケット処理専用プロセッサ
11 パケット前処理部
12−1〜12−n CPUコア
13 ハードウェアアクセラレータ
14 メモリコントローラ
15 パケット出力部
16 共有キャッシュ
17 プロファイルデータ取得部
18 ジョブキュー
21 パケット受信処理部
22 パケットディスクリプタ生成部
23 メッセージ生成部
25−1〜25−n メッセージ生成部
27 メッセージ生成部
Claims (8)
- パケットを受信するとパケット処理依頼を生成すると共に、パケット毎にパケットヘッダの格納位置を示すポインタ情報を含むメッセージを生成するパケット前処理部と、
前記パケット処理依頼に応答して前記パケットを処理するCPUコアと、
前記パケットの出力時に、前記パケットヘッダの格納位置を示すポインタ情報を含むメッセージを生成するパケット出力部と、
前記CPUコアに設けられ、前記パケットの処理に伴い生起する所定のイベントに応答して、前記所定のイベントを特定する情報を含むメッセージを生成するハードウェアと、
前記パケット前処理部が生成するメッセージ、前記パケット出力部が生成するメッセージ、及び前記ハードウェアが生成するメッセージをタイマのカウント値と共に記録するメッセージ記録部と
を含むことを特徴とする情報処理装置。 - 前記所定のイベントは、前記CPUコアによるサブルーチンのコール命令の実行及び前記サブルーチンのリターン命令の実行を含むことを特徴とする請求項1記載の情報処理装置。
- 前記パケットの処理の一部を前記CPUコアの代わりに実行するために前記CPUコアからアクセスされる専用ハードウェアを更に含み、前記所定のイベントは、前記CPUコアによる前記専用ハードウェアへのアクセスを含むことを特徴とする請求項1又は2記載の情報処理装置。
- 前記メッセージは、前記CPUコアのプログラムカウンタの値を示すデータを含むことを特徴とする請求項1乃至3何れか一項記載の情報処理装置。
- 前記メッセージは第1の値及び第2の値の何れか一方の値を示すフィールドを含み、前記メッセージ記録部は、前記メッセージの前記フィールドが前記第1の値を示す場合には前記タイマの現在カウント値である第1のカウント値を記録し、前記メッセージの前記フィールドが前記第2の値を示す場合には前記記録された第1のカウント値と前記タイマの現在カウント値である第2のカウント値との差分を記録することを特徴とする請求項1乃至4何れか一項記載の情報処理装置。
- 前記CPUコアは、
プログラムの命令をデコードする命令デコーダと、
前記命令デコーダによるデコード結果に基づいて前記命令を実行する命令実行ユニットと、
を更に含み、前記ハードウェアは、命令実行のための前記命令実行ユニットとは別に設けられたメッセージ生成のための専用の回路であることを特徴とする請求項1乃至5何れか一項記載の情報処理装置。 - パケットを受信するとパケット前処理部によりパケット処理依頼を生成すると共に、パケット毎にパケットヘッダの格納位置を示すポインタ情報を含むメッセージを生成し、
前記パケット処理依頼に応答してCPUコアにより前記パケットを処理し、
前記パケットの出力時に、前記パケットヘッダの格納位置を示すポインタ情報を含むメッセージをパケット出力部により生成し、
前記CPUコアに設けられるハードウェアにより、前記パケットの処理に伴い生起する所定のイベントに応答して、前記所定のイベントを特定する情報を含むメッセージを生成し、
前記パケット前処理部が生成するメッセージ、前記パケット出力部が生成するメッセージ、及び前記ハードウェアが生成するメッセージをメッセージ記録部によりタイマのカウント値と共に記録する
各段階を含むことを特徴とする性能解析データの収集方法。 - 前記パケット前処理部は、パケット毎に前記パケットヘッダの格納位置を示すポインタ情報を前記パケット処理依頼に含め、前記ハードウェアは、前記ハードウェアが生成する前記メッセージに、前記パケット処理依頼に含まれるポインタ情報を含めることを特徴とする請求項1記載の情報処理装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/075415 WO2014054101A1 (ja) | 2012-10-01 | 2012-10-01 | 情報処理装置及び性能解析データの収集方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2014054101A1 JPWO2014054101A1 (ja) | 2016-08-25 |
JP6070712B2 true JP6070712B2 (ja) | 2017-02-01 |
Family
ID=50434463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014539498A Expired - Fee Related JP6070712B2 (ja) | 2012-10-01 | 2012-10-01 | 情報処理装置及び性能解析データの収集方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9740541B2 (ja) |
JP (1) | JP6070712B2 (ja) |
WO (1) | WO2014054101A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11394804B2 (en) * | 2015-09-30 | 2022-07-19 | Radware, Ltd. | System and method for stateless distribution of bidirectional flows with network address translation |
KR101854377B1 (ko) * | 2016-11-10 | 2018-05-03 | 고려대학교 산학협력단 | 고속 패킷 처리 시스템 및 그 제어방법 |
US20180285154A1 (en) * | 2017-03-30 | 2018-10-04 | Intel Corporation | Memory ring-based job distribution for processor cores and co-processors |
KR102569435B1 (ko) * | 2018-06-27 | 2023-08-24 | 에스케이하이닉스 주식회사 | 융합형 반도체 장치 및 동작 방법, 이를 포함하는 적층형 메모리 장치 |
US11263308B2 (en) * | 2019-03-25 | 2022-03-01 | Micron Technology, Inc. | Run-time code execution validation |
CN110018839B (zh) * | 2019-03-27 | 2021-04-13 | 联想(北京)有限公司 | 硬件加速器复用方法和硬件加速装置 |
JP2022546102A (ja) * | 2019-09-10 | 2022-11-02 | 華為技術有限公司 | パケット処理方法および装置、ならびにチップ |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02236646A (ja) | 1989-03-10 | 1990-09-19 | Hitachi Ltd | プログラム性能測定方式 |
JPH04153742A (ja) * | 1990-10-18 | 1992-05-27 | Nec Corp | プログラム性能測定方式 |
JPH1040224A (ja) | 1996-07-26 | 1998-02-13 | Hitachi Ltd | 並列計算機内部ネットワークの挙動監視システム |
US5796939A (en) | 1997-03-10 | 1998-08-18 | Digital Equipment Corporation | High frequency sampling of processor performance counters |
US6341357B1 (en) * | 1997-10-08 | 2002-01-22 | Sun Microsystems, Inc. | Apparatus and method for processor performance monitoring |
JP4335999B2 (ja) * | 1999-05-20 | 2009-09-30 | 株式会社ルネサステクノロジ | プロセッサ内蔵半導体集積回路装置 |
JP2002229814A (ja) * | 2001-02-02 | 2002-08-16 | Hitachi Ltd | デバッグ方法及び情報処理システム |
US6735653B2 (en) | 2001-02-16 | 2004-05-11 | Koninklijke Philips Electronics N.V. | Bus bandwidth consumption profiler |
US7392370B2 (en) * | 2004-01-14 | 2008-06-24 | International Business Machines Corporation | Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics |
US7594081B2 (en) * | 2004-09-10 | 2009-09-22 | Cavium Networks, Inc. | Direct access to low-latency memory |
US7895431B2 (en) * | 2004-09-10 | 2011-02-22 | Cavium Networks, Inc. | Packet queuing, scheduling and ordering |
JP2006209251A (ja) * | 2005-01-25 | 2006-08-10 | Nec Corp | スループット確認試験方法およびスループット確認試験システム |
JP2006277279A (ja) | 2005-03-29 | 2006-10-12 | Nec Corp | プログラム性能情報の採取方法及びその装置並びにプログラムへの性能情報採取機能追加方法及びその装置 |
JP5312918B2 (ja) * | 2008-11-26 | 2013-10-09 | ルネサスエレクトロニクス株式会社 | タイムスタンプ取得回路及びタイムスタンプ取得方法 |
-
2012
- 2012-10-01 WO PCT/JP2012/075415 patent/WO2014054101A1/ja active Application Filing
- 2012-10-01 JP JP2014539498A patent/JP6070712B2/ja not_active Expired - Fee Related
-
2015
- 2015-03-31 US US14/674,953 patent/US9740541B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2014054101A1 (ja) | 2014-04-10 |
US9740541B2 (en) | 2017-08-22 |
JPWO2014054101A1 (ja) | 2016-08-25 |
US20150205648A1 (en) | 2015-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6070712B2 (ja) | 情報処理装置及び性能解析データの収集方法 | |
US20120095728A1 (en) | Data processing apparatus, performance evaluation/analysis apparatus, and performance evaluation/analysis system and method | |
US7836435B2 (en) | Checking for memory access collisions in a multi-processor architecture | |
US7562258B2 (en) | Generation of trace elements within a data processing apparatus | |
US8032869B2 (en) | Profiling method and computer product | |
JP5353227B2 (ja) | 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。 | |
KR102161192B1 (ko) | 코어 트레이스로부터 데이터 마이닝을 하기 위한 방법 및 장치 | |
CA3043127C (en) | Data prefetching method, apparatus, and system | |
JP5029245B2 (ja) | プロファイリング方法及びプログラム | |
EP3144814B1 (en) | Method and apparatus for generating a profile of a target program | |
US20160378636A1 (en) | Software-Initiated Trace Integrated with Hardware Trace | |
US20050010908A1 (en) | Method, apparatus and computer program product for implementing breakpoint based performance measurement | |
CN109634822B (zh) | 一种函数耗时统计方法、装置、存储介质及终端设备 | |
US20130019230A1 (en) | Program Generating Apparatus, Method of Generating Program, and Medium | |
US9959191B2 (en) | Dynamic library profiling method and dynamic library profiling system | |
CN107451038B (zh) | 硬件事件采集方法、处理器和计算系统 | |
CN112988544A (zh) | 操作系统性能瓶颈的分析方法、系统、设备和存储介质 | |
US9195524B1 (en) | Hardware support for performance analysis | |
US6725363B1 (en) | Method for filtering instructions to get more precise event counts | |
CN107769987B (zh) | 一种报文转发性能评估方法和装置 | |
JP2009217385A (ja) | プロセッサ及びマルチプロセッサ | |
US9182958B2 (en) | Software code profiling | |
JP4860564B2 (ja) | プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム | |
CN115687159B (zh) | 调试方法、装置及计算机可读存储介质 | |
WO2023191979A1 (en) | Cross-chiplet performance data streaming |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160617 |
|
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: 20161206 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161219 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6070712 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |