問題タブ [xperf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
etw - WindowsPerformanceAnalyzerの「WindowinFocus」グラフのETWプロバイダー
Windows Performance Analyzerには、「WindowinFocus」と呼ばれるグラフがあります。このようなグラフを取得するには、xperfコマンドラインでどのプロバイダー/トレースフラグを指定する必要がありますか?
winapi - Windows パフォーマンス アナライザーまたは xperf での包括的な関数のタイミング
包括的な関数のタイミング、つまり関数とそのすべての子が Windows パフォーマンス アナライザーや xperf で実行された合計時間を表示することは可能ですか。発信者に依存しない時間を知りたい。
スタック列から呼び出し元に依存する包括的なタイミングと、関数列から排他的なタイミングを取得できることはわかっていますが、すべての呼び出し元を合計した最初のタイミングは、実際に私が求めているものです。
xperf - 64 ビット Windows で実行されている 32 ビット アプリケーションのスタックウォークを xPerf に許可するには、DisablePagingExecutive が必要ですか?
2 つの質問があります。
DisablePagingExecutiveを使用するときに設定する必要があるというブログエントリを見つけましたxperf:http://blogs.msdn.com/b/pigscanfly/archive/2009/08/06/stack-walking-in-xperf.aspx
Paging Executive を無効
にする 64 ビット Windows でトレースを機能させるには、DisablePagingExecutiveレジストリ キーを設定する必要があります。これは、カーネル モード ドライバーとシステム コードをディスクにページングしないようにオペレーティング システムに指示します。これは、xperf を使用して 64 ビット コール スタックを取得するための前提条件です。 xperf スタック ウォーク コードは、ページ アウトされたページにアクセスできません。xperfこれは、64 ビット Windows で実行されている 32 ビット アプリケーションのデータを収集するために必要ですか?xperf64 ビット OS で 32 ビット プロセスのデータを収集する場合、x86 または x64 バージョンを使用する必要がありますか?
asp.net - xperf を使用してマネージド コードをプロファイリングできますか?
xperf を使用して、(ローカルで実行されている) ASP.NET アプリケーションの CPU 時間をプロファイリングしようとしています。
これまでのところ、私は標準的な手順に従いました:
cmd管理者として実行xperf -on base- Web アプリでいくつかのことを行います。
xperf -d mylog.etlxperfview mylog.etl- トレース -> シンボルをロード
- 要約表
その時点で、アンマネージ コードの呼び出しレポートを確認できます。
.NET アセンブリで同じことを確認するにはどうすればよいですか? これは可能ですか?
に PDB へのパスが_NT_SYMBOL_PATHあり、少なくとも MS シンボルが読み込まれていることはわかっています。
この質問を見たことがありますが、解決策はありません。この答えによると、
Windows 8 SDK の xperf バージョンが必要です。このバージョンは .net をサポートしています。新しい Performance Recorder UI でトレースを開始すると、このツールは生成された .net コンポーネントの PDB を生成し、xperfview と WPA がコールスタックをデコードできるようにします。
誰でもこれを確認できますか?Windows 7 と Windows 7 SDK を使用しています。別のプラットフォーム SDK をインストールすることに懐疑的です。
更新: はい、Windows 8 SDK は Windows 7 で実行されます。この目的のために必要なのは、Performance Toolkit だけです。実際、新しい「Windows パフォーマンス アナライザー」を使用する必要さえありません。新しい「Windows パフォーマンス レコーダー」によって生成されたファイルは、強化されたスタック トレースを含め、etl引き続き で動作するからです。xperfview詳細なメモについては、受け入れられた回答へのコメントを参照してください。
c++ - xperf プロファイリングの混合モード コードでネイティブ関数が表示されない
Visual Studio 2012 を使用してアプリケーションの一部をプロファイリングしています。これは、ネイティブ C++ および .net C++/CLI マネージ コードを含む dll です。パフォーマンス レポートには、すべてのマネージ コードの情報が適切に表示されますが、マネージ コードがネイティブ コードを呼び出すすべての場所を掘り下げることができず、場所として [不明] が表示されるだけです。機能の大部分が存在するネイティブ コードのプロファイルを作成する必要があります。
windows - ETW: 既存のプロバイダーを介してイベントを発行する
ネイティブ プラグインを使用するアプリケーションがあります。これらのプラグインには独自のバイナリ形式があります。各プラグインは、DLL をプロセスの空間にマッピングするのと同様の方法を使用して、実行時にロードされます。つまり、各プラグインには独自の, のようなImageBaseセクションがあり、従来の DLL と同じ方法で処理されます。唯一の違いは、プラグインのバイナリ形式 (ファイルではない) と、プラグインをプロセス空間にマップするローダー コードです。.text.dataPE
このコマンドラインでトレースを実行すると、ETW が発生することがわかりました。
トレース キャプチャ中にプロセス環境を再構築するために使用できるイベントを発行します。つまり、「プロセスの追加」、「プロセスへのスレッドの追加」、「プロセスへの DLL モジュールの追加」などのイベントを発行し、そのようなツールxperfviewがシステム内のプロセスの状態の仮想環境を構築し、情報を構築できるようにします。現在のプロセスツリーのように。これらのイベントは、たとえば、トレース前またはトレース中に読み込まれる各 DLL に関する情報を提供するImageLoadイベントです。
もちろん、私のプラグインではこれらのImageLoadイベントは生成されません。これは、技術的には DLL ではないためです (つまり、機能は同じですが、DLL と同じ機能によって読み込まれるわけではありません)。これが、 のようなツールがxperfviewプロセス空間での存在を認識しない理由です。
私がやりたいことは、プラグイン ローダー コードに独自の EventWrite を記述し、ImageLoad必要な情報を含むこれらのイベントを発行してxperfview、 および同様のツールがプラグインを通常の DLL として解釈できるようにすることです。ImageBase、ProcessId、ImageSizeなどの必要な情報を入力します。
MSNT_SystemTraceこれを行うには、イベントの所有者であるイベント プロバイダーを登録しImageLoad、次のような構造でイベントを構築する必要があることを理解しています。
そしてイベントを発行します。
問題は、このプロバイダーが既に存在するため、論理的なERROR_ACCESS_DENIED別の を登録しようとしたときに得られることです。MSNT_SystemTrace
しかし、それは私が質問をすることを余儀なくさせます.私がやろうとしていることはETWでサポートされていますか?
.net - CLR ETW イベントを表示する方法
特に CLR ETWイベントを表示するために使用できるツールがあるかどうか疑問に思っていました。つまり、一般的なグラフを使用してWPAの一般的なイベント セクションに表示されるのではなく、「適切な」グラフを表示します。
WPAで .etl トレース ファイル (たとえば、perfmonitor.exeまたは WPR で作成) のトレースを開くと、GUID とイベント ID (CLR イベントの場合) しか得られないので、これらをより便利に解決する方法があるかどうか疑問に思っていました。 WPA の名前、またはそのようなイベント トレースを表示できる別のツールがある場合。perfmonitor.exe は、JIT、GC、および CPU のみに焦点を当て、(私の知る限り) 他のイベントを無視するため、部分的にしか役に立ちません。
performance - 別のマシンで xperf ETL ファイルを表示中にエラーが発生しました
Windows 8.1 と ADK (xperf 6.3.9600) がインストールされたマシンがあります。
Windows 7 SP1 と 8.1 ADK (xperf 6.3.9600) がインストールされた別のマシンがあります。
xperf を使用して 8.1 マシンでトレースを生成すると、そのトレースを Win7 マシンにロードできません。それは私にエラーを与えるThe file or directory is corrupted and unreadable. (0x80070570).
ETL ファイルは、それを生成したマシンと、Windows 8.1 を実行している別のマシンに正常にロードできます。
トレース ファイルを生成した OS と同等またはそれ以上の OS でのみ、トレース ファイルをロードできますか? 同じ xperf/WPA バージョンを必要としないのはなぜですか? それとも、これは他の人にも有効で、私が見落としているものがありますか?