2

ワークロードの実行中にパフォーマンス カウンターの数値を収集したいと考えています。これは、既存の LAPI パフォーマンス カウンター インフラストラクチャを使用して簡単に実行できます。しかし、次のような統計がもっと欲しい

  1. リングレベルの命令数 0,1,2,3
  2. 異なるリング レベルによる l1 キャッシュのロード リクエストの数
  3. リングレベル スイッチの長さ

したがって、事実上、オペレーティング システムとアプリケーションのメモリ アクセスを区別する必要があります。

誰かがこれを行う方法について私を案内してもらえますか? PS : 以前にパフォーマンス カウンターを使用したことがありません。ですから、あなたにとっては些細なことに思えるかもしれませんが、実際には私の助けになるかもしれません。ありがとう

PS : アプリケーションの動作を変更せずに、システムの実行トレースとメモリ アクセス トレースを取得する方法はありますか。

4

1 に答える 1

3

perfのようなハードウェア パフォーマンス カウンターを使用できます。

最新のハードウェアにはハードウェア パフォーマンス カウンターが用意されているため、お使いのマシンにこの機能が備わっている可能性は十分にあります。また、カーネルドライバーを配置する必要がある場合もあります。(ubuntu では sudo apt-get はこれに対する魔法です)。

perf の簡単な説明 (上記のリンクからインポート)

Perf は Linux 2.6+ ベースのシステム用のプロファイラー ツールであり、Linux パフォーマンス測定における CPU ハードウェアの違いを抽象化し、シンプルなコマンドライン インターフェイスを提供します。Perf は、最近のバージョンの Linux カーネルによってエクスポートされた perf_events インターフェイスに基づいています。

perf ツールは、測定可能なイベントのリストをサポートしています

これらのイベントは上記のリンクにリストされています。

多くのイベントの中から、以下のcyclesイベントの統計を取得したいとします

perf stat -e cycles:u -e cycles:k -e cycles dd if=/dev/zero of=/dev/null count=100000 ここでu、 とkはそれぞれユーザーとカーネルを表します。カンマで区切ってすべてのイベントを配置することもできます。

于 2012-05-20T11:09:37.427 に答える