c# - 起動時間 - xperf wpr




Windows Performance Analyzerを使用してEventSourceによって作成されたETWイベントをどのように表示しますか? (2)

EventSourceを使用してETWイベントを起動し、それらをWindows Performance Analyzerで表示します。

基本的なEventSourceます。

[EventSource(Name = "BasicEventSource")]
public class ETWLogger : EventSource
{
#if DEBUG
    private const bool ThrowOnError = true;
#else
    private const bool ThrowOnError = false;
#endif

    private ETWLogger(bool throwOnError) : base(throwOnError) { }

    private static ETWLogger _log;
    public static ETWLogger Log
    { get { return _log ?? (_log = new ETWLogger(ThrowOnError)); } }

    private static class Keywords
    {
        public const EventKeywords Perf = (EventKeywords) 1;
    }

    [Event(1, Keywords = Keywords.Perf, Level = EventLevel.Informational)]
    public void Startup() { WriteEvent(1, "StartUp"); }
}

Windows Performance Recorder(WPR)で記録しても、Windows Performance Analyzer(WPA)のGeneric Eventsグラフにプロバイダーまたはイベントが表示されません。

御時間ありがとうございます :)


WPRとWPAはEventSourceをサポートしていませんでしたが、新しい8.1 ADKでサポートしていました。 こちらをご覧here


WPRはあなたのカスタムEventSourceについて何も知りません、それであなたはそれを可能にすることができるようにあなたは記録プロファイルを作成しなければなりません。 WPTには、始めるのに役立つはずのサンプルプロファイルがいくつか付属しています。

WPRのバージョン8.1は、PerfViewと同じ命名規則をサポートしています。つまり、プロファイルのGUIDの代わりに*YourEventSourceを使用できます。

私の経験では、 EventSource機能のいくつかは8.1バージョンのWPAではうまくサポートされていません。 例えばあなたがタスクを使用すると、それらは正しく表示されません。 ただし、 EventSourceのレコーディングプロファイルを作成するときには、 EventSourceの基本的な使用法は8.1バージョンのWPA / WPRとうまく機能します。

もう1つのオプションは、PerfViewを使用してトレースを収集し、WPAを使用して分析することです(PerfViewよりも望ましい場合)。





wpa