Windows performance recorder что это

Какие-то из них относительно просты, другие потребуют времени и сил для освоения. Под катом вы найдете краткий обзор 12 инструментов, которые будут полезны перфоманс-инженерам, специалистам поддержки вернего уровня и вообще разработчикам, пекущимся о производительности своих приложений.

Подробнее про все инструменты и про то, как с их помощью решать проблемы с производительностью ваших приложений на практике Саша расскажет 21 мая на тренинге в Петербурге.

Typeperf and Perfmon

Счетчики производительности Windows — первый шаг к получению высокоуровнего обзора того, чем занята ваша система. Мониторинг использования CPU и памяти, диска и I/O, сетевых пакетов и HTTP-запросов позволяет получить обзор работы системы с высоты «птичьего полета» с малым оверхэдом и понять, куда копать дальше. Perfmon (Performance Monitor) является встроенным в Windows инструментом, который не только предоставляет доступ к панели счетчиков производительности в реальном времени, но и позволяет записывать данные счетчиков, чтобы посмотреть их позже на другом компьютере, и даже настроить автоматические уведомления на случай, если что-то пойдет не так. Для любителей командной строки есть Typeperf — инструмент, записывающий данные счетчиков в CSV файл, который впоследствии можно легко парсить и автоматически анализировать. Эти два инструмента позволяют быстро понять, на что следует обратить внимание в первую очередь, а также нормально ли работает ваша система. Впрочем, для глубокого исследования они, конечно, не подходят, поскольку счетчики просто показывают вам цифры, отображающие те или иные аспекты работы операционной системы.

XPerf, WPR, and WPA (Windows Performance Toolkit)

За последние 10 лет ETW (Event Tracing for Windows) стал весьма распространенным инструментов и по факту оказался стандартом де-факто среди инструментов анализа производительности под Windows. Записывая и анализируя данные ETW, можно на уровне ОС осуществлять профайлинг ЦПУ, исследовать блокировки, выяснять, какие части вашего приложения создают высокую нагрузку на диск или на сеть, и даже отслеживать сборку мусора, аллокации памяти и события загрузки сборок самого NET. XPerf — более старый консольный инструмент для записи ETW событий, имеющий несколько аналитических модулей для измерения производительности I/O, составления отчетов работы CPU и расчета «стоимости» запуска приложений. Кроме того, он умеент конвертировать записи ETW в CSV формат, который можно легко парсить другими инструментами и скриптами. WPR (Windows Performance Recorder) — графическая оболочка, позволяющая выбирать события, которые вы хотели бы записать.

Есть еще WPA (Windows Performance Analyzer), современный инструмент для просмотра записей ETW, способный строить графики, сводные таблицы с разными фильтрами и группировками, а также отдельные вьюшки для определенных событий: CPU стэков, аллокаций памяти, I/O запросов и этапов загрузки. Совсем недавно появилась поддержка flame graphs, нового метода отображения больших деревьев стека, позволяющий с легкостью их анализировать.

В общем, инструменты под ETW отлично подходят для анализа на продакшне, хотя их можно использовать и в разработке. Главным недостатком этих решений является относительное неудобство их использования по сравнению с коммерческими профайлерами.

PerfView

Etrace and LiveStacks

Procdump and DebugDiag

Инструменты, описанные выше, прежде всего нацелены на оптимизацию производительности, хотя при помощи того же ETW я отловил множество багов и утечек памяти. Однако в некоторых случаях вам может понадобиться полный дамп памяти сломанного процесса, который можно было бы изучить на продакшен системе или потом в вашем development environment. В Windows есть несколько инструментов, предназначенных для создания дампов, мы здесь поговорим о двух из них: Procdump, очень гибкое бесплатное консольное приложение от Sysinternals, генерирующее дампы по различным триггерам (% использования CPU, объем используемой памяти, неотвечающие окна и прочие); и DebugDiag, инструмент для мониторинга, который можно очень тонко настроить для фонового отслеживания ваших процессов в ожидании неполадок. Есть очень много ошибок, найти которые можно лишь изучая дамп, или даже несколько дампов, сделанных с определенной периодичностью, поэтому создание инфраструктуры для получения таких дампов может стать задачей номер один.

WinDbg

