Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
События ядра операционной системы Windows 7, часть 1
Доктор.Insung парк и Алекс Bendetovers
Современные программного обеспечения постоянно прерывает новый увольнения. Приложений-потребителей программного обеспечения предлагают сложные набор функций, включение новых мультимедиа. Мощных серверных приложений установка новых записей в пропускной способности и скорости масштаб. Эти усовершенствования были внесены возможных по быстрой выполняется в технологии оборудования и непрерывной внедрение программного обеспечения усовершенствования в оптимизации, виртуализации и распределенных и параллельных вычислений. Однако в результате приложения становится больше и сложнее. В то же время пользователейОжиданий о качества программного обеспечения являются выше, чем когда-нибудь. Основные характеристики такие как производительность, надежность и управляемость доказало важные в долгосрочного успеха программных продуктов, и они часто celebrated как основной функции.
Увеличение сложности программного обеспечения и выше ожиданиям пользователя на качество таким образом представлять трудной задачей разработки программного обеспечения. При возникновении непредвиденные проблемы Прогнозирование внутреннего состояния всех соответствующих компонентов невозможна почти. Retracing журнал выполнения потоков является громоздким и сложным но часто необходимо узнать причину проблем программного обеспечения. Пользователи отчета проблем после развертывания, ожидаемого на основную причину проблемы быстро идентифицировать и устранить. Огромный число сочетания оборудования и программного обеспечения, характеристики различных рабочей нагрузки и шаблоны использования конечным пользователям сделать такие задачи, даже tougher. Возможность использовать механизм, который позволяет понять выполнение системы прозрачным образом, с минимальными издержками является неоценимым.
События инструментирования
Инструментарий — один такие эффективное решение в измерение и повышение качества программного обеспечения. Счетчики производительности программного обеспечения предоставили удобный способ отслеживания приложения выполнения состояния и использования ресурсов статистические уровне. События инструментирования также был популярных лет. События, вызываемые компонентом программного обеспечения на разных этапах выполнения может значительно сократить время, необходимое для диагностики различных проблем. Помимо сканирования для определенных событий или узоры события, один можно применить данных интеллектуального анализа данных и корреляции методы для дальнейшего анализа событий для получения статистики и отчеты на выполнение программы и проблемных поведение. Возможность сбора событий на производственных системах в режиме реального времени помогает избежать необходимости иметь установки громоздкими отладчик на компьютерах клиентов.
Введена в операционной системе Windows 2000 событий трассировки для Windows (ETW) — это универсальный платформа отслеживания событий в операционных системах Windows. Используя эффективные буферизации и механизма ведения реализованы в ядро, ETW предоставляет механизм для сохранения события, вызываемые приложений пользовательского режима и драйверы устройства режима ядра. Кроме того ETW дает пользователям возможность включать и отключать ведение журнала динамически, делая легко выполнять подробные трассировки в производственных средах без необходимости перезагрузки или приложение перезапускается.
Сама операционная система сильно инструментирования с события ETW. Для анализа и имитировать действия ОС основных, основанные на событиях ETW в разработке, а также в системах производства режим наложено ценными для разработчиков в многих проблем качества. С каждым выпуском Windows последующих увеличилось количество ETW событий, вызванных операционной системой;Windows 7 — это наиболее инструментированного операционная система на дату. Кроме того Windows 7 содержит средства, можно использовать эти события ETW операционной системы анализа производительности системы и надежность, а также Открывание проблем качества приложений.
Многие приложения проблемы возникают как аномалий использования ресурсов ОС, например непредвиденная шаблонов или пики в потреблении ПРОЦЕССОРА, памяти, пропускной способности сети операций и т. д. Поскольку события ОС для большинства действий системы может быть отслежена исходного процесса и потока, один может сделать значительное выполняется в сужающие вниз возможных причин многих проблем приложений, даже без ETW инструментирования в приложениях. Конечно инструментарий ETW в приложении позволит дальнейшие диагностики значительно более эффективно.
В первой статье нашей серии двух частей мы представляем высокоуровневый обзор технологии ETW и ядро ОС инструментирования. Затем мы обсудим поддержки средств для получения и приема событий операционной системы. Далее мы содержат дополнительные сведения о событиях из различных компонентов в ядре операционной системы. Мы также объясняется, как различных системных событий могут быть объединены для создания детальную картину поведение системы, мы демонстрации с помощью набора сценариев Windows PowerShell.
Трассировка событий для Windows
Как упоминалось ранее, ETW — платформа ведения журнала, эффективно записывает события, отправляемые программных приложений или компонентов в режиме ядра. С помощью ETW поставщика API, любое приложение DLL или драйвер может стать поставщика событий (компонент вызывает события) для ETW. Поставщик сначала регистрирует события ETW и отправляет в различных точках кода вставив ETW, ведение журнала вызовов API. Любые записываемые действия важности может быть событие и представляется часть данных, написанное ETW во время ведения журнала. Эти вызовы API регистрации игнорируются, когда поставщик не включена. Приложение контроллер ETW начинается сеанс ETW и позволяет некоторым поставщикам. Когда поставщик событий включен делает ведение журнала вызова API, событие направляются сеанса, назначенному с помощью контроллера. События будут отправлены в сеансе могут храниться в файле журнала программным способом потребляться в режиме реального времени или храниться в памяти, пока контроллер запрашивает сброс данных в файл. Предыдущую статью «Улучшения отладки И производительности настройки с ETW»(msdn.microsoft.com/en-us/magazine/dvdarchive/cc163437.aspx) содержит дополнительные сведения о технологии ETW и как добавить инструментирование ETW в приложение. С годами ETW пришло поддерживает много режимов различных ведения журнала и возможности, которые описаны в MSDN.
События ETW состоит из основного заголовка следуют контекста данных. Заголовок определяет события и компонент, инициирующий событие при данных для определенного контекста "(полезных событий"hereafter) ссылается на любых дополнительных данных, компонент, создающий событие для записи. При записи событий, вызванных поставщика сеанс ETW ETW добавляет дополнительные метаданные в заголовке, включая потоков и процессов идентификаторы, текущий ЦП, на котором выполняется поток ведения журнала, время ЦП потока и штамп времени. На рисунке 1 показано XML-представление события (события процесса типа Пуск), как расшифрованный с помощью средства tracerpt (чтобы будет рассмотрен далее) в файле дампа XML. ≪ системы >раздел является общим для всех событий и представляет общий заголовок, ETW записей для каждого события. Содержит штамп времени, идентификатор процесса и потока, поставщик GUID, время ЦП, ЦП код и т.д. ≪ EventData >раздел отображает журнал полезных данных этого события. Как показано на рис. 1 процесс Пуск события из ядра Windows содержит ключ процесса (уникальный ключ присвоено каждому процессу для идентификации), обработать идентификатор, идентификатор родительского процесса, идентификатор сеанса, выйти из состояния (применяется только для событий завершить процесс), SID пользователя, имя исполняемого файла процесса и команды, запустившего процесс.
Контроллеры ETW являются приложения, использующие элемент управления ETW API устанавливать запуск сеансов трассировки событий Windows и включить один или несколько поставщикам сеансы. Им необходимо присвоить уникальное имя каждого сеанса и на Windows 7 может быть до 64 сеансов, выполняемых одновременно.
Рисунок 1 события начала процесса в XML дампа
<Event xmlns="https://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Guid="{9e814aad-3204-11d2-9a82-006008a86939}" />
<EventID>0</EventID>
<Version>3</Version>
<Level>0</Level>
<Task>0</Task>
<Opcode>1</Opcode>
<Keywords>0x0</Keywords>
<TimeCreated SystemTime="2009-07-14T16:27:43.441456400Z" />
<Correlation ActivityID="
{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessID="2584" ThreadID="4324"
ProcessorID="1" KernelTime="90" UserTime="15" />
<Channel />
<Computer />
</System>
<EventData>
<Data Name="UniqueProcessKey">0xFFFFFA8005BBC950</Data>
<Data Name="ProcessId">0x1430</Data>
<Data Name="ParentId">0xA18</Data>
<Data Name="SessionId"> 1</Data>
<Data Name="ExitStatus">259</Data>
<Data Name="DirectoryTableBase">0x4E1D6000</Data>
<Data Name="UserSID">guest</Data>
<Data Name="ImageFileName">notepad.exe</Data>
<Data Name="CommandLine">notepad</Data>
</EventData>
<RenderingInfo Culture="en-US">
<Opcode>Start</Opcode>
<Provider>MSNT_SystemTrace</Provider>
<EventName xmlns=
"https://schemas.microsoft.com/win/2004/08/events/trace">
Process</EventName>
</RenderingInfo>
<ExtendedTracingInfo xmlns=
"https://schemas.microsoft.com/win/2004/08/events/trace">
<EventGuid>{3d6fa8d0-fe05-11d0-9dda-00c04fd7ba7c}</EventGuid>
</ExtendedTracingInfo>
</Event>
Однако события из системных компонентов ядра и ядро регистрируются в способом отличается от приложений пользовательского режима или режима ядра драйверов устройств. Ядра системы записывает события специальный сеанс с зарезервированным именем «Журнал ядра NT». Только "NT ядра журнала»сеанс "(сеанс ядра"hereafter) получает основные системные события и не принимает события из другого поставщика регулярные события. Кроме того основные события ОС включены, указав соответствующие флаги, при запуске сеанса. Каждый флаг представляет событий инструментария в компоненте разные ядра, который может быть выборочно включено. Это помогает сократить издержки инструментария в ядре и усиливает подлинность системные события. Кроме того новая функция в Windows 7 позволяет пользователям записывать стеки вызова во время ведения журнала. Если символы доступны, один может отслеживать цепочку вызовов функций, которые запускают регистрируемых событий ядра. Преимущество из анализа стека вызовов будут обсуждаться в последующих разделах, когда мы обсудим отдельные события более подробно.
Сбор событий, использование средств в Windows
Доступно несколько средств управления ETW в Windows, позволяющие пользователям собирать события. Например монитор производительности предоставляет ETW управления в форме набора данных коллекции. Служба EventLog способен также запуск и остановка сеансов трассировки событий Windows, а также просмотр событий. Для командной строки и интерфейсы сценария, logman.exe предоставляет параметры для выполнения операций управления ETW. Для потребления события tracerpt.exe средство командной строки может использовать файлы журнала трассировки событий Windows и создания дампов в нескольких форматах, включая CSV и XML. На рис. 1 показан пример XML-представление события начать процесс. В этой статье мы используем logman.exe и tracerpt.exe Примеры мы представления. Команда «logman query providers» в рис. 2 перечисляет различные флаги, которые могут использоваться с помощью контроллера при включении сеанса ядра.
Следующая команда запускает сеанс ядра и процесс, поток, диск, сетей, изображения и событий реестра. Собранные события будут храниться в файле с именем systemevents.etl в текущем каталоге. Управления сеансом ядра и сбора событий ядра ОС требуются права администратора:
> logman start "NT Kernel Logger" –p "Windows Kernel Trace" (process,thread,img,disk,net,registry) –o systemevents.etl –ets
Чтобы остановить коллекции, пользователям необходимо выдать команду «logman stop -ets»:
> logman stop "NT Kernel Logger" –ets
Программа tracerpt может обрабатывать события в файле журнала в читаемый формат. По умолчанию tracerpt принимает один или несколько файлов журнала и создает выходной файл событий и файл сводки. Форматом по умолчанию выходной файл является XML:
> tracerpt systemevents.etl
Logman и tracerpt помогают текст справки и поддержки и документации имеют дополнительные сведения о командной строки и возможности этих средств.
Дополнительные средства анализа производительности, использующие основные события ОС для различных анализа и настройки сценариев. нанабор средств средств средств производительности Windows (WPT) является одним из таких заметных средств и доступны из SDK для Windows (msdn.microsoft.com/en-us/performance/cc825801.aspx). WPT полезен для широкой аудитории, включая сборщики, производители оборудования, разработчиков драйверов и общие разработчикам. Его анализа трассировки, средства, Xperf и XperfView, применять сложные технологии (включая представленные здесь) статистической обработки и анализа событий ядра ОС предложить смысл перспективы в ОС и поведение приложения. Гибкие ГРАФИЧЕСКОГО предоставляет многие параметры богатый и настраиваемые представления, может помочь пользователям сосредоточиться на различные аспекты действий системы. На рисунке 3 показан снимок экрана: средство XperfView в действии.
События ядра ОС
Ядро ОС Windows имеет множество компонентов, инструментирование ETW. Как показано на рис. 2 событий, доступных для действий, объединение различных подсистемы, включая процессы, потоки, дисками и файлами операций, память, сети, реестра и т. д. В этом разделе содержатся сведения для каждой группы событий. Также мы рассмотрим ряд основных понятий операционной системы. Дополнительные сведения об этих понятий можно найти в ориентированных ОС справочные материалы такие как «Внутренние компоненты Windows, 5-й Edition»Russinovitch, Соломоновы и Ionescu (Microsoft Press, 2009 г.). Основные события ОС являются согласно измениться в будущих версиях Windows, как платформы и его инструментирование развития для удовлетворения новых потребностей.
Существует несколько способов сделать использование данных события. Один может поиск определенных событий, например событие ошибки или шаблон события, которые представляют потока выполнения. Другие популярные методологии включают статистического анализа (инвентаризации и summarizing события), дельта анализа (анализа различий между парами события, такие как запуск и завершение), анализ деятельности (отслеживания активности и запрос через корреляции событий) и статистической обработки и шаблон анализ зависимости стеков вызовов. С годами мы нашли его эффективного создания конечного автомата и имитировать операций ОС, когда мы рассмотрим основные системные события. Когда мы объяснить системного событий в этом разделе, мы также опишем, как использовать их в создании конечного автомата.
Процесс, поток, изображения, события счетчиков процесса
Поток является основной единицей процесса исполнения в операционной системе Windows и процесс действует как контейнер для потоков. Каждый процесс (и поток) присваивается идентификатор, который является уникальным во время его выполнения. Идентификаторы процессов и потоков совместно используют пространство же число. То при активном поток с КОДОМ A A никогда не присваивается других процессах или потоках. Единственным исключением является свободных потоков на ЦП и процесс простоя, идентификаторы которых все идентичны и были исторически 0. Процесс и поток события являются основные конструктивные блоки в установлении автомат, полезно в понимании дополнительных действий системы. Существует два типа событий для событий процесса и потока: Начало и конец. Процесс начала и окончания регистрируются при запуске процесса и завершается, соответственно. Таким же относится к поток начало и конец события. Полезные данные для событий процесса имеет дополнительные сведения о процессе, например имя и родительский процесс идентификатор процесса, как показано на рис. 1. Аналогично полезных данных потока событий содержит сведения о конкретного потока, таких как базовый стек предел и начальный адрес. Следует отметить идентификаторов начала процессов или потоков являются частью события полезная процесса и потока хотя заголовок события уже имеет эти элементы в нем. Процесс начала события записываются в контексте родительского процесса, который создает текущего процесса. В этом случае идентификатор процесса в системе < >раздел (заголовок события) — это родительский процесс. Процесс с КОДОМ в полезных данных является одним создаваемого события. Таким же относится к идентификатор потока в поток событий.
Для процессов и потоков, запускается перед сбора событий ETW регистрирует состояние rundown. В целях проведения анализа они используются для обозначения запущенных процессов и потоков во время начала сбора событий. ETW также регистрирует rundown для оставшихся процессов и потоков, выполняющихся при завершении коллекции. Процесс и поток rundown события перечисления и журнал событий в формате процесс и поток главного события для всех процессов и потоков, включая системные и простоя процессов. Процесс и поток событий rundowns используют различные типы DCStart и DCEnd, сами отличить от реального процесса создания потока и прекращения. Отдельное уничтоженные событие записывается для процесса, был завершен, но с невыполненные ссылки на него.
Каждый процесс и поток, активных во время сбора событий отслеживаются с помощью событий процессов и потоков. При построении конечного автомата процедуры обработки должны вести список активных процессов и потоков, возможно как некоторые тип объектов в программе. При прерывании потока или процесса соответствующий объект может быть помещен в отдельный список («завершено»). Объекты процесс также может содержать дополнительные сведения (такие как имя процесса) о процессов или потоков, которые они ссылаются, взял из полезных данных событий процессов и потоков. Это проще и гораздо более информативным, если один ссылаются на процедуру по имени во время анализа, а не по ИДЕНТИФИКАТОРУ, как коды могут быть перезапущен после завершает процесс или поток (и освобождаются все ссылки на него). Когда события из других компонентов ядра указывают действия операционной системы во время конструирования состояние компьютера и моделирования, потоки и процессы, инициируемые их расположены в конечный автомат и их объекты обновляются для атрибута этих действий, в основном идентификаторы процессов и потоков заголовков события. В конце процесса и потока объекты статистически и суммироваться в отчет с различных метрик.
События изображения соответствуют файлы изображений (также известный как модуль), получение загружается и выгружается в адресного пространства. Существует четыре типа событий изображения: Загрузка, выгрузка, DCStart и DCEnd. Эти события выполните не напрямую сопоставления вызовов LoadLibrary однако. Если DLL уже загружена в процесс, последующие вызовы функции LoadLibrary для одной DLL просто выполнить приращение счетчика ссылок модуля, но не будет сопоставление модуля снова. Подобно DCStart и DCEnd типам событий процессов и потоков DCStart изображения и DCEnd используются для перечисления загруженные модули уже выполняющихся процессов. События изображения позволяют для отслеживания загруженные модули и сопоставления адресов внутри процесса. Они также важны в сопоставление DPC, ISR и системных вызовов события, как будет рассказано в следующем разделе и в части 2 этой серии. Полезные данные событий изображение содержит сведения, такие как базовый адрес модуля и размер и имя двоичного файла загрузки (или выгружена). Изображение события необходимы также для декодирования стеков вызовов. В конструкции компьютера обычно состояние события изображения триггер обновления список загруженных модулей в объект вышеупомянутый процесс.
Обработать события счетчиков, когда включена, регистрируются на завершение процесса и запись в его полезных данных несколько свойств, касающихся статистики выполнения процесса над временем жизни процесса. Они состоят из максимальный размер памяти, пиковый размер рабочего набора, пиковые выгружаемого и использование невыгружаемого пула и активного использования файла страницы. Эти события указывают работает процесс относительно использования памяти. Как обрабатывать события отдельных rundown счетчик процессов события регистрируются для всех активных процессов в конце сбора событий.
Рис. 2 Включить журнал ядра NT флаги
>
logman query providers "Windows Kernel Trace"
Provider GUID
------------------------------------------------------------------------
Windows Kernel Trace {9E814AAD-3204-11D2-9A82-006008A86939}
Value Keyword Description
------------------------------------------------------------------------
0x0000000000000001 process Process creations/deletions
0x0000000000000002 thread Thread creations/deletions
0x0000000000000004 img Image load
0x0000000000000008 proccntr Process counters
0x0000000000000010 cswitch Context switches
0x0000000000000020 dpc Deferred procedure calls
0x0000000000000040 isr Interrupts
0x0000000000000080 syscall System calls
0x0000000000000100 disk Disk IO
0x0000000000000200 file File details
0x0000000000000400 diskinit Disk IO entry
0x0000000000000800 dispatcher Dispatcher operations
0x0000000000001000 pf Page faults
0x0000000000002000 hf Hard page faults
0x0000000000004000 virtalloc Virtual memory allocations
0x0000000000010000 net Network TCP/IP
0x0000000000020000 registry Registry details
0x0000000000100000 alpc ALPC
0x0000000000200000 splitio Split IO
0x0000000000800000 driver Driver delays
0x0000000001000000 profile Sample based profiling
0x0000000002000000 fileiocompletion File IO completion
0x0000000004000000 fileio File IO
The command completed successfully.
Переключение контекста, DPC и ISR события
Каждый раз переключений потоков возникнуть на ЦПУ и могут быть использованы для создания очень точные журнал на выполнение которых потоков и как долго записываются события переключение контекста. Они происходят очень часто и создают большой объем данных. В каждом ключе участвуют два потока. Старый поток будет освободить свою долю времени выполнения и вручную выполнение нового потока. Таким образом переключение контекста события содержит старый и новый поток идентификаторы, старый и новый приоритеты потоков, подождите причина и время ожидания. Переключений контекста может произойти по различным причинам, включая блокировки объектов синхронизации ядра (события, таймеров, семафоры и т. д.), preemption, поток с высоким приоритетом такта срока действия и изменения в сходство потоков. Всегда ожидаются определенное количество переключений контекста. Однако чрезмерное контекстное переключение может быть соотносятся неэффективное использование примитивов синхронизации и может привести к плохой масштабирование производительности. Включение стеки вызова для событий, контекстное переключение позволяет глубокого анализа причин для потоков, получение отключается.
Отложенное вызова процедур (DPC) события регистрируются при выполнении DPC. DPC — это функция режима ядра, выполняются в режиме с повышенными правами уровень прерывания выполнения и выгружает выполнение обычного потока. Полезная нагрузка события DPC включает запись времени DPC и обычные адреса. Прерывание Service Routine (ISR) — механизм, аналогичный и выполняется на высоком уровне исполнения, чем DPC. События ISR имеют ISR запись времени, обычные адреса, вектор ISR и ISR возвращаемое значение. DPC и ISR механизмы являются важных элементов в драйвере Windows, как они обычно используются для обработки аппаратных прерываний. Драйверы и компонентам режима ядра имеют право использовать DPC и ISR, но настоятельно рекомендуется их потратить немного времени возможного в этих режимах с повышенными правами. DPC и ISR события используются для отслеживания и проверить поведение различных драйверами и компонентами режима ядра. Сравнивая обычные адреса сведений о диапазон событий изображения, один можно найти компонент ядра, отвечающий за эти DPC и ISR события.
В конструкции состояние компьютера объединение события контекстное переключение, DPC и ISR позволяет очень точные учета процессора. Установив сторону хранилища для каждого процессора записей его текущего активного потока на основе контекстное переключение, DPC и ISR событий, один может отслеживать--указанный любой timestamp--в это время действия каждого ЦП и, код которой его выполнение. В методе моделирования компьютера состояние после переключения контекста занимает место, ЦП объект обновляется с новый идентификатор потока и поэтому является объектом для старых потока с ЦП до параметра. Аналогично DPC и ISR события являются атрибутами соответствующие компоненты режима ядра, при необходимости.
В некоторых случаях такие как с событиями ввода-ВЫВОДА, памяти или системных вызовов ETW не записи процесса или потока идентификаторов в заголовке события, главным образом сократить издержки очень часто события. Для таких событий значения идентификаторов потоков и процессов в заголовке отображается как 0xFFFFFFFF (= 4294967295). Если контекстное переключение, DPC и ISR события отслеживаются, как описано выше, эти события может быть отслежена компоненту потока или режиме ядра, просмотрев объект ПРОЦЕССОРА для текущего выполняемого потока или DPC/ISR.
События памяти
События памяти указывают операций (MM) диспетчер памяти. Windows предлагает странице события, события жесткого странице памяти и виртуальной памяти события. События памяти стремятся быть очень часто, особенно в системе, занят.
Ошибка страницы происходит, когда недопустимый элемента таблицы страниц искомое вышел. Если запрошенная страница должна быть переведена режим с диска, он вызывается жесткого страничный (очень затратной операцией) и все остальные типы считаются мягкой страницы ошибок (дешевле операции). Полезная нагрузка события страница содержит адрес виртуальной памяти для которой произошло сбоя страницы и указатель инструкции, вызвавшей ее. Ошибкой страницы физической памяти требуется диск доступ к возникают, которые могут быть первый доступ к содержимому в файле или доступ к памяти блоки, которые были выгружены. Включение странице событий приводит к жесткого страничный входить как ошибка страницы с типом жесткого страниц памяти. Однако жесткого проблемы у значительно большее влияние обычно на производительность, поэтому отдельное событие доступно только для жесткого проблем, которые могут быть включены независимо. Полезные данные событий постоянных ошибок имеет дополнительные данные, например файл ключа, смещение и поток код по сравнению с странице событий.
Виртуальная память события состоят из распределения виртуальной памяти и виртуальной памяти свободных типов и соответствующие вызовы мм выделить и освободить диапазоны виртуальной памяти. Их полезных данных содержит идентификатор процесса, базовый адрес, предварительной оценкой по завершении запрошенный размер и флаги, используемые в вызов API. События виртуальной памяти были вновь добавлены для Windows 7 и полезны для отслеживания работы утечки вызовы функцию VirtualAlloc и использования виртуальной памяти приложениями.
Заголовки события памяти не содержат идентификаторы потоков и процессов, вызвавшего определенного действия. Полезные данные событий странице, однако имеет идентификатор потока потока, вызывая сбой. Это позволяет корреляции странице события для потоков и процессов до конечного автомата. Полезная нагрузка события виртуальной памяти содержит идентификатор процесса, для которой были выполнены операции виртуальной памяти. Чтобы отслеживать его к потоку, вызов API, необходимо переключения контекста учета, описанного в предыдущем разделе разделе.
Следующее время
Windows 7 возможности сотни поставщики событий в различных компонентах. В первой части этой серии статей двух частей мы предоставили некоторые ядро ОС ETW события, доступные на Windows 7 и методы анализа, мы использовали в течение многих лет. Отдельные события указывают определенные действия в ядре ОС но при объединении посредством методов анализа контекстной они могут использоваться для создания значимых отчетов, предоставляющих советам в шаблоны и аномалий в использовании ресурсов. В часть 2, мы планируем охватывают другие основные события ETW ОС, а также присутствует простой сценариев для демонстрации несколько основных методов учета на некоторых событий операционной системы, представленных в этих двух частей. Надеемся, что многие люди будут использовать преимущества содержимого, представленные здесь и приведет к продвижение звуковой практика проектирования, больше качества программного обеспечения и улучшения взаимодействия с пользователем.
Доктор. Insung парк является руководителем разработки по инструментарию и группа платформы диагностики. Он опубликовал документы десяток анализа производительности, отслеживание запроса, технологии инструментальных средств и программирования методологии и поддержки. Его адрес электронной почты является insungp@microsoft.com.
Алекс Bendetov — Руководитель разработки для инструментарию и группа платформы диагностики. Он работает над отслеживания событий для Windows и технологии счетчик производительности. Он достигнут на alexbe@microsoft.com.