Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Трассировка событий для Windows (ETW) — это инфраструктура трассировки на уровне ядра, встроенная в Windows, а трассировка ETL может включать сотни таблиц данных, охватывающих ЦП, память, диск, сеть, планирование, входные данные и другие системные действия. ETW MCP — это функция на стадии ранней предварительной версии, которая подключает данные трассировки ETW к GitHub Copilot или любому ИИ-помощнику с поддержкой MCP, позволяя читать, запрашивать и анализировать трассировки ETL на естественном языке точно так же, как это сделал бы опытный инженер. Пользовательский интерфейс не требуется.
ETW MCP — это локальный сервер протокола контекста модели (MCP) без графического интерфейса. Вместо потоковой передачи необработанных событий модели он предоставляет набор чётко определённых инструментов: обработать трассировку, вывести список доступных источников данных, запросить сведения об использовании ЦП, отфильтровать по процессу или диапазону времени, агрегировать данные, сравнить две трассировки, проследить критический путь и многое другое. Он использует тот же механизм .NET TraceProcessing, который лежит в основе Windows Анализатор производительности (WPA) и XPerf, поэтому данные, которые вы получаете от MCP, — это те же данные, что вы бы увидели в WPA, просто представленные в формате, удобном для обработки LLM.
ETW MCP — это дополнение без графического интерфейса к WPA MCP, которое обеспечивает те же возможности с поддержкой ИИ в Windows Анализатор производительности. Тот же слой данных, WPA не нужен, работает везде, где можно запустить Copilot или любого ИИ-помощника с поддержкой MCP.
Important
ETW MCP — это функция ранней предварительной версии. Поведение, доступность, поддерживаемые сценарии и взаимодействие с пользователем могут измениться до общедоступной доступности.
Краткая шпаргалка по акронимам
Прежде чем идти дальше, вот несколько акронимов вы увидите на протяжении всего:
- ETW — трассировка событий для Windows, инфраструктура трассировки на уровне ядра, встроенная в Windows.
- ETL — двоичный файл трассировки (etl), который выдает ETW.
- WPA — Windows Анализатор производительности, пользовательский интерфейс для изучения трассировок ETL.
- WPR / XPerf — средства записи, которые создают трассировки ETL.
- MCP — протокол контекста модели, открытый стандарт, позволяющий помощникам ИИ вызывать такие инструменты. "MCP" также часто используется для ссылки на сервер MCP.
Текущая поддержка
Текущий выпуск раннего предварительного просмотра поставляется в виде пакета NuGet Microsoft.Windows. EventTracing.MCP, опубликованный в NuGet.org. Он работает с GitHub Copilot и любым клиентом с поддержкой MCP (VS Code, GitHub Copilot CLI и другими).
Скоро станет доступно размещение в GitHub MCP Registry в один клик. До тех пор добавление небольшого блока конфигурации в файл конфигурации клиента MCP является поддерживаемым путем.
Почему используйте ETW MCP?
Анализ производительности в Windows требует специальных знаний. Если вы уже знаете, какая таблица WPA отвечает на ваш вопрос, вы быстро перемещаеесь. Если нет, вы можете потратить целый час на изучение инструмента, прежде чем вообще что-то узнаете о своей трассировке.
ETW MCP помогает снизить эту сложность, позволяя вам:
- Начните анализ с вопроса на естественном языке вместо имени таблицы.
- Анализируйте папку с трассировками в фоновом режиме и расставляйте их по приоритету ещё до открытия.
- Сравните базовые показатели с пробным запуском и попросите самые большие разностные значения.
- Получение данных на уровне функции модуля!на горячих стеках при настройке символов.
- Автоматизируйте повторяющиеся проверки, применяя один и тот же запрос к множеству трассировок, в CI или в скрипте.
И поскольку эта система безголовая, она поддерживает композицию. Его можно запустить из Терминал Windows, встроить в агентный рабочий процесс или вызывать его из собственных инструментов вместе с другими серверами MCP.
Для кого это
- Инженеры-программисты ищут причину регрессии или медленного запуска.
- Разработчики драйверов и инженеры по аппаратному обеспечению, анализирующие энергопотребление, подтормаживания или нагрузку на ЦП со стороны драйвера.
- Для специалистов по анализу производительности, которые уже постоянно работают в WPA и хотят быстрее приступить к работе.
- Команды, использующие пакетные проверки производительности и желающие, чтобы анализ трасс был встроен в их пайплайны.
- Любой, у кого на столе лежит файл .etl и кто не знает, с чего начать.
Необходимые условия
Прежде чем начать, убедитесь, что у вас есть:
- Устройство с Windows.
- SDK .NET 10 (требуется для
dnx, который запускает сервер MCP). - Клиент с поддержкой MCP, например VS Code или GitHub Copilot CLI, с активной подпиской GitHub Copilot.
- Файл трассировки (.etl) для анализа.
Note
Точные требования к настройке могут отличаться в течение периода раннего предварительного просмотра. Следуйте примечаниям к предварительному выпуску или инструкциям по начальной настройке, прилагаемым к вашей сборке.
Установите MCP ETW
Добавьте сервер ETW в файл конфигурации MCP клиента (VS Code, GitHub Copilot CLI или любой клиент с поддержкой MCP) и перезапустите клиент.
{
"servers": {
"ETW": {
"type": "stdio",
"command": "dnx",
"args": [
"Microsoft.Windows.EventTracing.MCP",
"--yes"
]
}
}
}
Note
dnxтребуется пакет SDK .NET 10. Если клиент запускается из папки, в которой global.json фиксирует более старую версию SDK, dnx не будет обнаружен. Самое простое решение — запустить MCP из папки, которая не содержит global.json (или из папки, в которой допускается использование .NET 10).
Note
dnx восстанавливает пакет, запрашивая каждый источник NuGet в файле NuGet.Config на вашем компьютере. Если один из них является частным источником или источником, требующим аутентификации (например, каналом Azure DevOps pkgs.dev.azure.com), неинтерактивное восстановление может завершиться ошибкой учетных данных или ошибкой «не удается загрузить индекс службы», даже если сам пакет находится на NuGet.org. Если вы столкнулись с этим, добавьте аргумент --source в указанную выше конфигурацию, указав источник, разрешенный в вашей организации, например --source https://api.nuget.org/v3/index.json для NuGet.org или утвержденное внутреннее зеркало вашей компании. В качестве альтернативы пройдите аутентификацию в неработающей ленте или временно отключите её с помощью dotnet nuget disable source.
Примеры подсказок
Самый быстрый способ понять, что умеет ETW MCP, — посмотреть реальные примеры запросов. Основной рабочий процесс — это процесс → изучения → запроса, который обычно начинается с одного открытого вопроса. До каждого следующего вопроса — всего один запрос.
| Scenario | Пример запроса |
|---|---|
| Список трассировок | Open <trace>.etl and tell me what processes were running. |
| Использование ЦП | Show me the top CPU consumers in this trace. |
| Сравнение A/B | Process both <baseline>.etl and <trial>.etl and compare CPU usage for <process>. |
| Регионы + критический путь | Process <trace>.etl with <regions>.xml and show the end-to-end timeline, then run CPA on the biggest bottleneck. |
| Причины переключения контекста | Show me the context switch wait reasons for <process>. |
| Жизненный цикл процесса | Show me the process lifecycle timeline for <process>. |
| Фокус на временном окне | Focus on <t0> to <t1> and tell me what dominated CPU and what threads were waiting on. |
| Пакетное ранжирование | Open every .etl in <folder>, find <region> in each, and rank them by duration. |
Для A/B-сравнения обработайте две трассы и задайте один вопрос, чтобы получить разницу, например: «Целевой процесс использует примерно на 57 % больше процессорного времени, но в системе на 36 % меньше переключений контекста». В демонстрационном сценарии передайте MCP XML-файл Regions (именованные интервалы времени, определяемые событиями ETW), попросите его разобрать реальный сквозной сценарий, а затем углубиться в самый медленный интервал с помощью анализа критического пути — и всё это в одном запросе.
Проверка результатов Copilot
MCP служит уровнем контекста и извлечения данных, привязывая ответы к реальным данным ETW, однако логические выводы на основе этих данных по-прежнему выполняются большой языковой моделью (LLM). Ответы могут отличаться между запусками. Считайте анализ Copilot отправной точкой, подготовленной помощником, а не окончательным диагнозом.
При использовании ETW MCP:
- Проверьте результаты по базовым данным трассировки.
- Просмотрите таблицы, графы, диапазоны времени и стеки вызовов, на которые ссылается анализ.
- Используйте последующие запросы для получения вспомогательных доказательств. Поскольку каждое утверждение модели подкреплено вызовом инструмента к трассировке, запрос «покажи мне доказательства» всегда является корректным последующим запросом.
- Подтвердите выводы перед принятием решений по проектированию, продукту или выпуску.
Important
Анализ, созданный LLM, может быть неполным или неправильным. Перед выполнением действий всегда проверяйте важные выводы в отношении трассировки.
Известные ограничения в ранней предварительной версии
- Это ранний внешний выпуск, и возможности по-прежнему расширяются.
- Требуется клиент с поддержкой MCP с активной подпиской GitHub Copilot.
- Ответы могут различаться в зависимости от характера LLM.
- Для некоторых анализов может потребоваться выполнение дальнейших запросов, чтобы сузить диапазон времени, процесс, поток или подсистему.
- Поведение функций и доступные средства могут изменяться в период раннего предварительного просмотра.
Troubleshooting
| Проблема | Что требуется проверить |
|---|---|
| Сервер MCP не запускается | Убедитесь, что пакет SDK .NET 10 установлен и что dnx распознаётся из папки без конфликтующего файла global.json. |
| Восстановление пакета завершается сбоем | Если частный источник пакетов NuGet или источник, требующий аутентификации, блокирует восстановление пакетов, добавьте аргумент --source, указывающий на разрешённый источник, либо пройдите аутентификацию для проблемного источника или отключите его. |
| Copilot не отвечает | Убедитесь, что сервер ETW указан в конфигурации MCP, клиент был перезапущен и Copilot подписка активна. |
| Ответ слишком широк | Задайте более конкретный вопрос, включающий симптом, диапазон времени, процесс или подсистему. |
| Ответ кажется неверным | Проверьте результат, сопоставив его с трассировкой, и попросите Copilot предоставить данные или подтверждения, на которых основан вывод. |
ETW MCP и WPA MCP: какой из них используется?
Оба используют один и тот же уровень данных, а анализ, который они производят, в значительной степени одинаковы. Разница заключается в том, где они выполняются:
- ETW MCP работает без графического интерфейса. Окно WPA не требуется. Оптимально подходит для рабочих процессов с управлением через терминал, пакетного анализа, CI-конвейеров, IDE, таких как VS Code, а также везде, где нужно автоматизировать анализ трассировки с помощью скриптов.
- WPA MCP работает внутри WPA и выполняет логический вывод по обработанным таблицам. Лучше всего, если вы хотите, чтобы результаты ИИ, связанные с графами и таблицами, можно увидеть в пользовательском интерфейсе.
Используйте ETW MCP при расследовании. Используйте WPA MCP, если вы хотите получить результаты с помощью компаньона ИИ. Используйте оба случая, когда вы хотите сделать одно, а затем другое.
Обнаружена ошибка? Есть отзывы?
Это ранний внешний выпуск, и мы хотим услышать от вас. Сообщайте о проблемах, ошибках и запросах на новые функции в репозитории microsoft/eventtracing-processing на GitHub — там же отслеживаются пакеты NuGet Microsoft.Windows.EventTracing.*, на которых построен MCP.
Мы особенно заинтересованы в том, чтобы:
- Промпты, которые сработали неожиданно хорошо (или неожиданно плохо).
- Сценарии, которые, как вы хотите, MCP понимал по умолчанию.
- Размеры и формы трасс, которые создают нагрузку на сервер MCP.
- Места, где MCP должен предоставлять больше подтверждающих данных.