Почему Perfview не отображает имя провайдера, название события и сообщение?

Мы создаем несколько файлов журнала etw для нашего приложения. Я использую Perfview для чтения файлов .etl. Иногда Perfview показывает события, подобные приведенному ниже снимку экрана. Он не показывает правильное имя поставщика/имя события и сообщение. Вместо этого я вижу GUID. Не могу понять, по какому сценарию это происходит. Я не могу подозревать источник события, потому что это происходит не со всеми файлами .etl. Скриншот


Файлы ETL, созданные с использованием того же сеанса с приведенной ниже конфигурацией MultiFileMB для создания нескольких разделенных файлов etl. Некоторые разделенные файлы показывают правильные данные, некоторые не такие, как показано на изображении ниже.

Session.MultiFileMB = 10;

Рабочие и поврежденные файлы etl

Я попытался сбросить поврежденные и неповрежденные события из Perfview. Правильные события имеют информацию <PrettyPrint>, а TemplateTypeDynamicTraceEventData, однако в поврежденных событиях я не получаю информацию <PrettyPrint>. Также TemplateType это UnhandledTraceEvent.

Дамп


person Amruth Raj.V    schedule 09.11.2019    source источник
comment
как вы поднимаете и фиксируете события?   -  person magicandre1981    schedule 09.11.2019
comment
@magicandre1981: У меня есть служба Windows, которая активирует сеанс etw. Для каждых 10 МБ мой сеанс будет создавать новый файл etl. Я вижу это поведение в некоторых файлах. Остальные файлы в норме...   -  person Amruth Raj.V    schedule 10.11.2019
comment
какую технологию вы используете для поднятия событий? Родной API? .net с TraceEvent?   -  person magicandre1981    schedule 10.11.2019
comment
@magicandre1981 Мы используем TraceEvent для вызова событий   -  person Amruth Raj.V    schedule 11.11.2019
comment
Итак, событие ManifestData отсутствует и не добавляется в файл ETL. вам нужно опубликовать более подробную информацию/код   -  person magicandre1981    schedule 11.11.2019
comment
@magicandre1981: Вы правы. Я не вижу данные манифеста для поврежденных файлов. Добавил еще несколько скриншотов в исходный пост. Я также попытался увеличить BufferSizeMB сеанса. Но это не помогло.   -  person Amruth Raj.V    schedule 12.11.2019
comment
что будет если увеличить размер файла? Возможно, файл достигает максимального предела файла, прежде чем он сможет сохранить событие манифеста.   -  person magicandre1981    schedule 12.11.2019
comment
@ magicandre1981 Пытался увеличить размер файла. Это не помогло.   -  person Amruth Raj.V    schedule 13.11.2019
comment
какой размер файла вы пробовали? Насколько велик буфер памяти? если вы открываете поврежденные файлы ETL в perfview, видите ли вы потерянные события в диалоговом окне TraceInfo?   -  person magicandre1981    schedule 13.11.2019
comment
@magicandre1981: Вместо 10 МБ я попробовал размер файла 25 МБ. Буфер памяти пробовал давать 1 Мб. По умолчанию это было 64 КБ. Я вижу, что количество потерянных событий равно 0. Это означает, что никакие события не потеряны. Я также заметил, что слияние со всеми этими разделенными файлами делает все поврежденные данные доступными для чтения. Если вы откроете объединенный файл в perfview, я смогу правильно увидеть все данные.   -  person Amruth Raj.V    schedule 14.11.2019
comment
это ожидается, так как perfview теперь имеет манифест и может декодировать события. Задайте это на github. Я думаю, что библиотека должна убедиться, что событие ManifestData должно быть включено во все ETL.   -  person magicandre1981    schedule 14.11.2019
comment
Задал тот же вопрос в GitHub github.com/microsoft/perfview/issues/1054# issue-523225168   -  person Amruth Raj.V    schedule 15.11.2019
comment
вы также должны добавить то, что мы обнаружили здесь в комментариях, что ETL пропускают событие манифеста.   -  person magicandre1981    schedule 15.11.2019
comment
@magicandre1981 Обновлен вопрос в GitHub с этой информацией.   -  person Amruth Raj.V    schedule 18.11.2019