問題タブ [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 - 64b OSでXperfコールスタックキャプチャを実行するにはどうすればよいですか?
Windows SDKからXperfパフォーマンスアナライザーをインストールし、次のコマンドを使用してドキュメントに記載されているようにトレースをキャプチャしました。
それでも、スタックトレースにはコールスタックデータは含まれていません。
私のプラットフォームはVista64bです。64b Windowsでコールスタックをキャプチャするために必要な特別な設定やトリックはありますか?
windows - xperf でシンボルを取得する
私はドキュメントを読み、概説されたコマンドを使用しましたが、何らかの理由でシンボルを取得していないようです.私が試していたアプリの一番上のセットを除くすべてのサマリーテーブルの機能列に一連の「不明」があります.デバッグする....環境変数をMicrosoftサーバーに設定し、アプリのpdbを含むディレクトリを設定しました。また、サマリー テーブルを表示する前に、[シンボルの読み込み] 項目を選択するようにしました。
私が読んでいた情報によると、シンボルをロードしている間、テーブルが表示されるまでに時間がかかるはずですが、私にとっては、テーブルはほぼ瞬時に表示され、sprite.exe->sprite.exe の最上位の項目のみに関数名がありました。関数のその他の行は、空白または「不明」のいずれかでした
Vista SP1を使用しています。
これは私が使用したバッチファイルです。シンボルのロードを妨げるようなことをしましたか?
windows - xperf で DLL のシンボルを読み込めません
xperf を使用して DLL をプロファイリングしようとしていますが、DLL の PDB ファイルの使用を拒否しています。-symbols を使用して .etl で xperf を実行すると、次のようになります。
これは、私の PDB がアプリケーションが使用している DLL と一致しないと考えていると私に信じさせます。これは間違っています; それは一致します。アプリケーションがリンクしている DLL のパスを procexp で確認したり、プロジェクトを完全に再構築したりしました。それはまだ一致しないと考えています。
何が間違っている可能性がありますか?
memory - xperf のヒープ プロファイリング ツールを使用してカスタム アロケーターをトレースするにはどうすればよいですか?
xperf (Windows Performance Analysis Toolkit の一部) は、ヒープ分析でメモリ使用量を追跡するのに非常に役立ちます。ただし、私のアプリはカスタム アロケーターを使用しています。これは、VirtualAlloc を介してチャンクを直接取得し、独自のヒープを管理します。HeapAlloc/HeapFree/etc を生成したいです。独自の割り当て関数から自分自身でイベントを作成できるため、一連のカスタム ETW イベントを定義する必要なく、ツールをそのまま使用できます。これを行うことは可能ですか?
xperf - XPerfViewはシンボルのロードに時間がかかります
xperfでシンボルを取得するにリストされているものと同様のバッチファイルを使用して、Xperfでスタックウォークを実行しようとしています。
XperfViewを起動し、シンボルパスが正しいことを確認してから、シンボルをロードします。しかし、「CPUサンプリングbyCPU」グラフの選択した部分(5秒程度)でサマリーテーブルを開こうとすると、パフォーマンスアナライザが長時間(数時間)ハング(応答しない)します。
昨夜実行したままにして、今朝来たとき、サマリーテーブルが最終的に読み込まれ、期待どおりの結果が含まれていました...シンボルをC:\ symbolにキャッシュするために、最初のダウンロードを実行しているだけだと思っていましたが、今朝の繰り返しテストにも同様の問題があります(この時点で1時間15分ハングします)。
resource-leak - 「システム」プロセスによる100%のCPU使用率の原因の診断
Win32APIを使用してC++で実装されたWindowsサーバーアプリケーションがあります。これは、多くのシリアルおよびTCP/IP通信を実行します。実行すると、CPU使用率は100%に達するまで徐々に増加します。タスクマネージャーは、CPU使用率のほとんど(> 75%)が「システム」プロセスによるものであることを示しています。サーバープロセスを強制終了すると、CPU使用率は通常に戻ります。
問題が何であるかを正確に診断するための「簡単な」方法はありますか?
I / O接続が開いていて、閉じられていないのではないかと思われるため、OSはこれらの要求の処理にますます多くの時間を費やしていますが、問題を解決する前に、それが当てはまるかどうかを確認したいと思います。
更新:をいじっxperf
てみたところ、システムプロセスがその時間の半分以上をに費やしていることがわかりましたntoskrnl.exe!KxWaitForSpinLockAndAcquire
。これについては何も知りませんが、関数の名前から、デッドロック/競合の問題がある可能性があります。
システムが多く使用している他の関数には、、、、、およびが含まNETIO.SYS!FilterMatchEnum
れます。NETIO.SYS!MatchConditionOverlap
NETIO.SYS!IsFilterVisible
MpNWMon.sys!NetFlowUpendByCompletionHandle
sdk - Xperfview: CPU サンプリングと CPU 使用率の違いは何ですか?
この質問は、Windows Performance Toolkit の一部であるユーティリティ (Windows SDK 7.1 の一部) である xperf および xperfview に関するものです。
「スレッドごとの CPU サンプリング」と「スレッドごとの CPU 使用率」の 2 つのグラフを比較すると、いくつかの違いがわかりません。例として audiodg.exe を使用します。
Threads プルダウンでは、CPU Sampling チャートに audiodg のスレッドが 1 つだけあります。CPU 使用率チャートには、いくつかの audiodg スレッドが表示されます。
どちらのグラフにも「% 使用率」とマークされた Y 軸がありますが、測定値は異なります。通常、特定のスレッドの使用率は、CPU サンプリング グラフの方が CPU 使用率グラフよりも低くなります。
CPU Sampling の要約テーブルには、各モジュール/プロセスの重みと % の重みが表示されます。シンボルをロードすると、audiodg プロセスをかなり深く掘り下げることができます。CPU Scheduling Aggregate Summary テーブル (CPU 使用率グラフから起動) には、CPU 使用率と % CPU 使用率が表示されます -- 重みは使用できません。(逆に、CPU サンプリング サマリー テーブルには CPU 使用率はありません。) audiodg を深く掘り下げることはできません。メイン スレッドといくつかの ntdll.dll スレッドしか表示されません。
[% CPU 使用率] 列と [% 重み] 列のプロセスの数値は常に異なります。場合によっては、75% 以上異なることもあります。
だから私の質問...ここでのCPU使用率の信頼できる尺度は何ですか? CPU 使用率の数値は CPU サンプルから導き出されたものではありませんか? 数字は何らかの形で関連しているはずではありませんか?
windows - XPerfViewer と新しい Storport プロバイダー?
XPerfViewer (またはその他のツール) を使用して、新しい Storport プロバイダーからディスク遅延情報を解析する方法を知っている人はいますか?
次の記事を使用してトレースをキャプチャしました: http://blogs.msdn.com/b/ntdebugging/archive/2010/04/22/etw-storport.aspx
これにより、XPerfViewer が経時的にドットとしてプロットする .etl 形式の一連のイベントが得られますが、ディスク レイテンシのグラフを期待しています。レイテンシ情報はイベントにありますが、イベントを 1 つずつふるいにかける以外に、それを引き出して表示する良い方法がわかりません。
何か案は?
wpf - XPerf.exeを使用してWPFETWイベントを取得する
XPerf.exeにフィードしてWPFETWプロバイダー(Microsoft-Windows-WPF?a42c77db-874f-422e-9b44-6d89fe2bd3e5?E13B77A8-14B6-11DE)をロードするためのコマンドラインスイッチとパラメーターの正しい組み合わせがわかりません。 -8069-001B212B5009}?)、特定のイベント(WClientInputMessage)をリッスンします。
誰かがこれがどのように見えるべきかについて何か洞察を与えることができますか?ドキュメントの散在する断片(http://windowsclient.net/wpf/white-papers/event-tracing-wpf.aspxを含む)と不可解な「xperf-helpstart」テキストは知識の荒れ地のようです。
windows - perfmonパフォーマンスカウンターは、xperfが使用するETWイベントと「内部」で同じものに基づいていますか?
私は最近、perfmonとxperfに精通しています。Perfmonはパフォーマンスカウンターを使用し、xperfはETW(Windowsのイベントトレース)を使用します。Perfmonにはデータを提供するオブジェクトがありますが、xperfは「プロバイダー」のグループを使用します。この分野の初心者として、perfmonが使用するパフォーマンスカウンターが実際にxperfが使用するETWイベントと同じものに基づいているかどうかを誰かに教えてもらえないかと尋ねています。そうであれば、接続を明確にしてください。それらが同じものに基づいていない場合、それらがどのように異なるかを説明できますか?