問題タブ [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.
windows - dll に固有の xperf コールスタック トレース
xperf トレースで完全なコール スタックを取得する際に問題が発生しています。これはWin7 64ビットPC上にあります。より高いレベルでは、複数の dll をロードする exe があり、これらも大部分の作業を行います。すべての pdb ファイルは 1 つのディレクトリにあり、実行可能コードで有効なシンボルとコール スタックを取得できるので、シンボル パスが正しく設定されていると確信できます。
私のexeがロードされたdllの1つを呼び出すとすぐに、コールスタック情報が失われ、スタック列が表示さ plugin_name.dll!?
れ、展開するとそれ自体が呼び出されます。重みタブには高いパーセンテージ (50 ~ 90%) と高いカウントが表示されますが、スタックの実際の関数呼び出しを取得できません。例えば:
これらを踏まえて、
http://blogs.msdn.com/b/pigscanfly/archive/2009/08/06/stack-walking-in-xperf.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop /ff191014(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/ff191014.aspx
これは xperf を示しているようです
- 「...アドレスにある実行可能イメージがわかりません」
- "...最大スタック深度を超えています" .
私が見つけたこれの考えられる原因は、FPO (フレーム ポインターの最適化) がオンになっている (/Oy で明示的に無効にしましたが、オンにする必要はありません)、または最大スタック深度を超えていることです。これが私が当たっているかどうかを判断する方法がわかりません。
dll のどこで時間が費やされているかを確認できなければ、あまり有用な情報を得ることができないので、何が起こっているのかを突き止めたいと思います。
読んだり試したりすることについて、何か推奨事項はありますか? 私が見逃しているスタックウォークの制限はありますか? dll のコール スタックに固有の、シンボル用の特別な設定はありますか?
windows - 選択したGPUViewイベントをダンプする
特定のイベント(たとえば、特定のプロセスに対応するNTイベント+ DXイベントのみ)をGPUViewまたはxperfからテキストファイルにダンプする方法はありますか?
windows - xperfがシンボルの読み込みを拒否する
これらのコマンド ラインを使用すると、次のようになります。
set _NT_SYMBOL_PATH=srv*C:\symbols*http://msdl.microsoft.com/downloads/symbols XPerf -on FILE_IO XPerf -d trace.etl XPerf -symbols verbose -i trace.etl > output.csv
次の出力が得られます。
XPerf: 警告: トレース処理のアクセス制限を適用しています xperf: 使用するシンボル パス: srv*C:\symbols*http://msdl.microsoft.com/downloads/symbols xperf: 使用する実行可能パス: srv*C:\symbols* http://msdl.microsoft.com/downloads/symbols xperf: SymCache の使用 パス: \SymCache xperf: SymCache エンジンのバージョン: v1.1 xperf: SymCache の最小許容バージョン: v1.1
xperf: 受け入れられる SymCache の最小バージョン: v1.1 [1/2] 100.0% [2/2] 100.0%
私は何を間違っていますか?
performance - ETW (Windows のイベント トレース) を使用して、メモリ統計も収集できますか?
ETW を使用して、すべてのプロセスとシステムのメモリ統計を取得することは可能ですか? メモリ統計とは、つまり、コミットされたバイト、プライベート バイト、ページ プール、ワーキング セットなどです。
xperf を使用してメモリ統計を取得および表示する方法については何も見つかりません。それは常に CPU 、ディスク、ネットワークに関するものです。
おそらくパフォーマンスカウンターを使用してそのような情報を取得できますが、統計を1つのグラフにグラフィカルに重ねるにはどうすればよいですか(タイムスタンプを関連付け/同期する方法)?
.net - .NET 4.0 NGEN x64 アセンブリでのシンボルの解決が機能しない
x64 NGEN .NET 4.0 アセンブリでのシンボルの解決が機能しません。
詳細:
x64 構成の Visual Studio を使用してコンパイルしている .NET 4.0 コマンド ライン アセンブリがあります。コンパイルしたら、NGEN (64 ビット版) を実行します。
シンボルを解決しないコールスタック (-stackwalk プロファイルを使用) を分析する XPERF で失敗しました。ここから Perfmonitor を試しています: http://bcl.codeplex.com/releases/view/42784
私はこれらの手順を実行しましたが、コール スタックが解決されることを期待していました。
- NGEN 化された x64 アプリを起動する
- PerfMonitor 収集
- パフォーマンス モニターのマージ
- パフォーマンスモニター分析
... 残念ながら、スタック トレースは PerfMonitor でも機能しません。
また、アプリを 32 ビットとして実行してみました - 同じ問題。私のシンボルは symchk /v で正常にチェックアウトされます
この壊れたスタック トレース機能をデバッグする方法がわかりません。
c# - XPerfでイベントデータを表示しますか?
XPerfを使用して、パフォーマンス分析用のアプリケーションをインストルメント化する実験を行っています。私の目標は、C#アプリケーション内の開始/停止イベントをログに記録し、これらのイベント間の特定のカーネルメトリックを分析することです。
TraceListener
アプリケーション内でとを作成し、TraceSource
イベントをソースに記録しています。次に、logmanを使用して2つのセッションを開始します。1つはプロバイダーからのイベントをキャプチャし、もう1つはカーネルイベントをキャプチャします(xperf -on DiagEasy
)。セッションの最後に、XPerfを使用してこれらのファイルをマージし、グラフを表示/オーバーレイします。これはすべてうまく機能します。
アプリケーションのイベントは「汎用イベント」チャートに表示されますが、イベントには識別情報(名前もイベントデータもありません)がないため、どのイベントがどれであるかを判断するのは困難です。tracerpt
トレース出力で実行すると「dumpfile.xml」に表示されるため、イベントデータがキャプチャされていることがわかります。XPerf内の「汎用イベント」にイベント名またはイベントデータを添付する方法はありますか?XPerfを使用する私のアプローチは間違っていますか?
ETWの使用方法を示すサンプルコードを次に示します。
xperf - Windows で 2 つの ETL トレース ファイルを比較する
カスタム ETW ログを使用するアプリケーションがあります。XPERF を使用してこれらのチャネルをリッスンし、分析のために ETL トレースを開きます。
2 つの ETL ファイルを直接比較するのに役立つツールはありますか? 行っている修正の影響を測定できるようにしたい。
ありがとう
windows - Windows パフォーマンス レコーダー レコード固有のプロセス
Windows Performance Recorder を使用して、単一プロセスのトレースに基づいて ETL ファイルを生成することはできますか? システム内のすべてのプロセスに対して生成された ETL ファイルは、数分という短い間隔で GB 単位で測定された ETL ファイルになります。
.net - ガベージコレクションETWイベント。「イベントデータ」はどこにありますか
次のmsdnリンクには、Count、Depth、Reasonなどの「イベントデータ」がリストされています。http: //msdn.microsoft.com/en-us/library/ff356162%28v=vs.100%29.aspx#gcstart_v1_event
このリンクに従って、.etlファイルを作成しました。 http://msdn.microsoft.com/en-us/library/dd264809.aspx
xprefview.exeを使用して、etlファイルを観察し、ビュー'summarytable'の列オペコードを調べて目的のイベント'GCStart_V1'を見つけました。
質問:最初のリンクにリストされている「イベントデータ」はどこにありますか?