問題タブ [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 - Windows パフォーマンス アナライザーがクラッシュする
私は、過去 1 か月前に WPRUI および WPA アプリケーションを正常に使用して、C++ アプリケーションのパフォーマンスの問題を特定しました。しかし、今日、そのうちの 1 つの新しいトレースを記録し、それを開いて WPA がクラッシュしていることを確認しました。ETL を開き、Graph Explorer -> Computation -> CPU Usage (sampled) -> unfold に移動することで、毎回再現可能です。クリックするだけで、CPU サンプリング グラフ リストが表示されます。サイレントにクラッシュすることもあれば、クラッシュをデバッグできるダイアログが表示されることもあります。このような問題を経験した人はいますか?Windows Performance Toolkit サイトにサポート フォーラムがありません。もちろん、これに対する解決策を見つけたいと思っています。事前に感謝します。
PS: 再インストールしても意味がありません。ユーザー設定の削除も同様です。スタックは、「タスク」クラスで範囲外のメモリにアクセスする問題のみを示しましたが、デバッグダイアログを再度表示することはできません (毎回サイレントにクラッシュしています)。
PS2: この 1 か月で覚えている唯一の重要な変更は、Visual Studio 2015 の CTP をインストールし、保留中のパッケージを Windows でアップグレードできるようにしたことです (私は上限のあるサブネットワークにいて、Windows は自動的にアップグレードしません)。 )。
c# - xperf WinDBG C# .NET 4.5.2 アプリケーション - プロセス ダンプについて
重い負荷の下で、私たちのアプリケーションは強力なサーバーを 100% の CPU 使用率にしています。プロセス ダンプを読み取り、スレッドを確認すると、そのうちのいくつかは 10 分経過しています。!CLRStack を使用する場合、それらのどれも私に何の洞察も与えません。
暴走は私に与えています:
これらのスレッドの 1 つで !DumpStack を呼び出すと、次のようになります。
それは私に何を言っているのですか?CLR への呼び出しがたくさんありますが、どこに問題があるのかわかりません。.reload (Thomas による提案) の後、GC 呼び出しが表示されるようになりました。
更新 1
xperf を実行した後、各 w3wp.exe は CPU の約 45% を消費しています。それらの1つでフィルタリングし、関数でグループ化すると、「?」というラベルの付いた関数があります。それが 13.62% を占め、その他は 2.67% 以下です。この「?」が何であるかをどうやって知ることができますか?
更新 2
xperf を再度実行すると、関数JIT_MonEnterWorker_InlineGetThread_GetThread_PatchLabel
が CPU 使用率の 12.31% を占めています。「?」機能はそのままです。
スタックによるグループ化:
ご覧のとおり、これらの 2 つは CPU 使用率の 27% 以上を占めています (各プロセスについて、かなり重要です)。
アップデート 3
wpr.exe を使用した後 (@magicandre1981 による提案):
FormsAuthentication と、クリティカル パスでの Ninject への不要な呼び出しが、CPU 使用率の約 16% を占めていることがわかりました。10分以上実行されているスレッドをまだ理解していません。
更新 4
DebugDiag (@leppie からの提案) を試してみたところ、ハングしているスレッドがすべて次のようになっていることが確認されました。
または StackExchange.Redis によるもの:
また
window - wpaexporter (Windows Performance Toolkit) を使用して完全なスタックをテキスト ファイルにエクスポートする方法
"Windows Performance Toolkit"
utilityを使用して完全なスタックをテキスト ファイルにエクスポートする方法wpaexporter
。私はこのコマンドを使用していますが、これは完全なスタックではなくルート要素のみを提供します。
xperf - xperf - 指定された ETW イベントのペアに対してプロセスによって消費される CPU サイクル
シナリオ: 1. Xperf を開始しました。
- アプリが起動します。アプリには ETW イベント (E1、E2) があります。
- アプリの実行中に ETW(E1,E2) イベントが発生し、(T1,T2) は (E1, E2) イベントに対応するタイムスタンプです。
- Xperf を停止します。ETL ファイルが生成されます。
- (T1,T2) タイムスタンプは ETL ファイルから取得されます。
クエリ: xperf を使用してタイムスタンプ (T1、T2) 間でアプリによって消費される CPU サイクルを取得する方法は?
callstack - 「ジェネリック イベント」のコール スタックがないのはなぜですか
私は読んだ
および他のソースですが、私がやりたい最も簡単なことは、WPA の "Generic events" グラフに "Stack" 列を表示することです。
なぜそこにないのですか?確かに、スタック情報が利用できないためですが、なぜですか? 「xperf -help stackwalk」は知っていますが、リストされているものは探しているものではありません。例えば、
ネットワーク イベントのコールスタックを取得できません。なんで?私は何かが欠けているに違いない。ありがとう!
bios - Hibernate Resume ETW トレースからの BiosInitTime
「tracerpt.exe」を使用して解析された ETW イベントの「BiosInitTime」を見ると、hibernate/S4 のレジュームが常に 0 であることに気付きました (最後の例を参照)。XPERF または ADK Windows アセスメント コンソールを使用して直接収集された etl トレースでも同じことが起こりました。ただし、WAC/WPA 分析と GUI を介して、BIOS が表示されます。したがって、情報はあるように見えますが、「tracerpt.exe」は間違ったイベントを解析して「BiosInitTime」を計算しています。
xperf を使用して、etl トレースを介して Bios Init Time を計算するために、どの特定の開始/停止イベントを確認する必要がありますか?
ありがとう
etw - WPA 「詳細を表示するには Alt + Space を押してください」
Windows パフォーマンス アナライザーのグラフ ビューでデータ ポイントにカーソルを合わせると、"詳細を表示するには Alt + Space を押してください" という小さなポップアップ ウィンドウが表示されます。しかし、そうすると、復元、最小化、最大化、および閉じるオプションを提供するダイアログである、すべてのウィンドウに共通の最上位のダイアログが表示されます。
https://msdn.microsoft.com/en-us/library/windows/hardware/dn450837.aspxの「WPA キーボード ショートカット」ページでは、「Alt + スペース」について言及されていません。google、bing、またはアヒルのダックも検索に行きません。
古い xperfview では、データ ポイントにカーソルを合わせると、そのデータ ポイントに関連付けられたすべてのデータが表示されます。WPAでそれを行うにはどうすればよいですか?