Вообще, для анализа дампов и получения из них максимума информации можно использовать Visual Studio, однако лучше обратить внимание на WinDbg и его всевозможные расширения. WinDbg, Windows Debugger, это мощный и очень unfriendly инструмент для отладки работающих процессов и анализа дампов. Вооружившись расширениями (такими как SOS, SOSEX, NetExt, and MEX), вы получите огромные возможности: исследование управляемой кучи, поиск неиспользуемых и неудаляемых объектов, находить задедлоченные потоки одной командой, обнаруживать ASP.NET запросы в реальном времени и делать множество других исследований. Важно отметить, что WinDbg можно управлять как внешними скриптами (запуская его из командной строки с определенными параметрами), так и внутренними (написанными на скриптовых языках или C/C++/C# DLL). Все это дает значительно более гибкие возможности для отладки в сравнении с VS или другими IDE, а его легковесность позволяет ставить его на продакшн и использовать для real-time мониторинга. Поверьте, вы оцените эту возможность не копировать к себе 50 гигабайтный дамп, когда окажется, что ваш сервер находится за 5000 километров от вас, а ширина канала не превышает 1 мегабита в секунду.

Кстати, на прошлом DotNext, Саша уже рассказывал много интересного про WinDbg.

Этот список был бы неполным, если бы не еще одно приложение (которое Саша написал сам), предназначенное для решения одной весьма неприятной проблемки с анализом дампов: у меня были файлы с Windows Phone, а для WinPhone CLR нет публичного SOS расширения, столь нужного для любого вида управляемого анализа дампов в WinDbg. Потому я написал свой open-source дебаггер на основе Windows Debugging API (DbgEng) и библиотеки Microsoft CLRMD. Msos — это open-source фреймворк, предоставляющий SOS интерфейсам управляемую оболочку. Со временем msos оброс уникальными фичами, которые отделили его от WinDbg и SOS:

UPD. Мы снова делаем тренинг с Сашей, в этот раз в Москве: регистрация и условия участия есть на сайте.

Источник

Как исправить в Windows 10 загрузку жесткого диска 100%.

Публикация: 15 April 2018 Обновлено: 21 April 2018

Если ваш компьютер под управлением Windows 10 работает медленно, и вы обнаружите, что жесткий диск работает на уровне около 100%, выполните следующие действия, чтобы устранить данную проблему.

Иногда ваша система Windows 10 будет работать медленно, несмотря на то у вас мощный процессор, много оперативной памяти и всего лишь несколько приложений. Многие факторы могут вызвать медленную работу ПК, один из них заключается в том, что жесткий диск работает на уровне около 100%. Он не имеет запасных циклов для выполнения обычных задач ОС. В результате все замедляется. Простая перезагрузка, которая часто решает многие проблемы с ОС, не исправит загрузку диска. Существует рад моментов, которые вы можете сделать, чтобы исправить проблему 100% использования диска в Windows 10.

Устранение загрузки диска 100% в Windows 10.

Когда вы пытаетесь выяснить, почему компьютер тормозит, вы могли заметить, что использование Диска в диспетчере задач составляет 100%.

Отключить Windows Search.

Функция поиска Windows всегда индексирует все файлы на вашем диске и предназначена для ускорения поиска файлов на вашем ПК. Однако это может вызвать проблему, когда диск перегружен работой и не имеет ресурсов для выполнения других задач.

Нажмите правой кнопкой мыши меню Пуск и выберите Windows PowerShell (администратор).

Прокрутите список служб и дважды кликните службу «Windows Search», а на вкладке «Общие» установите для параметра «Тип запуска» значение «Отключено» и нажмите кнопку «ОК».

Запустите проверку диска.

Отключите функцию SuperFetch.

Если это исправило ситуацию, вы можете навсегда отключить его, как и в случае с Window Search (показано выше), отключив службу SuperFetch.

Прокрутите список служб и дважды кликните службу «SuperFetch», а на вкладке «Общие» установите для параметра «Тип запуска» значение «Отключено» и нажмите кнопку «ОК».

Отключите Windows Performance Recorder.

Выполните следующую команду, чтобы решить эту проблему с загрузкой жесткого диска.

Каждый раз при загрузке системы Windows 10 инструмент работает в фоновом режиме, поэтому вам нужно будет выполнить эту команду каждый раз при загрузке системы. После применения исправления, мое использование дискового пространства понизилось с 92% до 10%.

Вполне возможно, что использование диска является подлинной или что она была вызвана чем-то другим. Если после выполнения этой команды, вы получите сообщение » There are no trace profiles running.Error code: 0xc5583000 «, это означает, что инструмент Windows Performance Recorder не работает, и не является причиной этой проблемы.

Chrome или Skype.

Перейдите на вкладку «Безопасность» и нажмите кнопку «Изменить». Убедитесь, что выделены Все пакеты приложений и установите флажок Разрешить запись и нажмите «ОК».

Для Chrome наиболее распространенной проблемой является использование слишком большого количества ресурсов из за службы прогнозирования используемой для более быстрой загрузки страниц. Чтобы отключить его, перейдите в раздел «Дополнительные настройки» и в разделе «Конфиденциальность и безопасность» отключите «Использовать подсказки для ускорения загрузки страниц» и перезапустите браузер.

Если Вы столкнулись с этой проблемой на своем ПК с ОС Windows? Сообщите нам шаги, которые вы предприняли, чтобы исправить это.

Источник

Механизм трассировки событий для Windows

Одним из богатейших источников информации является провайдер ядра (kernel provider), который генерирует события в моменты запуска процессов и потоков, загрузки DLL, распределения блоков памяти, сетевых операций ввода/вывода и при выполнении трассировки стека. В таблице ниже приводится перечень некоторых наиболее интересных событий, сообщаемых ETW-провайдерами ядра и CLR. Механизм ETW можно использовать для исследования общего поведения системы, например, чтобы выяснить, какой из процессов потребляет большую часть вычислительной мощности CPU, проанализировать узкие места в операциях ввода/вывода, получить статистику, касающуюся работы сборщика мусора и использования памяти управляемыми процессами, и во многих других случаях, обсуждаемых далее.

События ETW несут в себе точное время их возникновения, могут содержать дополнительную пользовательскую информацию, а также состояние стека на момент их появления. Информация о состоянии стека может использоваться для выявления источников различных проблем. Например, провайдер CLR может посылать события в начале и в конце каждого цикла сборки мусора. Эти события в комплексе с информацией о состоянии стека вызовов можно использовать для выявления частей программы чаще других вызывающих сборку мусора.

Неполный список событий ETW в ядре Windows и CLR

Запуск и завершение процессов и потоков

Загрузка и выгрузка образов (библиотек DLL, драйверов, выполняемых файлов)

Дисковые операции чтения и записи

Ошибки обращения к страницам диска (которые были вытеснены из кеша в оперативной памяти)

Статистика и информация о работе механизма сборки мусора

Конфликт между потоками выполнения при попытке приобрести разделяемую блокировку

Начало конфликта (поток переведен в режим ожидания), конец конфликта

Информация о состоянии динамического компилятора (Just in Time, JIT)

Успешная попытка встраивания метода, неудачная попытка встраивания метода

Windows Performance Toolkit (WPT)

— это комплект утилит для управления сеансами ETW, сохранения событий ETW в файлах журналов и их обработки для последующего отображения на экране. Может генерировать графики и диаграммы событий ETW, сводные таблицы, включающие информацию о состоянии стека, и файлы CSV для автоматизированной обработки.

В 64-разрядной версии Windows для поддержки возможности трассировки стека необходимо изменить настройки в реестре, запрещающие выгрузку страниц с кодом из оперативной памяти в файл подкачки (для самого ядра Windows и для всех драйверов). Это может увеличить потребление оперативной памяти системой на несколько мегабайт. Чтобы изменить настройки, найдите в реестре ключ HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management, установите параметр DisablePagingExecutive типа DWORD в значение 0x1 и перезагрузите систему.

Для перехвата и анализа событий ETW используются инструменты XPerf.exe и XPerfView.exe. Оба должны запускаться с привилегиями администратора. Утилита XPerf.exe имеет несколько ключей командной строки, с помощью которых можно указать, какие провайдеры должны включаться, размеры используемых буферов, имя файла для сохранения информации о событиях и множество других параметров. Утилита XPerfView.exe анализирует исходную информацию и генерирует графические отчеты на основе информации в файле журнала.

Захват и анализ событий ядра с помощью XPerf

Создайте системную переменную окружения _NT_SYMBOL_PATH со значением, включающим путь к общедоступному серверу символов и локальному кешу символов, например: srv*C:\Temp\Symbols*http://msdl.microsoft.com/download/symbols.

Запустите с правами администратора командную строку и перейдите в каталог установки WPT (например, C:\Program Files\Windows Kits\8.1\Windows Performance Toolkit).

Щелкните правой кнопкой мыши на графике нагрузки на процессор и выберите пункт контекстного меню Load Symbols (Загрузить символы). Щелкните правой кнопкой мыши на графике еще раз и выберите пункт контекстного меню Simple Summary Table (Простая сводная таблица). В результате должна появиться таблица со списком методов во всех процессах, проявлявших активность в процессе сбора информации. (Загрузка символов с сервера Microsoft в первый раз может занять продолжительное время.)

Инструмент WPT способен на большее, чем было показано в этом эксперименте. Вам следует заняться самостоятельными исследованиями пользовательского интерфейса и попробовать принять и проанализировать другие группы событий ядра или даже события от собственных провайдеров ETW. (Создание собственных провайдеров рассматривается далее.)

Инструмент WPT может пригодиться в самых ситуациях, поможет вникнуть в поведение системы и отдельных процессов. Ниже представлено несколько скриншотов и описаний примеров подобных ситуаций:

WPT может перехватывать все события дисковых операций ввода/вывода в системе и выводить информацию с привязкой к карте физического диска. Это дает возможность выявить наиболее дорогостоящие операции ввода/вывода, в частности операции, требующие значительных перемещений головок жесткого диска.

WPT может отображать сводные графики событий разных типов, чтобы проще было выявить корреляцию, например, между операциями ввода/вывода, использованием памяти, нагрузкой на процессор и другими характеристиками.

Если запустить XPerf с провайдером CLR ETW для сбора событий с ключевым словом GCKeyword (0x00000001) и уровнем детализации verbose (0x5), эта утилита послушно будет перехватывать все события, генерируемые провайдером. Сохранив всю полученную информацию в файл CSV или открыв ее с помощью XPerfView, мы сможем (хотя и с трудом) идентифицировать события механизма сборки мусора в нашем приложении.

На рисунке ниже показан пример отчета, созданного утилитой XPerfView, где время между событиями GC /start и GC /stop соответствует протяженности одного цикла работы механизма сборки мусора:

PerfMonitor

— это открытый инструмент командной строки, созданный командой разработчиков BCL в Microsoft, и доступный на сайте CodePlex. На момент написания этих строк самой последней была версия PerfMonitor 2.01. Главное преимущество PerfMonitor перед WPT заключается в полной поддержке событий CLR и способности выводить информацию о них не только в табличном виде. PerfMonitor способен анализировать события, генерируемые сборщиком мусора и JIT-компилятором, выполнять трассировку управляемого стека и определять нагрузку на процессор, оказываемую различными частями приложения.

Для опытных пользователей в состав PerfMonitor включена библиотека с именем TraceEvent, обеспечивающая программный доступ к событиям CLR ETW и позволяющая автоматизировать анализ событий. Библиотеку TraceEvent можно использовать в собственных приложениях мониторинга для автоматического исследования и регистрации событий, протекающих в ходе эксплуатации системы.

Чтобы произвести запуск PerfMonitor с целью выполнить приложение и сгенерировать отчет, нужно использовать следующую команду (в процессе чтения этой статьи вы можете сами поэкспериментировать с инструментом, запуская с его помощью приложение JackCompiler.exe из папки с исходниками):

Различные HTML-файлы отчетов, сгенерированные инструментом PerfMonitor, содержат уже обработанную информацию, но вы всегда можете открыть исходные ETL-файлы с помощью XPerfView или любого другого инструмента, способного читать двоичные файлы журналов с событиями ETW. Сводный отчет для примера выше включает следующую информацию (при выполнении эксперимента на вашем компьютере фактические значения могут отличаться):

На рисунке ниже представлен пример отчета восходящего анализа, где видно, что тремя наиболее активно используемыми методами являются System.String.Concat(), JackCompiler.Tokenizer.Advance() и System.Linq.Enumerable.Contains():

На рисунке ниже представлен пример отчета нисходящего анализа, где видно, что 84.2% процессорного времени было потрачено методом JackCompiler.Parser.Parse(), который вызывает методы ParseClass(), ParseSubDecls(), ParseSubDecl(), ParseSubBody() и так далее:

Детальный отчет для механизма сборки мусора содержит таблицу со статистической информацией о его работе (счетчики, времена) для каждого цикла, а также информация об отдельных событиях, включая продолжительность пауз, объем освобожденной памяти и многое другое. Некоторые из этих сведений пригодятся нам позже, при обсуждении внутреннего устройства сборщика мусора и его влияния на производительность. На следующем рисунке показано несколько строк из отчета об отдельных событиях сборщика мусора:

В ходе сбора информации от нескольких провайдеров ETW могут получаться очень большие файлы журналов. Например, в режиме по умолчанию PertMonitor генерирует примерно 5 Мбайт данных в секунду. Если оставить инструмент работать на несколько дней, он наверняка исчерпает дисковое пространство даже на очень большом жестком диске. К счастью, оба инструмента, XPerf и PerfMonitor, поддерживают циклический режим журналирования, когда в журнале сохраняется только последние N Мбайт данных. В PerfMonitor максимальный размер файла журнала можно указать (в мегабайтах) с помощью ключа /Circular, при этом все старые файлы будут автоматически удаляться при превышении указанного порогового значения.

PerfView

— бесплатный инструмент, разрабатываемый в корпорации Microsoft, объединяющий в себе функции сбора информации от провайдеров ETW и ее анализа, по аналогии с PerfMonitor, а также средства анализа динамической памяти, которые будут обсуждаться в следующей статье, во время знакомства с такими инструментами, как CLR Profiler и ANTS Memory Profiler. Загрузить PerfView можно по адресу: PerfView. Обратите внимание, что инструмент PerfView должен запускаться с привилегиями администратора, потому что требует доступа к инфраструктуре ETW.

В панели со списком файлов (слева) можно видеть дамп динамической памяти и файл с информацией ETW. Ссылки в центральной области окна ведут к разным командам, поддерживаемым инструментом.

Для нужд анализа распределения динамической памяти, который мы вскоре выполним, в исходниках к этой статье включено приложение MemoryLeak.exe. Это приложение будет запускаться с помощью инструмента PerfView, который сгенерирует отчеты со всей информацией, доступной в PerfMonitor, и не только, включая:

простой список событий ETW, полученных от разных провайдеров (например, с информацией о конфликтах в CLR, дисковых операциях ввода/вывода, TCP-пакетах и ошибках чтения страниц);

сгруппированные участки стека вызовов, где приложение провело больше всего времени, с возможностью настройки фильтров и пороговых значений;

участки стека вызовов, соответствующие операциям загрузки образов (сборок), дисковым операциям ввода/вывода и операциям выделения памяти (для каждых 100 Кбайт);

статистика сборщика мусора, включая продолжительность каждого цикла сборки мусора и объем освобожденной памяти.

Кроме того, с помощью PerfView можно сохранять срезы динамической памяти текущего выполняющегося процесса или импортировать их из файла. После импортирования, с помощью PerfView можно найти типы объектов, занимающих наибольший объем памяти и выявить цепочки ссылок, ответственные за удержание этих объектов в памяти.

На рисунке ниже изображен пример анализа ссылок на объекты класса Schedule, которые занимают в динамической памяти 31 Мбайт. PerfView благополучно обнаружил, что ссылки на объекты Schedule хранятся в экземплярах класса Employee, а экземпляры Employee удерживаются в памяти очередью объектов, готовых к завершению.

Собственные провайдеры ETW

Как и при использовании счетчиков производительности, у вас может появиться желание внедрить в свое приложение поддержку возможности сбора и передачи информации, предлагаемой инфраструктурой ETW.

Ниже приводится пример реализации провайдера ETW в управляемом приложении:

Для получения информации из такого приложения можно использовать инструмент PerfMonitor. Запустить с его помощью приложение, произвести сбор

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • Windows performance analyzer что это
  • Windows pe xpe что это
  • windows pe strelec что это
  • Windows path что это
  • windows patch kb3033929 что это

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии
    Провайдер Флаг/ключевое слово Описание События
    Ядро PROC_THREAD