Как вы просматриваете события ETW, созданные EventSource, с помощью анализатора производительности Windows?

Я хочу запускать события ETW с помощью EventSource и просматривать их с помощью анализатора производительности Windows.

У меня есть базовый 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 (WPR), я не вижу своего поставщика или события на графике общих событий анализатора производительности Windows (WPA).

Спасибо за ваше время :)


person Tristan    schedule 19.01.2013    source источник
comment
Как вы начали свою сессию? Это один из подходов, который мы использовали: svcperf.codeplex.com/< /а>   -  person Sajay    schedule 24.01.2013


Ответы (2)


WPR ничего не знает о вашем пользовательском EventSource, поэтому вам нужно создать профиль записи, чтобы вы могли включить его. WPT поставляется с парой примеров профилей, которые должны помочь вам начать работу.

Версия 8.1 WPR поддерживает то же соглашение об именах, что и PerfView, что означает, что вы можете использовать *YourEventSource вместо GUID в профиле.

По моему опыту, некоторые функции EventSource плохо поддерживаются в версии 8.1 WPA. Например. если вы используете задачи, они не будут отображаться правильно. Однако базовое использование EventSource хорошо работает с версией 8.1 WPA/WPR, когда вы создаете профиль записи для своего EventSource.

Другой вариант — собрать трассировку с помощью PerfView и проанализировать ее с помощью WPA (если вы предпочитаете это, а не PerfView).

person Brian Rasmussen    schedule 30.12.2013
comment
Я создал профиль и записываю события с помощью WPR. Все выглядит так, как я ожидаю, когда я открываю файл .etl в PerfView. Однако, когда я открываю файл .etl в WPA, я вижу руководство вместо имени источника событий и номеров вместо имен событий. Это ожидается? - person JonDrnek; 30.11.2016

WPR и WPA не поддерживают EventSource, но поддерживают новый ADK 8.1. См. здесь.

person Lars Truijens    schedule 30.12.2013
comment
Вэнс выпустил пользовательскую версию PerfView (sdrv.ms/QnHpd4), которая может собирать события EventSource, а затем для просмотра в WPA. Я подозреваю, что недавно выпущенная версия PerfView 1.5 также поддерживает это. blogs.msdn.com/b/vancem/archive/2013/12/09/ - person Keith Hill; 31.12.2013