windows 7 и модернизация...
TRANSCRIPT
Windows 7 и модернизация приложений
Алексей Федоров[email protected]
Цель мероприятия
• Обсудить подходы к модернизации приложений— процесс создания приложений, которые– корректно используют ресурсы операционной
системы– не нарушают ее стабильность– позволяют измерять их производительность– интегрируются с сервисами ядра системы– корректно участвуют в жизненном цикле
операционной системы– корректно работают с подсистемой электропитания– могут быть сконфигурированы с помощью новых
средств, включенных в состав операционной системы Windows 7
Ресурсы
Блог для компаний-разработчиков
http://blogs.technet.com/isv_team
Модернизация приложений
• Подробное описание технологий и инструментов
• Практические примеры
• Рекомендации
• 192 стр.!
Модернизация приложений
Ресурсы
www.microsorft.ru/isv/Win7_mod.aspx
• Электронная версия книги
• Дополнительные ресурсы
• Ответы на вопросы
• ...
Программа семинара
• 10:00– Введение– Инструменты– Обеспечение стабильности приложений– Измеряемость приложений– Измерение производительности системы и приложений
• 12:00-13:00 – Обед– Жизненный цикл работы операционной системы– Управление питанием– Платформа Windows Troubleshooting Platform
• 14:30-15:00 – Кофе– Вопросы и ответы
Анкета
• Просьба заполнить максимально полно!– Вопросы 1-29 – Профиль компании
• Особенно важно:– Вопросы 30, 31
– 32 – польза от семинара – заполняем в конце
– 33 – что мы еще можем рассказать?
– 34 – что еще интересует
– 35, 36 – Подумайте, прежде чем сказать «нет»
– 37 – что-то еще? Комментарии?
Введение
Новое поколение операционных систем
Совместимость
• Возможность работы приложений на новой платформе
Модернизация
• Стабильность, надежность, измеряемость, экономичность
Функциональность
• Новые функции, интеграция с ОС, новые сценарии
Новое поколение операционных систем
Совместимость
• Возможность работы приложений на новой платформе
Модернизация
• Стабильность, надежность, измеряемость, экономичность
Функциональность
• Новые функции, интеграция с ОС, новые сценарии
Совместимость и сертификация
• Первая волна мероприятий
– 8 городов
– 400+ участников
– 160+ - логотип Compatible with Windows 7
– 220+ - совместимы с Windows 7
СовместимостьОбщий подход к обеспечению совместимости приложений, безизменения их кода, заключается в использовании технологии«системных заплаток» (динамически загружаемых библиотек,перехватывающих вызовы ряда системных функций операционнойсистемы), позволяющей обходить большую часть проблемсовместимости. В данном пособии рассматриваются теоретические ипрактические вопросы применения основных системных заплаток
http://download.microsoft.com/documents/rus/windows/V7IT.pdf
Несмотря на большое количество сторонних средств по обеспечению совместимости приложений, иногда наиболее простым или единственно возможным решением может оказаться модификация исходного кода приложения. В данном пособии рассматриваются основные причины несовместимости приложений с операционными системами Windows Vista и Windows 7 и приводятся практические рекомендации по их устранению на уровне изменения исходного кода.
http://download.microsoft.com/documents/rus/windows/V7DEV.pdf
Совместимость
• Семинар «Windows 7 и обеспечение совместимости приложений»– Слайды - http://download.microsoft.com/documents/rus/events/
materials/W7_ACT_09-2009.xps
– Примеры с комментариями -http://download.microsoft.com/documents/rus/events/materials/W7_ACT_Demos.xps
• http://blogs.technet.com/isv_team/
Сертификация
• http://blogs.technet.com/isv_team/
Сертификация
• http://www.microsoft.com/rus/isv/win7_logo.aspx
Продвижениеhttp://www.microsoft.com/rus/isv/catalog/w7Logo.aspx?filter=W7Logo
Новое поколение операционных систем
Совместимость
• Возможность работы приложений на новой платформе
Модернизация
• Стабильность, надежность, измеряемость, экономичность
Функциональность
• Новые функции, интеграция с ОС, новые сценарии
Программа семинара
• Введение• Инструменты• Обеспечение стабильности приложений• Измеряемость приложений• Измерение производительности системы и
приложений• Жизненный цикл работы операционной
системы• Управление питанием• Платформа Windows Troubleshooting Platform
1. Инструменты
Инструменты
• Штатные средства, входящие в состав ОС
• Дополнительные средства Microsoft
• Утилиты SysInternals
Штатные средства
• Task Manager– Утилита для управления приложениями,
процессами и сервисами
• System Configuration– Утилита для отображения различных настроек
системы
• MSInfo32– Утилита для отображения различных сведений
о системе
Пример
Штатные средства
• Performance Monitor– Утилита для определения ключевых
характеристик производительности системы в реальном времени
• Resource Monitor– Утилита для определения утилизации основных
ресурсов компьютера – процессора, памяти, диска, и т.п.
• Reliability Monitor– Средство слежения за стабильностью системы
Пример
Штатные средства
• WinSAT
– Утилита для вычисления индекса производительности системы и ее компонентов
• PowerShell
– Среда для запуска сценариев управления компонентами системы и получения даных о системе
WinSAT
• Windows System Assessment Tool)
• WinSAT = Windows System Assessment Tool
• WinEI = Windows Experience Index
WinSAT
• Базовый индекс – от 1.0 до 7 – Windows Vista - до 5.9
• CPU Assessment - Скорость процессора• Memory Assessment - Скорость памяти• DWM Assessment - Скорость графической подсистемы• D3D Graphics Assessment, Media Assessment - Скорость
игровой графики и мультимедиа• Disk Assessment - Скорость диска
• Самый меньший индекс присваивается всей системе
• WinSAT.exe(%windir%\System32\WinSAT.exe)
WinSAT
• Оценка индивидуальных компонентов– C:\>winsat disk –seq –read –n 0
• Оценка системы– C:\>winsat formal
• Результаты– Базовые тесты
• %WinDir%\Performance\WinSAT
– Отдельные тесты• %WinDir%\Performance\WinSAT\DataStore
WinSAT
• Программные интерфейсы (COM)
– WinSATComInterfaceI.h
– WinSATAPI.dll
• %windir%\system32\WinSATAPI.dll
– WMI
• Win32_WinSAT
– PowerShell
• Get-WmiObject Win32_WinSAT
Пример
PowerShell
• Получение сведений о системе– Get-Process
– Get-Service
– Get-HotFix
– Get-ComputerRestorePoint
– Get-Acl
– Get-AuthenticodeSignature
– Get-Culture
– Get-UICulture
PowerShell
• Доступ к реестру– PS>sl hkcu:
– PS HKCU:\>• Dir, Get-ChildItem
– PS HKCU:\>cd software/microsoft/windows/dwm
• Доступ к счетчикам производительности– Get-Counter
– Import-Counter
– Export-Counter
PowerShell
• Доступ к системному журналу– Get-EventLog– Show-EventLog
• Доступ к WMI– Get-WmiObject
• Get-WMIObject Win32_ComputerSystem• Get-WMIObject Win32_OperatingSystem• Get-WMIObject Win32_Processor• Get-WMIObject Win32_Process• Get-WMIObject Win32_BootConfiguration• Get-WMIObject Win32_NetworkAdapterConfiguration
Пример
Дополнительные средства
• Windows Performance Toolkit– Измерение производителности системы
– Измерение производительности приложений
– Трассировка загрузки ОС, перехода ОС из состояния в состояние
– Основной инструмент настройки производительности приложений
• Windows SDK, Windows DDK
• WinDbg, Application Verifier
Утилиты Sysinternals
• Process Explorer: Улучшенная версия Task Manager
• Process Monitor: Трассировка работы с файлами, реестром, сетью и т.п.
• Process Dump: Создание дампа памяти процесса для последующего анализа
• http://technet.microsoft.com/en-us/sysinternals/default.aspx
или• \\live.sysinternals.com\tools
2. Обеспечение стабильности приложений
Обеспечение стабильности приложений
• Утечки памяти
– Основные правила использования ресурсов системы
• Зависание приложений
– Борьба с зависанием приложений
• Системные механизмы
• Утилиты
Обеспечение стабильности приложений
• Утечки памяти
– Приложения не освобождают ранее занятую память
– Снижение производительности приложений и ОС
– Повышение использования механизма постраничной виртуализации памяти
– Приложения, работающие длительное время
– Перезагрузка приложений и самой ОС
Обеспечение стабильности приложений
• Утечки памяти
– HeapAlloc() / HeapFree()
– malloc(), new() / free() и delete()
– VirtualAlloc() / VirtualFree()
– CreateFile(), CreateEvent(), CreateThread() / CloseHandle()
– Функции USER и GDI
– Низкофрагметрированная куча – начиная с Windows Vista
Обеспечение стабильности приложений
• Утечки памяти
– Слежение
• Windows Task Manager– Колонки Memory-Commit Size, Handles, User Objects и
GDI Objects
Пример
Обеспечение стабильности приложений
• Утечки памяти
– Performance Monitor
– Resource Monitor
– Application Verifier
– Утилита UMDH (Debugging Tools for Windows) –анализ выделения областей памяти в куче
– Утилита Xperf - трассировка выделения памяти в «куче»
Обеспечение стабильности приложений
• Рекомендации– В С++ используйте «smart pointers»
– Встроенные функции компилятора - _com_ptr_t, _bstr_t, _variant_yt и т.п.
– Старайтесь не использовать несколько вариантов завершения работы функции
– Не используйте исключения без предварительного освобождения памяти, занятой всеми локальными переменными в области действия функции
– Web – JavaScript Memory Leak Detector• IE8 отслежимает основные утечки при использовании COM-
объектов из скрипта
Обеспечение стабильности приложений
• Зависание приложений
– Вторая после сбоев приложений причина недовольства пользователей
– Пользователи готовы ждать не более 5 сек. для реакции приложения
– Задача: Обеспечение отклика приложения
– Поддержка на уровне ОС
Обеспечение стабильности приложений
• Зависание приложений– Поддержка на уровне ОС
• Сервисы Desktop Window Manager (DWM) для обработки сообщений
• Извлечение сообщений –GetMessage()/PeekMessage()
• Таймер для каждого сообщения (5 сек.)
• IsHungAppWindow()
• Window Ghosting Feature – копия изображения окна– DisableProcessWindowsGhosting()
• Интеграция с WER
Обеспечение стабильности приложений
• Зависание приложений– Поддержка возможности отмены операций
• Выполнение операций в фоновом режиме – очередь задач
– Простой код интерфейса приложения• Не вызывайте функции, которые могут заблокировать
интерфейс
– Отображение окон/диалоговых панелей только после их полного заполнения информацией• Упрощенный вариант панели + последующее
заполнение
Обеспечение стабильности приложений
• Механизмы
– Application Restart and Recovery
– Windows Error Reporting
– Kernel Transaction Manager
– Cancellable I/O
– Fault Tolerant Heap
– Application Verifier
Обеспечение стабильности приложений
– Application Restart and Recovery• Базовая поддержка
– Корректная обработка сообщений, посылаемых ОС
• Расширенная поддержка– Использование функций Windows API для регистрации
приложений (ресурсов)– Получение уведомления о перезапуске– Сохранение данных– Перезапуск– Восстановление данных– Продолжение работы
• Доступ из управляемого кода - Windows API Code Pack for Microsoft .NET Framework– Microsoft.WindowsAPICodePack.ApplicationServices
Пример
Обеспечение стабильности приложений
– Windows Error Reporting
• Возможность сбора информации об ошибках и сбоях
• Консолидация информации на выделенном портале
• Анализ ошибок и сбоев, частоты их появления, типов
• Включение данных о производительности
• Гибкое управление
• Базовая поддержка без изменения кода
• Программные интерфейсы– Управление содержимым отчета
– Возможность включения дополнительных данных и файлов
Обеспечение стабильности приложений
– Kernel Transaction Manager• Возможность транзакционной работы с
– Файловой системой» TxF
– Реестром» TxR
– Увеличивает стабильность работы приложений– Компоненты
• Common Log File System (CLFS)• Взаимодействие с DTC, другими менеджерами ресурсов
– Функции• CreateFileTransacted(), CopyFileTransacted(),
MoveFileTransacted(), …• RegDeleteKeyTransacted()…
Диспетчер NTFSTransactional File
System (TxF)
NTFS
Запрос к файловой системе
Транзакционные сервисы (KTM)
Сервисы протоколы CLFS
Обеспечение стабильности приложений
– Kernel Transaction Manager
Обеспечение стабильностиприложений
• Tx = CreateTransaction()
• … выполнение операций
– CommitTransaction(Tx) или RollbackTransaction(Tx)
• CloseHandle(Tx)
Пример
Обеспечение стабильности приложений
• Cancellable I/O
– Механизм отмены операций ввода/вывода
– CancelIoEx(), CancelSynchronousIo(),
Cancellable I/O
http://msdn.microsoft.com/en-us/library/aa480216.aspx
Fault Tolerant Heap
• Устойчивая к сбоям «куча»• FTH – подсистема в Windows 7, отвечающая за
мониторинг сбоев в приложениях• FTH может «исправлять» приложения для
предотвращения сбоев на уровне приложений• События, связанные с FTH
– Event Viewer -> Applications and Services Logs > Microsoft > Windows > Fault-Tolerant-Heap
• Отключение FTH– HKLM\Software\Microsoft\FTH\Enabled = 0
• Сброс списка приложений– Rundll32.exe fthsvc.dll,FthSysprepSpecialize
Обеспечение стабильности приложений
• Fault Tolerant Heap
Buffer overrun (read) Double free
Buffer overrun (write) Free of stack buffer
Reuse after free (read) Wrong free during shutdown
Reuse after free (write) Uninitialized variable
Fault Tolerant Heap
Обеспечение стабильности приложений
• Application Verifier
– Средство тестирования приложений на неуправляемом коде
– Статистика: ~70% всех сбоев можно было бы избежать
– Базовые тесты:
• Exception Stop, Handles Stop, Heaps Stop, Input/Output Stop, Leak Stop, Locks Stop, Memory Stop, Thread Local Storage Stop, Thread Pool Stop
Обеспечение стабильности приложений
• Application Verifier
– Графический интерфейс
– Интерфейс командной строки
– COM-интерфейсы
Обеспечение стабильности приложений
• Application Verifier
• Интерфейс командной строки– appverif -enable handles locks -for foo.exe bar.exe
– appverif -enable heaps handles -for foo.exe -with heaps.full=false
– appverif -disable * -for foo.exe bar.exe
– appverif -export log -for foo.exe -with to=c:\sample.xml
– appverif /verify notepad.exe /faults 5 1000 kernel32.dll advapi32.dll
Обеспечение стабильности приложений
• Application Verifier• COM-интерфейсы
<job id="ImageStop"><object id="AppVerif" progid="VRFAUTO.AppVerifierManager" /><script language="VBScript">
MainSub Main
Set ImageCheck = AppVerif.Images.Item("svchost.exe").Checks.Item("heaps")
Set ImageStops = ImageCheck.StopsFor Each ImageStop in ImageStops
WScript.Echo ImageStop.StopCode & " - " & ImageStop.Active & " - " & ImageStop.Severity
NextEnd Sub
</script></job>
Пример
3. Измеряемость приложений
Измеряемость приложений
• Измеряемость (Instrumentation) - группа характеристик, применяемых к приложениям, которые:
– «видны» операционной системе, встроенным и дополнительным средствам измерения, мониторинга
– поддерживают сбор и публикацию данных о своей деятельности
– интегрируются с соответствующими механизмами на уровне ядра операционной системы
Измеряемость приложений
• Сценарии
– Диагностика проблем, отладка, управлениеприложениями
– Измерение производительности приложений
– Получение характеристик работы системы и приложений
• Подсистема Event Tracing for Windows(ETW)
Измеряемость приложений
• Основные механизмы– Счетчики производительности
• Измерение производительности компонентов системы или приложений
• В реальном времени, в протоколе
– События• Уведомления• Сообщения об ошибках/предупреждения
– Отличия– Счетчики отвечают на вопрос «что происходит»
• Анализ в реальном времени
– События отвечают на вопрос «что происходило»• Используются для констатации факта• В реальном времени – связь события с задачей
Счетчики производительности
• Поддерживаются на уровне инфраструктуры ядра операционной системы
• Позволяют хранить числовую информацию, сгруппированную в категории, счетчики, экземпляры.
• Важно: кто потребитель?
– Администратор или разработчик?
Счетчики производительности
• Основные категории счетчиков: – Cache, Memory, Objects, Paging File, Processor,
System, FullImage, Image, JobObject, JobObjectDetails, Process, ProcessAddressSpace, Thread, ThreadDetails, LogicalDisk, PhysicalDisk и т.п.
– Локализация названий
Счетчики производительности
• Новые системные счетчики в Windows 7– Processor Information– Synchronization– Per Processor Network Interface Card Activity– Per Processor Network Activity Cycles– Event Tracing for Windows– Event Tracing for Windows Session– Pacer Flow– Pacer Pipe– Cluster Shared Volumes– BranchCache Kernel Mode
Счетчики производительности
• Утилита TypePerf– Информация о существующих счетчиках
– Получение данных из счетчиков
– Операции со счетчиками
• Счетчики в группе «Processor»– c:\>typeperf –qx Processor
• Получение данных из счетчика– c:\>typeperf "\Processor(_Total)\% Processor
Time"
Счетчики производительности
• Счетчики уровня ядра (Kernel Mode)
– Создание и заполнение - системные компоненты
– PcwRegister(), PcwCreateInstance()
• Счетчики уровня User (User Mode)
– Приложения
– PerfSet*(), PerfIncrement*()
– System.Diagnostics.PerformanceData
Счетчики производительности
• Доступ к данным
– Неуправляемый код
– Управляемый код
– PowerShell
– Performance Monitor (perfmon)
Счетчики производительности
• PowerShell
– Получение списка счетчиков
• Get-Counter -listSet * | Select-Object -ExpandPropertyPaths
– Получения значений отдельного счетчика
• Get-Counter “\Processor(0)\% Processor Time”
Пример
Счетчики производительности
• Процесс создания
– Создание манифеста (XML-файла)
– Использование утилиты ctrpp.exe для генерации кода
– Добавление в приложение кода для генерации данных
– На каждом компьютере запустить утилиту lodctr.exe для «установки» счетчиков
Счетчики производительности
• Поставка и потребление
Счетчики производительности
• Создание собственных счетчиков
– Дизайн счетчиков
– Задание метаданных для счетчиков
– Генерация кода и ресурсов
– Изменения в исходном коде приложения для поставки данных счетчикам
– Проверка правильности работы счетчиков
Счетчики производительности
• Создание собственных счетчиков
Утилита Доступность Описание
Manifest Generator
(ECManGen.exe)
SDK 7.0 и выше
DDK 7.0 и выше
Средство для описания метаданных в виде
манифеста для счетчиков производительности
CTRPP(ctrpp.exe) SDK 7.0 и выше
DDK 7.0 и выше
Средство генерации кода и файлов ресурсов на
основе манифеста для счетчиков
производительности
Resource Compiler (rc.exe) SDK 6.0 и выше
DDK 6.0 и выше
Компилятор ресурсов, превращающий текстовое
описание (.rc) в скомпилированные ресурсы (.res)
LODCTR (lodctr.exe) Windows Vista,
Windows Server 2008
Средство для установки манифестов счетчиков
производительности
UNLODCTR (unlodctr.exe) Windows Vista,
Windows Server 2008
Средство для удаления манифестов счетчиков
производительности
События
• Возможность отображения в системном журнале ключевую информацию о приложениях
• События могут использоваться для– получения данных о том, что происходит с
приложениями
– решения проблем, связанных с их эксплуатацией
– диагностики
– управления приложениями
– в ряде других сценариев...
События
• Событийная подсистема
– Поставщик (Event Provider)
• Генератор событий
– Инфраструктура Event Tracing for Windows (ETW)
• Доставка событий в журнал
– Системный журнал (Event Log)
– Потребители
События
• Утилита Windows Events Command Line Utility– Список всех журналов
• wevtutil el
– Информация о системном журнале в XMLформате• wevtutil gl System /f:xml
– Информация о поставщике Microsoft-Windows-Eventlog• wevtutil gp Microsoft-Windows-Eventlog /ge:true
События
• Основные потребители
– Event Viewer, Trace Report, Windows Performance Analyzer
– PowerShell
– Программные интерфейсы
Пример
События
• Создание собственных событий– Новый провайдер
– Канал
– Событие• InType/OutType
• Level
– Генерация кода
– Компиляция ресурсов
– Изменения в коде приложения
– Регистрация провайдера
События
• Создание собственных событий
Утилита Доступность Описание
Manifest Generator
(ECManGen.exe)
SDK 7.0 и выше
DDK 7.0 и выше
Средство для описания метаданных в виде
манифеста для событий
Message Compiler (MC.exe) SDK 7.0 и выше
DDK 7.0 и выше
Утилита для генерации кода и файлов ресурсов
из манифеста события
Resource Compiler (rc.exe) SDK 6.0 и выше
DDK 6.0 и выше
Компилятор ресурсов, превращающий
текстовое описание (.rc) в скомпилированные
ресурсы (.res)
Windows Events Command
Line Utility (wevtutil.exe)
Windows Vista,
Windows Server 2008
Утилита, которая может использоваться для
установки/удаления событий и для получения их
содержимого
Event Viewer (eventvwr.exe) Windows Vista,
Windows Server 2008
Средство для просмотра событий, находящихся
в системном журнале
4. Измерение производительности системы и приложений
Измерение производительности системы и приложений
• Сценарии:– Получение детальной информации об
использовании ресурсов системы• процессора, диска, памяти, сети и т.п.
– Нахождение проблем, связанных с:• Повышенной утилизацией ресурсов,
• Утечкой ресурсов
• Задержками в реакции системы, сервисов, процессов и приложений на системные запросы
• Эффективным использованием подсистемы питания
Измерение производительности системы и приложений
• Инструменты:
– Windows Performance Toolkit
• ОС: Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2
• Платформы: x86, x64, ia64
– Входит в Windows SDK
• wpt_x86.msi, wpt_x64.msi, wpt_ia64.msi
– http://msdn.microsoft.com/en-us/performance/default.aspx
Измерение производительности системы и приложений
• XPerf и XPerfView
Измерение производительности системы и приложений
• Список провайдеров– C:\>xperf –providers
• Список провайдеров уровня ядра– C:\>xperf –providers K
• Сбор информации– C:\>xperf –on DiagEasy
– Флаги: PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER
• Результат по умолчанию – c:\kernel.etl
Измерение производительности системы и приложений
• Обработка данных
– C:\>xperf –d trace.etl
• Windows Performance Analyzer
• Отображение данных
– C:\>xperf trace.etl или C:\>xperfview trace.etl
• Важно: сбор данных для их последующего анализа
Измерение производительности системы и приложений
• Конфигурация системы
– C:\> xperf –i trace.etl –a sysconfig
– C:\> xperf –i trace.etl –a sysconfig>c:\analysis\sysconfig.txt
– В Windows Performance Analyzer
• Trace | System Configuration
– Позволяет узнать характеристики системы, на которой выполнялся сбор данных
Измерение производительности системы и приложений
• Визуализация стека
• Необходимо:
– Отладочные символы для системы (PDB-файлы)
– Отладочные символы для анализируемых компонентов
– C:\>set _NT_SYMBOL_PATH=...
– C:\>xperf –on PROC_THREAD+LOADER+INTERRUPT+DPC+PROFILE
– –stackwalk profile
Измерение производительности системы и приложений
• Визуализация стека
• График CPU Sampling by Process
– Load Symbols
– Summary Table
– «Callers»|«Callees»
– «Innermost» | «Outermost»
– Колонка %Weight
Измерение производительности системы и приложений
Измерение производительности системы и приложений
• Жизненный цикл процесса
• Флаги PROC_THREAD+LOADER
• События
– Create, Delete, Start Rundown, End Rundown и образами - Load, Unload, Start Rundown, End Rundown
• C:\> xperf -i имя_файла.etl -a tracestats -detail
Измерение производительности системы и приложений
• Анализ приложений– Определим приложение, которые вызывает
повышенную активность при работе с диском. Периодические операции с диском не позволяют снизить его скорость и влияют на потребление энергии всей системой
– В среднем, разница в энергопотреблении между диском, работающим «в полную силу» и с пониженной скоростью составляет порядка 1 Вт.
Измерение производительности системы и приложений
Измерение производительности системы и приложений
Измерение производительности системы и приложений
• Определим, какие приложения отвечают за повышенное потребление ресурсов центрального процессора
• Даже небольшие изменения в использовании ресурсов процессора приводят к существенному увеличению потребления энергии – например, 10% увеличение в использовании процессора приводит к увеличению потребления на 2 Вт.
Измерение производительности системы и приложений
Измерение производительности системы и приложений
Измерение производительности системы и приложений
Измерение производительности системы и приложений
• Узнаем, какие приложения используют ресурсы процессора
Измерение производительности системы и приложений
Измерение производительности системы и приложений
• C:\>xperf -help
• C:\>xperf –help providers
• C:\>logman query providers
Измерение производительности системы и приложений
• Утилита XBootMgr
• C:\>xbootmgr –trace rebootCycle -noPrepReboot
Режим Команда Команда обработки данных
Boot Xbootmgr –trace boot Xperf –i [filename] –a boot
Shutdown Xbootmgr –trace shutdown Xperf –i [filename] –a shutdown
Standby Xbootmgr –trace standby Xperf –i [filename] –a suspend
Hibernate Xbootmgr –trace hibernate Xperf –i [filename] –a suspend
Измерение производительности системы и приложений
Измерение производительности системы и приложений
• Подсистема Event Tracing For Windows– 4 ключевых компонента:
• Провайдеры – компоненты, которые генерируют события используя функцию EventWrite()
• Сессии – объекты уровня Kernel, которые собирают события в буферы и посылают эти события в файл или непосредственно в приложение
• Контроллеры – программы, которые создают сессии и управляют ими и соответствующими провайдерами –управление провайдерами состоит в разрешении/запрете событий или групп событий
• Потребители – программы, которые потребляют данные из сессий ETW. Данные могут быть получены из файловили в реальном режиме
Измерение производительности системы и приложений
5. Жизненный цикл работы операционной системы
Жизненный цикл работы ОС
• Основные фазы жизненного цикла операционной системы
– Загрузка
– Завершение работы
– Вход в состояние «сон» или выход из этого состояния (S3)
– Вход в состояние гибернация или выход из этого состояния (S4)
Жизненный цикл работы ОС
• Фазы включения компьютера
– Загрузка (S5)
– Выход из режима «сон» (S3)
– Выход из режима гибернация (S4)
• Включение
– Завершение создания рабочего стола пользователя
– Переход системы в состояние «простой» -завершена инициализация всех фоновых сервисов
Жизненный цикл работы ОС
• Фазы выключения компьютера– Завершение работы
– Переход в состояние «сон» (S3)
– Переход в состояние гибернация (S4)
• Выключение компьютера– Начинается с инициализации процесса
завершения работы
– Завершается выключением компьютера
Жизненный цикл работы ОС
Жизненный цикл работы ОС
• Утилита XBootMgr
Жизненный цикл работы ОСЗагрузка системы Состояние «сон»
OSLoarder
MainPathBoot
PreSMSS SMSSInit
WinLogonInit
ExplorerInit
PostBoot
SuspendApps
SuspendServices
QueryDevices
SuspendDevices
HiberfileWrite
Восстановление из состояния «сон» Завершение работы
BIOSInit
HiberfileRead
ResumeDevices
ResumeServices
ResumeApps
PostResume
ShutdownApplications
ShutdownServices
Жизненный цикл работы ОС
• Загрузка системы
– Время, требуемое для загрузки системы не только влияет на удовлетворенность пользователей, но и часто является ключевой характеристикой производительности операционной системы
OSLoader Начинается после того, как BIOS передает управление загрузчику
Завершается после передачи управления ядру ОС
MainPathBoot Начинается после загрузки ядра ОС и инициализации ETW
Завершается после создания рабочего стола
PostBoot Начинается после создания рабочего стола
Завершается, когда доступны основные ресурсы процессора и диска
Жизненный цикл работы ОС
• Загрузка системы– OSLoader
• Подписанные драйвера!
– MainPathBoot• Несколько под-фаз
• Завершение – загрузка Explorer и доступность рабочего стола
• Сервисы! – Группы, по возможности - Trigger-Start
• Расширения для Explorer!
• Приложения – Run, RunOnce, …
Жизненный цикл работы ОС
• Состояние «сон»/гибернация
SuspendApps Начинается когда пользователь инициирует переход в режим сна (S3) или гибернации (S4)
Завершается после того как последнее приложение обработало запрос на переход в состояние
сна
SuspendServices Начинается после завершения фазы SuspendApps
Завершается после того как последний сервис обработал запрос на переход в состояние сна
QueryDevices Начинается когда ядро подготовлен к переходу в состояние сна
Завершается когда последнее устройство обработало запрос на переход в состояние сна
SuspendDevices Начинается после того, как буферы всех томов сохранены на диске
Завершается после того, как последний драйвер был переведен в состояние «сон»
HiberfileWrite Данная фаза актуальна только для состояния S4 или гибридного состояния S3/S4 (по умолчанию
данное состояние поддерживается только для настольных компьютеров) и является последним
шагом перед отключением питания
Время, требующееся для завершения данной фазы, зависит от объема данных, записываемых в
файл гибернации (файл Hiberfil.sys в корне системного тома)
Жизненный цикл работы ОС
• Выход из состояния «сон»
BIOSInit Начинается когда процессор переходит в режим «power-on»
Завершается после того как BIOS передает управлением операционной системе
Данная фаза актуальна только для выхода из состояния S3
HiberfileRead Данная фаза актуальна только для выхода из состояния S4 или гибридного
состояния S3/S4 (по умолчанию данное состояние поддерживается только для
настольных компьютеров)
Время, требующееся для завершения данной фазы, зависит от объема данных,
записанных в файл гибернации (файл Hiberfil.sys в корне системного тома)
ResumeDevices Начинается после завершения фазы HiberfileRead
Выполняется асинхронное возобновление работы сервисов и приложений
PostResume «Концептуальная» фаза, начинается после завершения фазы ResumeDevices
Жизненный цикл работы ОС
• SuspendApps– Сообщение WM_POWERBROADCAST
– Реакция – 2 сек.
– В ряде случаев – отсрочка для завершении операции, сохранения данных и т.п.
• SuspendServices– Уведомление получают только сервисы,
подписанные на него
– Реакция – не регламентирована, минимальная
Жизненный цикл работы ОС
• Завершение работы системы
– Возможность отсрочки для завершения работы/сохранения данных
– Принудительное завершение приложений и сервисов
UserSessionShutdown
SystemSessionShutdown Подфаза PreShutDownNotification входит в
состав фазы SystemSessionShutdown
KernelShutdown
6. Управление питанием
Управление питанием
Управление питанием
• Инструменты
• PowerCfg– Программа командной строки для настройки
электропитания• %windir%\System32\powercfg.exe
• PwrTest– Программа командной строки для
тестирования настроек электропитания• Входит в состав Windows DDK
Управление питанием
• Список доступных схем управления питанием
– powercfg –list
• Активная схема
– powercfg -getactivescheme
• Псевдонимы и соответствующие им GUID
– powercgf –alias
• Поддержка режима «сон»
– powercfg -a
Пример
Управление питанием
• ACPI - Advanced Configuration and Power Interface
– C0 – Full power
– C1 – Low power
– C2, C3 – Low power, incremented latency
– S1 – «Легкий сон»
– S2 – «Более глубокий сон»
– S3 – «Самый глубокий сон»
– S4 – «Гибернация»
Управление питанием
• Правила для приложений
– Обработка переходов в режим «сон» и выходов из него – приложения должны корректно обрабатывать эти переходы, учитывая тот факт, что в Windows Vista не поддерживается возможность блокировки начатого процесса перехода в режим «сон»
– Временное запрещение перехода системы в режим «простой» -приложения могут временно приостановить переход системы в режим низкого энергопотребления для того, чтобы завершить такие процессы, как синхронизация данных, дефрагментация диска и т.п.
– Реакция на системные события, связанные с электропитанием –приложения должны корректно работать на мобильных платформах и, при необходимости, обрабатывать соответствующие системные события, такие, как смена настроек, источника питания и т.п.
– Поддержка мультимедийных и игровых сценариев - приложениям может потребоваться поддержка режима Away Mode – например, приостановка воспроизведения локальных мультимедийных файлов
Управление питанием
• Новые модели – Vista+– Режим Hybrid Sleep предоставляет
унифицированную реализацию команды «выключить» - в этом режиме сохраняется файл гибернации и система переходит в состояние «сон»
– Режим Away Mode – это ряд настроек реестра, при которых переход в режим Standby переводит компьютер в состояние, когда отключается монитора, заглушается аудио, фильтруется ввод с клавиатуры/мыши, система остается в рабочем состоянии
Управление питанием
• Получение информации о системе
– pwrtest.exe /info:all
– группы данных - SYSTEM_POWER_CAPABILITIES, SYSTEM_POWER_INFORMATION, SYSTEM_BATTERY_STATE, BATTERY_INFORMATION, BATTERY_STATUS
– Данные о процессоре
– Отдельные группы:
• /info:powercap, /info:powerinfo, /info:battery, /info:ppm и т.п.
Управление питанием
• Power Configuration (PowerCfg)
– Детально о схеме:
• Опция –query с указанием GUID
– Windows 7 - опция –enegry
• Проверка текущих настроек системы управления питанием
• Рекомендации по оптимизации этих настроек
Пример
Управление питанием
• События, связанные с электропитанием
• Сообщение WM_POWERBROADCASTуведомляет приложения о переходе из состояния в состояние– Система начала переход в режим сна
– Система выходит из режима сна
– Произошли изменения в настройках электропитания
– Изменился статус аккумулятора
Управление питанием
• Сообщение WM_POWERBROADCASTсодержит один из следующих типов событий, указывающих тип события, произошедшего в системе:– PBT_APMSUSPEND – это событие указывает на
то, что система переходит в режим сна. Отсылается при каждом переходе
– PBT_APMRESUMEAUTOMATIC - это событие указывает на то, что система восстанавливается из режима сна. Отсылается при каждом переходе, но не содержит информации, присутствует ли пользователь в системе
Управление питанием
• Правило:
– Приложения должны обработать сообщение PBT_APMSUSPEND в течение2 сек. Это изменение призвано увеличить производительность и время отклика системы при переходе в состояние сон. Если приложение не обработало сообщение PBT_APMSUSPEND после 2 сек., его дальнейшее выполнение будет продолжено после выхода системы из состояния сон.
Управление питанием
• Системный таймауты
– Приложения могут запретить отключение дисплея или перевод системы в состояние сна
– Функция SetThreadExecutionState()
Значение параметра EXECUTION_STATE Описание
ES_SYSTEM_REQUIRED Требуется доступность системы (отменяется переход в режим
сна)
ES_DISPLAY_REQUIRED Требуется доступность монитора (отменяется отключение
монитора)
ES_AWAY_MODE_REQUIED Требуется поддержка режима Away Mode
ES_CONTINUOUS Указывает на необходимость поддержки указанных параметров
до повторного вызова функции SetThreadExecution
State() с параметром ES_CONTINUOUS
Управление питанием
• Продление работы системы от аккумулятора– Выполните оптимизацию ваших приложений с точки зрения
производительности, руководствуясь рекомендациями, приведенными в данной книге
– Выберите наиболее оптимальную системную политику управления электропитанием и, в соответствии с измененной политикой используйте системные ресурсы
– Не выполняйте графических операций при отключенном дисплее, так как это влияет на дополнительное использование системных ресурсов
– Не изменяйте без реальной необходимости настройки системных таймеров
– Запрещайте отключение дисплея и переход системы в состояние сна только при необходимости
– Корректно обрабатывайте системные сообщения, связанные с управлением питанием
Управление питанием
• События, связанные с электропитанием• RegisterPowerSettingNotification()
– GUID_ACDC_POWER_SOURCE– GUID_POWERSCHEME_PERSONALITY– GUID_MONITOR_POWER_ON– GUID_POWER_CAPACITY_REMAINING– GUID_BACKGROUND_TASK_NOTIFICATION
• UnRegisterPowerSettingNotification()• WM_POWERBROADCAST• PBT_POWERSETTINGCHANGE
Управление питанием
• События, связанные с электропитанием– При питании от аккумулятора приложение может отложить
выполнение операций, требующих использования системных ресурсов, например, сканирование файловой системы
– При питании от сети приложение может возобновить выполнение ряда операций, например, индексацию в реальном времени
– В зависимости от типа источника питания приложение может включать/отключать отображение графики высокого разрешения
– Приложение может предупреждать пользователей о необходимости перехода на питание от сети перед выполнением таких операций, как запись на оптические носители или обновление BIOS
Управление питанием
• Тестирование приложений - PwrTest (WDK)– Автоматические переходы в состояние сна и
выходы из него
– Протоколирование вызовов функцииSetThreadExecutionState
– Отслеживание изменений в управлениипроцессором
– Исследование объема аккумулятора и оставшегося заряда
– Протоколирование вызовов функции SetThreadExecutionState
7. Платформа Windows Troubleshooting Platform
Windows Troubleshooting Platform
• Назначение: решение различных проблем
– Конфигурация операционной системы
– Конфигурация отдельных компонентов
– Конфигурация устройств, сервисов и приложений
• Модули – Troubleshooting Packs
• Могут вызываться
– Пользователями
– Приложениями
– Компонентами ОС
Windows Troubleshooting Platform
• Существенное снижение числа обращений в службу технической поддержки
• Повышение эффективности обращений
• Удовлетворенность пользователей
• Изоляция пользователей от «опасных» утилит
• Расширяемость платформы
• Простые способы распространения модулей
Windows Troubleshooting Platform
• Control Panel -> All Control Panel Items -> Troubleshooting
• Категории:
– Programs, Hardware and Sound, Network and Internet, Appearance and Personalization и System and Security
• Обновление:
– Windows Online Troubleshooting Service
Windows Troubleshooting Platform
Windows Troubleshooting Platform
• Модули - специальные приложения
• Зпаускаются под управлением Windows Troubleshooting Platform
• Модули, поставляемые в составе ОС:– %windir%\Diagnostics
– Каталог %windir%\Diagnostics\Index - XML-манифесты модулей
– Каталог %windir%\Diagnostics\System – сами модули
Windows Troubleshooting Platform
Пример
Windows Troubleshooting Platform
Windows Troubleshooting Platform
Windows Troubleshooting Platform
• Модуль:
– DiagPackage.diagpkg
– DiagPackage.dll
– Интерфейсные ресурсы
– Исходный код на PowerShell - *.ps1
Windows Troubleshooting Platform
• Модуль - серия шагов:
– Detection - Обнаружение проблемы
– Resolution - Устранение проблемы
– Verification - Проверка отсутствия проблемы
– Verification часто повторяет действия Detection
Windows Troubleshooting Platform
• Источники данных:
– Командлеты PowerShell
– Windows Management Infrastructure (WMI)
– Записи в реестре
– События Windows (Windows Events)
– COM-объекты и .NET-провайдеры
– Утилиты Windows
– Программные интерфейсы Windows
Windows Troubleshooting Platform
Windows Troubleshooting Platform
• Создание собственных модулей– Редактор: Troubleshooting Pack Builder
– %programfiles%\Microsoft SDKs\Windows\v7.0\Bin\TSPBuilder\• TSPDesigner.exe
• Обновленная версия -https://connect.microsoft.com/site919
– Подготовка:• PS> Set-ExecutionPolicy RemoteSigned
• Запустить TestModeSetup.ps1
Windows Troubleshooting Platform
Windows Troubleshooting Platform
Windows Troubleshooting Platform
Пример
Вопросы и ответы