windows 7 и модернизация...

165
Windows 7 и модернизация приложений Алексей Федоров [email protected]

Upload: others

Post on 24-Jul-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows 7 и модернизация приложений

Алексей Федоров[email protected]

Page 2: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Цель мероприятия

• Обсудить подходы к модернизации приложений— процесс создания приложений, которые– корректно используют ресурсы операционной

системы– не нарушают ее стабильность– позволяют измерять их производительность– интегрируются с сервисами ядра системы– корректно участвуют в жизненном цикле

операционной системы– корректно работают с подсистемой электропитания– могут быть сконфигурированы с помощью новых

средств, включенных в состав операционной системы Windows 7

Page 3: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Ресурсы

Блог для компаний-разработчиков

http://blogs.technet.com/isv_team

email

[email protected]

Page 4: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Модернизация приложений

• Подробное описание технологий и инструментов

• Практические примеры

• Рекомендации

• 192 стр.!

Page 5: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Модернизация приложений

Ресурсы

www.microsorft.ru/isv/Win7_mod.aspx

• Электронная версия книги

• Дополнительные ресурсы

• Ответы на вопросы

• ...

Page 6: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Программа семинара

• 10:00– Введение– Инструменты– Обеспечение стабильности приложений– Измеряемость приложений– Измерение производительности системы и приложений

• 12:00-13:00 – Обед– Жизненный цикл работы операционной системы– Управление питанием– Платформа Windows Troubleshooting Platform

• 14:30-15:00 – Кофе– Вопросы и ответы

Page 7: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Анкета

• Просьба заполнить максимально полно!– Вопросы 1-29 – Профиль компании

• Особенно важно:– Вопросы 30, 31

– 32 – польза от семинара – заполняем в конце

– 33 – что мы еще можем рассказать?

– 34 – что еще интересует

– 35, 36 – Подумайте, прежде чем сказать «нет»

– 37 – что-то еще? Комментарии?

Page 8: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Введение

Page 9: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Новое поколение операционных систем

Совместимость

• Возможность работы приложений на новой платформе

Модернизация

• Стабильность, надежность, измеряемость, экономичность

Функциональность

• Новые функции, интеграция с ОС, новые сценарии

Page 10: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Новое поколение операционных систем

Совместимость

• Возможность работы приложений на новой платформе

Модернизация

• Стабильность, надежность, измеряемость, экономичность

Функциональность

• Новые функции, интеграция с ОС, новые сценарии

Page 11: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Совместимость и сертификация

• Первая волна мероприятий

– 8 городов

– 400+ участников

– 160+ - логотип Compatible with Windows 7

– 220+ - совместимы с Windows 7

Page 12: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

СовместимостьОбщий подход к обеспечению совместимости приложений, безизменения их кода, заключается в использовании технологии«системных заплаток» (динамически загружаемых библиотек,перехватывающих вызовы ряда системных функций операционнойсистемы), позволяющей обходить большую часть проблемсовместимости. В данном пособии рассматриваются теоретические ипрактические вопросы применения основных системных заплаток

http://download.microsoft.com/documents/rus/windows/V7IT.pdf

Несмотря на большое количество сторонних средств по обеспечению совместимости приложений, иногда наиболее простым или единственно возможным решением может оказаться модификация исходного кода приложения. В данном пособии рассматриваются основные причины несовместимости приложений с операционными системами Windows Vista и Windows 7 и приводятся практические рекомендации по их устранению на уровне изменения исходного кода.

http://download.microsoft.com/documents/rus/windows/V7DEV.pdf

Page 13: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Совместимость

• Семинар «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/

Page 14: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Сертификация

• http://blogs.technet.com/isv_team/

Page 15: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Сертификация

• http://www.microsoft.com/rus/isv/win7_logo.aspx

Page 16: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Продвижениеhttp://www.microsoft.com/rus/isv/catalog/w7Logo.aspx?filter=W7Logo

Page 17: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Новое поколение операционных систем

Совместимость

• Возможность работы приложений на новой платформе

Модернизация

• Стабильность, надежность, измеряемость, экономичность

Функциональность

• Новые функции, интеграция с ОС, новые сценарии

Page 18: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Программа семинара

• Введение• Инструменты• Обеспечение стабильности приложений• Измеряемость приложений• Измерение производительности системы и

приложений• Жизненный цикл работы операционной

системы• Управление питанием• Платформа Windows Troubleshooting Platform

Page 19: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

1. Инструменты

Page 20: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Инструменты

• Штатные средства, входящие в состав ОС

• Дополнительные средства Microsoft

• Утилиты SysInternals

Page 21: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Штатные средства

• Task Manager– Утилита для управления приложениями,

процессами и сервисами

• System Configuration– Утилита для отображения различных настроек

системы

• MSInfo32– Утилита для отображения различных сведений

о системе

Page 22: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 23: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Штатные средства

• Performance Monitor– Утилита для определения ключевых

характеристик производительности системы в реальном времени

• Resource Monitor– Утилита для определения утилизации основных

ресурсов компьютера – процессора, памяти, диска, и т.п.

• Reliability Monitor– Средство слежения за стабильностью системы

Page 24: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 25: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Штатные средства

• WinSAT

– Утилита для вычисления индекса производительности системы и ее компонентов

• PowerShell

– Среда для запуска сценариев управления компонентами системы и получения даных о системе

Page 26: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

WinSAT

• Windows System Assessment Tool)

• WinSAT = Windows System Assessment Tool

• WinEI = Windows Experience Index

Page 27: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

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)

Page 28: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

WinSAT

• Оценка индивидуальных компонентов– C:\>winsat disk –seq –read –n 0

• Оценка системы– C:\>winsat formal

• Результаты– Базовые тесты

• %WinDir%\Performance\WinSAT

– Отдельные тесты• %WinDir%\Performance\WinSAT\DataStore

Page 29: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

WinSAT

• Программные интерфейсы (COM)

– WinSATComInterfaceI.h

– WinSATAPI.dll

• %windir%\system32\WinSATAPI.dll

– WMI

• Win32_WinSAT

– PowerShell

• Get-WmiObject Win32_WinSAT

Page 30: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 31: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

PowerShell

• Получение сведений о системе– Get-Process

– Get-Service

– Get-HotFix

– Get-ComputerRestorePoint

– Get-Acl

– Get-AuthenticodeSignature

– Get-Culture

– Get-UICulture

Page 32: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

PowerShell

• Доступ к реестру– PS>sl hkcu:

– PS HKCU:\>• Dir, Get-ChildItem

– PS HKCU:\>cd software/microsoft/windows/dwm

• Доступ к счетчикам производительности– Get-Counter

– Import-Counter

– Export-Counter

Page 33: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

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

Page 34: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 35: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Дополнительные средства

• Windows Performance Toolkit– Измерение производителности системы

– Измерение производительности приложений

– Трассировка загрузки ОС, перехода ОС из состояния в состояние

– Основной инструмент настройки производительности приложений

• Windows SDK, Windows DDK

• WinDbg, Application Verifier

Page 36: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Утилиты Sysinternals

• Process Explorer: Улучшенная версия Task Manager

• Process Monitor: Трассировка работы с файлами, реестром, сетью и т.п.

• Process Dump: Создание дампа памяти процесса для последующего анализа

• http://technet.microsoft.com/en-us/sysinternals/default.aspx

или• \\live.sysinternals.com\tools

Page 37: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

2. Обеспечение стабильности приложений

Page 38: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• Утечки памяти

– Основные правила использования ресурсов системы

• Зависание приложений

– Борьба с зависанием приложений

• Системные механизмы

• Утилиты

Page 39: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• Утечки памяти

– Приложения не освобождают ранее занятую память

– Снижение производительности приложений и ОС

– Повышение использования механизма постраничной виртуализации памяти

– Приложения, работающие длительное время

– Перезагрузка приложений и самой ОС

Page 40: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• Утечки памяти

– HeapAlloc() / HeapFree()

– malloc(), new() / free() и delete()

– VirtualAlloc() / VirtualFree()

– CreateFile(), CreateEvent(), CreateThread() / CloseHandle()

– Функции USER и GDI

– Низкофрагметрированная куча – начиная с Windows Vista

Page 41: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• Утечки памяти

– Слежение

• Windows Task Manager– Колонки Memory-Commit Size, Handles, User Objects и

GDI Objects

Page 42: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 43: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• Утечки памяти

– Performance Monitor

– Resource Monitor

– Application Verifier

– Утилита UMDH (Debugging Tools for Windows) –анализ выделения областей памяти в куче

– Утилита Xperf - трассировка выделения памяти в «куче»

Page 44: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• Рекомендации– В С++ используйте «smart pointers»

– Встроенные функции компилятора - _com_ptr_t, _bstr_t, _variant_yt и т.п.

– Старайтесь не использовать несколько вариантов завершения работы функции

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

– Web – JavaScript Memory Leak Detector• IE8 отслежимает основные утечки при использовании COM-

объектов из скрипта

Page 45: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• Зависание приложений

– Вторая после сбоев приложений причина недовольства пользователей

– Пользователи готовы ждать не более 5 сек. для реакции приложения

– Задача: Обеспечение отклика приложения

– Поддержка на уровне ОС

Page 46: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• Зависание приложений– Поддержка на уровне ОС

• Сервисы Desktop Window Manager (DWM) для обработки сообщений

• Извлечение сообщений –GetMessage()/PeekMessage()

• Таймер для каждого сообщения (5 сек.)

• IsHungAppWindow()

• Window Ghosting Feature – копия изображения окна– DisableProcessWindowsGhosting()

• Интеграция с WER

Page 47: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• Зависание приложений– Поддержка возможности отмены операций

• Выполнение операций в фоновом режиме – очередь задач

– Простой код интерфейса приложения• Не вызывайте функции, которые могут заблокировать

интерфейс

– Отображение окон/диалоговых панелей только после их полного заполнения информацией• Упрощенный вариант панели + последующее

заполнение

Page 48: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• Механизмы

– Application Restart and Recovery

– Windows Error Reporting

– Kernel Transaction Manager

– Cancellable I/O

– Fault Tolerant Heap

– Application Verifier

Page 49: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

– Application Restart and Recovery• Базовая поддержка

– Корректная обработка сообщений, посылаемых ОС

• Расширенная поддержка– Использование функций Windows API для регистрации

приложений (ресурсов)– Получение уведомления о перезапуске– Сохранение данных– Перезапуск– Восстановление данных– Продолжение работы

• Доступ из управляемого кода - Windows API Code Pack for Microsoft .NET Framework– Microsoft.WindowsAPICodePack.ApplicationServices

Page 50: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 51: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

– Windows Error Reporting

• Возможность сбора информации об ошибках и сбоях

• Консолидация информации на выделенном портале

• Анализ ошибок и сбоев, частоты их появления, типов

• Включение данных о производительности

• Гибкое управление

• Базовая поддержка без изменения кода

• Программные интерфейсы– Управление содержимым отчета

– Возможность включения дополнительных данных и файлов

Page 52: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

– Kernel Transaction Manager• Возможность транзакционной работы с

– Файловой системой» TxF

– Реестром» TxR

– Увеличивает стабильность работы приложений– Компоненты

• Common Log File System (CLFS)• Взаимодействие с DTC, другими менеджерами ресурсов

– Функции• CreateFileTransacted(), CopyFileTransacted(),

MoveFileTransacted(), …• RegDeleteKeyTransacted()…

Page 53: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Диспетчер NTFSTransactional File

System (TxF)

NTFS

Запрос к файловой системе

Транзакционные сервисы (KTM)

Сервисы протоколы CLFS

Обеспечение стабильности приложений

– Kernel Transaction Manager

Page 54: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильностиприложений

• Tx = CreateTransaction()

• … выполнение операций

– CommitTransaction(Tx) или RollbackTransaction(Tx)

• CloseHandle(Tx)

Page 55: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 56: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• Cancellable I/O

– Механизм отмены операций ввода/вывода

– CancelIoEx(), CancelSynchronousIo(),

Page 57: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Cancellable I/O

http://msdn.microsoft.com/en-us/library/aa480216.aspx

Page 58: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

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

Page 59: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• 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

Page 60: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Fault Tolerant Heap

Page 61: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault 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

Page 62: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• Application Verifier

– Графический интерфейс

– Интерфейс командной строки

– COM-интерфейсы

Page 63: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• 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

Page 64: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Обеспечение стабильности приложений

• 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>

Page 65: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 66: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

3. Измеряемость приложений

Page 67: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измеряемость приложений

• Измеряемость (Instrumentation) - группа характеристик, применяемых к приложениям, которые:

– «видны» операционной системе, встроенным и дополнительным средствам измерения, мониторинга

– поддерживают сбор и публикацию данных о своей деятельности

– интегрируются с соответствующими механизмами на уровне ядра операционной системы

Page 68: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измеряемость приложений

• Сценарии

– Диагностика проблем, отладка, управлениеприложениями

– Измерение производительности приложений

– Получение характеристик работы системы и приложений

• Подсистема Event Tracing for Windows(ETW)

Page 69: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измеряемость приложений

• Основные механизмы– Счетчики производительности

• Измерение производительности компонентов системы или приложений

• В реальном времени, в протоколе

– События• Уведомления• Сообщения об ошибках/предупреждения

– Отличия– Счетчики отвечают на вопрос «что происходит»

• Анализ в реальном времени

– События отвечают на вопрос «что происходило»• Используются для констатации факта• В реальном времени – связь события с задачей

Page 70: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Счетчики производительности

• Поддерживаются на уровне инфраструктуры ядра операционной системы

• Позволяют хранить числовую информацию, сгруппированную в категории, счетчики, экземпляры.

• Важно: кто потребитель?

– Администратор или разработчик?

Page 71: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Счетчики производительности

• Основные категории счетчиков: – Cache, Memory, Objects, Paging File, Processor,

System, FullImage, Image, JobObject, JobObjectDetails, Process, ProcessAddressSpace, Thread, ThreadDetails, LogicalDisk, PhysicalDisk и т.п.

– Локализация названий

Page 72: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Счетчики производительности

• Новые системные счетчики в 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

Page 73: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Счетчики производительности

• Утилита TypePerf– Информация о существующих счетчиках

– Получение данных из счетчиков

– Операции со счетчиками

• Счетчики в группе «Processor»– c:\>typeperf –qx Processor

• Получение данных из счетчика– c:\>typeperf "\Processor(_Total)\% Processor

Time"

Page 74: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Счетчики производительности

• Счетчики уровня ядра (Kernel Mode)

– Создание и заполнение - системные компоненты

– PcwRegister(), PcwCreateInstance()

• Счетчики уровня User (User Mode)

– Приложения

– PerfSet*(), PerfIncrement*()

– System.Diagnostics.PerformanceData

Page 75: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Счетчики производительности

• Доступ к данным

– Неуправляемый код

– Управляемый код

– PowerShell

– Performance Monitor (perfmon)

Page 76: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Счетчики производительности

• PowerShell

– Получение списка счетчиков

• Get-Counter -listSet * | Select-Object -ExpandPropertyPaths

– Получения значений отдельного счетчика

• Get-Counter “\Processor(0)\% Processor Time”

Page 77: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 78: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Счетчики производительности

• Процесс создания

– Создание манифеста (XML-файла)

– Использование утилиты ctrpp.exe для генерации кода

– Добавление в приложение кода для генерации данных

– На каждом компьютере запустить утилиту lodctr.exe для «установки» счетчиков

Page 79: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Счетчики производительности

• Поставка и потребление

Page 80: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Счетчики производительности

• Создание собственных счетчиков

– Дизайн счетчиков

– Задание метаданных для счетчиков

– Генерация кода и ресурсов

– Изменения в исходном коде приложения для поставки данных счетчикам

– Проверка правильности работы счетчиков

Page 81: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Счетчики производительности

• Создание собственных счетчиков

Утилита Доступность Описание

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

Средство для удаления манифестов счетчиков

производительности

Page 82: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

События

• Возможность отображения в системном журнале ключевую информацию о приложениях

• События могут использоваться для– получения данных о том, что происходит с

приложениями

– решения проблем, связанных с их эксплуатацией

– диагностики

– управления приложениями

– в ряде других сценариев...

Page 83: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

События

• Событийная подсистема

– Поставщик (Event Provider)

• Генератор событий

– Инфраструктура Event Tracing for Windows (ETW)

• Доставка событий в журнал

– Системный журнал (Event Log)

– Потребители

Page 84: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

События

• Утилита Windows Events Command Line Utility– Список всех журналов

• wevtutil el

– Информация о системном журнале в XMLформате• wevtutil gl System /f:xml

– Информация о поставщике Microsoft-Windows-Eventlog• wevtutil gp Microsoft-Windows-Eventlog /ge:true

Page 85: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

События

• Основные потребители

– Event Viewer, Trace Report, Windows Performance Analyzer

– PowerShell

– Программные интерфейсы

Page 86: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 87: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

События

• Создание собственных событий– Новый провайдер

– Канал

– Событие• InType/OutType

• Level

– Генерация кода

– Компиляция ресурсов

– Изменения в коде приложения

– Регистрация провайдера

Page 88: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

События

• Создание собственных событий

Утилита Доступность Описание

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

Средство для просмотра событий, находящихся

в системном журнале

Page 89: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

4. Измерение производительности системы и приложений

Page 90: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• Сценарии:– Получение детальной информации об

использовании ресурсов системы• процессора, диска, памяти, сети и т.п.

– Нахождение проблем, связанных с:• Повышенной утилизацией ресурсов,

• Утечкой ресурсов

• Задержками в реакции системы, сервисов, процессов и приложений на системные запросы

• Эффективным использованием подсистемы питания

Page 91: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• Инструменты:

– 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

Page 92: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• XPerf и XPerfView

Page 93: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• Список провайдеров– 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

Page 94: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• Обработка данных

– C:\>xperf –d trace.etl

• Windows Performance Analyzer

• Отображение данных

– C:\>xperf trace.etl или C:\>xperfview trace.etl

• Важно: сбор данных для их последующего анализа

Page 95: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• Конфигурация системы

– C:\> xperf –i trace.etl –a sysconfig

– C:\> xperf –i trace.etl –a sysconfig>c:\analysis\sysconfig.txt

– В Windows Performance Analyzer

• Trace | System Configuration

– Позволяет узнать характеристики системы, на которой выполнялся сбор данных

Page 96: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• Визуализация стека

• Необходимо:

– Отладочные символы для системы (PDB-файлы)

– Отладочные символы для анализируемых компонентов

– C:\>set _NT_SYMBOL_PATH=...

– C:\>xperf –on PROC_THREAD+LOADER+INTERRUPT+DPC+PROFILE

– –stackwalk profile

Page 97: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• Визуализация стека

• График CPU Sampling by Process

– Load Symbols

– Summary Table

– «Callers»|«Callees»

– «Innermost» | «Outermost»

– Колонка %Weight

Page 98: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

Page 99: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• Жизненный цикл процесса

• Флаги PROC_THREAD+LOADER

• События

– Create, Delete, Start Rundown, End Rundown и образами - Load, Unload, Start Rundown, End Rundown

• C:\> xperf -i имя_файла.etl -a tracestats -detail

Page 100: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• Анализ приложений– Определим приложение, которые вызывает

повышенную активность при работе с диском. Периодические операции с диском не позволяют снизить его скорость и влияют на потребление энергии всей системой

– В среднем, разница в энергопотреблении между диском, работающим «в полную силу» и с пониженной скоростью составляет порядка 1 Вт.

Page 101: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

Page 102: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

Page 103: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• Определим, какие приложения отвечают за повышенное потребление ресурсов центрального процессора

• Даже небольшие изменения в использовании ресурсов процессора приводят к существенному увеличению потребления энергии – например, 10% увеличение в использовании процессора приводит к увеличению потребления на 2 Вт.

Page 104: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

Page 105: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

Page 106: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

Page 107: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• Узнаем, какие приложения используют ресурсы процессора

Page 108: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

Page 109: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• C:\>xperf -help

• C:\>xperf –help providers

• C:\>logman query providers

Page 110: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• Утилита 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

Page 111: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

Page 112: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

• Подсистема Event Tracing For Windows– 4 ключевых компонента:

• Провайдеры – компоненты, которые генерируют события используя функцию EventWrite()

• Сессии – объекты уровня Kernel, которые собирают события в буферы и посылают эти события в файл или непосредственно в приложение

• Контроллеры – программы, которые создают сессии и управляют ими и соответствующими провайдерами –управление провайдерами состоит в разрешении/запрете событий или групп событий

• Потребители – программы, которые потребляют данные из сессий ETW. Данные могут быть получены из файловили в реальном режиме

Page 113: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Измерение производительности системы и приложений

Page 114: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

5. Жизненный цикл работы операционной системы

Page 115: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Жизненный цикл работы ОС

• Основные фазы жизненного цикла операционной системы

– Загрузка

– Завершение работы

– Вход в состояние «сон» или выход из этого состояния (S3)

– Вход в состояние гибернация или выход из этого состояния (S4)

Page 116: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Жизненный цикл работы ОС

• Фазы включения компьютера

– Загрузка (S5)

– Выход из режима «сон» (S3)

– Выход из режима гибернация (S4)

• Включение

– Завершение создания рабочего стола пользователя

– Переход системы в состояние «простой» -завершена инициализация всех фоновых сервисов

Page 117: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Жизненный цикл работы ОС

• Фазы выключения компьютера– Завершение работы

– Переход в состояние «сон» (S3)

– Переход в состояние гибернация (S4)

• Выключение компьютера– Начинается с инициализации процесса

завершения работы

– Завершается выключением компьютера

Page 118: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Жизненный цикл работы ОС

Page 119: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Жизненный цикл работы ОС

• Утилита XBootMgr

Page 120: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Жизненный цикл работы ОСЗагрузка системы Состояние «сон»

OSLoarder

MainPathBoot

PreSMSS SMSSInit

WinLogonInit

ExplorerInit

PostBoot

SuspendApps

SuspendServices

QueryDevices

SuspendDevices

HiberfileWrite

Восстановление из состояния «сон» Завершение работы

BIOSInit

HiberfileRead

ResumeDevices

ResumeServices

ResumeApps

PostResume

ShutdownApplications

ShutdownServices

Page 121: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Жизненный цикл работы ОС

• Загрузка системы

– Время, требуемое для загрузки системы не только влияет на удовлетворенность пользователей, но и часто является ключевой характеристикой производительности операционной системы

OSLoader Начинается после того, как BIOS передает управление загрузчику

Завершается после передачи управления ядру ОС

MainPathBoot Начинается после загрузки ядра ОС и инициализации ETW

Завершается после создания рабочего стола

PostBoot Начинается после создания рабочего стола

Завершается, когда доступны основные ресурсы процессора и диска

Page 122: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Жизненный цикл работы ОС

• Загрузка системы– OSLoader

• Подписанные драйвера!

– MainPathBoot• Несколько под-фаз

• Завершение – загрузка Explorer и доступность рабочего стола

• Сервисы! – Группы, по возможности - Trigger-Start

• Расширения для Explorer!

• Приложения – Run, RunOnce, …

Page 123: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Жизненный цикл работы ОС

• Состояние «сон»/гибернация

SuspendApps Начинается когда пользователь инициирует переход в режим сна (S3) или гибернации (S4)

Завершается после того как последнее приложение обработало запрос на переход в состояние

сна

SuspendServices Начинается после завершения фазы SuspendApps

Завершается после того как последний сервис обработал запрос на переход в состояние сна

QueryDevices Начинается когда ядро подготовлен к переходу в состояние сна

Завершается когда последнее устройство обработало запрос на переход в состояние сна

SuspendDevices Начинается после того, как буферы всех томов сохранены на диске

Завершается после того, как последний драйвер был переведен в состояние «сон»

HiberfileWrite Данная фаза актуальна только для состояния S4 или гибридного состояния S3/S4 (по умолчанию

данное состояние поддерживается только для настольных компьютеров) и является последним

шагом перед отключением питания

Время, требующееся для завершения данной фазы, зависит от объема данных, записываемых в

файл гибернации (файл Hiberfil.sys в корне системного тома)

Page 124: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Жизненный цикл работы ОС

• Выход из состояния «сон»

BIOSInit Начинается когда процессор переходит в режим «power-on»

Завершается после того как BIOS передает управлением операционной системе

Данная фаза актуальна только для выхода из состояния S3

HiberfileRead Данная фаза актуальна только для выхода из состояния S4 или гибридного

состояния S3/S4 (по умолчанию данное состояние поддерживается только для

настольных компьютеров)

Время, требующееся для завершения данной фазы, зависит от объема данных,

записанных в файл гибернации (файл Hiberfil.sys в корне системного тома)

ResumeDevices Начинается после завершения фазы HiberfileRead

Выполняется асинхронное возобновление работы сервисов и приложений

PostResume «Концептуальная» фаза, начинается после завершения фазы ResumeDevices

Page 125: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Жизненный цикл работы ОС

• SuspendApps– Сообщение WM_POWERBROADCAST

– Реакция – 2 сек.

– В ряде случаев – отсрочка для завершении операции, сохранения данных и т.п.

• SuspendServices– Уведомление получают только сервисы,

подписанные на него

– Реакция – не регламентирована, минимальная

Page 126: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Жизненный цикл работы ОС

• Завершение работы системы

– Возможность отсрочки для завершения работы/сохранения данных

– Принудительное завершение приложений и сервисов

UserSessionShutdown

SystemSessionShutdown Подфаза PreShutDownNotification входит в

состав фазы SystemSessionShutdown

KernelShutdown

Page 127: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

6. Управление питанием

Page 128: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

Page 129: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• Инструменты

• PowerCfg– Программа командной строки для настройки

электропитания• %windir%\System32\powercfg.exe

• PwrTest– Программа командной строки для

тестирования настроек электропитания• Входит в состав Windows DDK

Page 130: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• Список доступных схем управления питанием

– powercfg –list

• Активная схема

– powercfg -getactivescheme

• Псевдонимы и соответствующие им GUID

– powercgf –alias

• Поддержка режима «сон»

– powercfg -a

Page 131: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 132: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• ACPI - Advanced Configuration and Power Interface

– C0 – Full power

– C1 – Low power

– C2, C3 – Low power, incremented latency

– S1 – «Легкий сон»

– S2 – «Более глубокий сон»

– S3 – «Самый глубокий сон»

– S4 – «Гибернация»

Page 133: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• Правила для приложений

– Обработка переходов в режим «сон» и выходов из него – приложения должны корректно обрабатывать эти переходы, учитывая тот факт, что в Windows Vista не поддерживается возможность блокировки начатого процесса перехода в режим «сон»

– Временное запрещение перехода системы в режим «простой» -приложения могут временно приостановить переход системы в режим низкого энергопотребления для того, чтобы завершить такие процессы, как синхронизация данных, дефрагментация диска и т.п.

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

– Поддержка мультимедийных и игровых сценариев - приложениям может потребоваться поддержка режима Away Mode – например, приостановка воспроизведения локальных мультимедийных файлов

Page 134: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• Новые модели – Vista+– Режим Hybrid Sleep предоставляет

унифицированную реализацию команды «выключить» - в этом режиме сохраняется файл гибернации и система переходит в состояние «сон»

– Режим Away Mode – это ряд настроек реестра, при которых переход в режим Standby переводит компьютер в состояние, когда отключается монитора, заглушается аудио, фильтруется ввод с клавиатуры/мыши, система остается в рабочем состоянии

Page 135: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• Получение информации о системе

– 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 и т.п.

Page 136: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• Power Configuration (PowerCfg)

– Детально о схеме:

• Опция –query с указанием GUID

– Windows 7 - опция –enegry

• Проверка текущих настроек системы управления питанием

• Рекомендации по оптимизации этих настроек

Page 137: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 138: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• События, связанные с электропитанием

• Сообщение WM_POWERBROADCASTуведомляет приложения о переходе из состояния в состояние– Система начала переход в режим сна

– Система выходит из режима сна

– Произошли изменения в настройках электропитания

– Изменился статус аккумулятора

Page 139: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• Сообщение WM_POWERBROADCASTсодержит один из следующих типов событий, указывающих тип события, произошедшего в системе:– PBT_APMSUSPEND – это событие указывает на

то, что система переходит в режим сна. Отсылается при каждом переходе

– PBT_APMRESUMEAUTOMATIC - это событие указывает на то, что система восстанавливается из режима сна. Отсылается при каждом переходе, но не содержит информации, присутствует ли пользователь в системе

Page 140: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• Правило:

– Приложения должны обработать сообщение PBT_APMSUSPEND в течение2 сек. Это изменение призвано увеличить производительность и время отклика системы при переходе в состояние сон. Если приложение не обработало сообщение PBT_APMSUSPEND после 2 сек., его дальнейшее выполнение будет продолжено после выхода системы из состояния сон.

Page 141: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• Системный таймауты

– Приложения могут запретить отключение дисплея или перевод системы в состояние сна

– Функция SetThreadExecutionState()

Значение параметра EXECUTION_STATE Описание

ES_SYSTEM_REQUIRED Требуется доступность системы (отменяется переход в режим

сна)

ES_DISPLAY_REQUIRED Требуется доступность монитора (отменяется отключение

монитора)

ES_AWAY_MODE_REQUIED Требуется поддержка режима Away Mode

ES_CONTINUOUS Указывает на необходимость поддержки указанных параметров

до повторного вызова функции SetThreadExecution

State() с параметром ES_CONTINUOUS

Page 142: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• Продление работы системы от аккумулятора– Выполните оптимизацию ваших приложений с точки зрения

производительности, руководствуясь рекомендациями, приведенными в данной книге

– Выберите наиболее оптимальную системную политику управления электропитанием и, в соответствии с измененной политикой используйте системные ресурсы

– Не выполняйте графических операций при отключенном дисплее, так как это влияет на дополнительное использование системных ресурсов

– Не изменяйте без реальной необходимости настройки системных таймеров

– Запрещайте отключение дисплея и переход системы в состояние сна только при необходимости

– Корректно обрабатывайте системные сообщения, связанные с управлением питанием

Page 143: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• События, связанные с электропитанием• 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

Page 144: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• События, связанные с электропитанием– При питании от аккумулятора приложение может отложить

выполнение операций, требующих использования системных ресурсов, например, сканирование файловой системы

– При питании от сети приложение может возобновить выполнение ряда операций, например, индексацию в реальном времени

– В зависимости от типа источника питания приложение может включать/отключать отображение графики высокого разрешения

– Приложение может предупреждать пользователей о необходимости перехода на питание от сети перед выполнением таких операций, как запись на оптические носители или обновление BIOS

Page 145: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Управление питанием

• Тестирование приложений - PwrTest (WDK)– Автоматические переходы в состояние сна и

выходы из него

– Протоколирование вызовов функцииSetThreadExecutionState

– Отслеживание изменений в управлениипроцессором

– Исследование объема аккумулятора и оставшегося заряда

– Протоколирование вызовов функции SetThreadExecutionState

Page 146: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

7. Платформа Windows Troubleshooting Platform

Page 147: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

• Назначение: решение различных проблем

– Конфигурация операционной системы

– Конфигурация отдельных компонентов

– Конфигурация устройств, сервисов и приложений

• Модули – Troubleshooting Packs

• Могут вызываться

– Пользователями

– Приложениями

– Компонентами ОС

Page 148: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

• Существенное снижение числа обращений в службу технической поддержки

• Повышение эффективности обращений

• Удовлетворенность пользователей

• Изоляция пользователей от «опасных» утилит

• Расширяемость платформы

• Простые способы распространения модулей

Page 149: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

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

Page 150: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

Page 151: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

• Модули - специальные приложения

• Зпаускаются под управлением Windows Troubleshooting Platform

• Модули, поставляемые в составе ОС:– %windir%\Diagnostics

– Каталог %windir%\Diagnostics\Index - XML-манифесты модулей

– Каталог %windir%\Diagnostics\System – сами модули

Page 152: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

Page 153: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 154: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

Page 155: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

Page 156: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

• Модуль:

– DiagPackage.diagpkg

– DiagPackage.dll

– Интерфейсные ресурсы

– Исходный код на PowerShell - *.ps1

Page 157: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

• Модуль - серия шагов:

– Detection - Обнаружение проблемы

– Resolution - Устранение проблемы

– Verification - Проверка отсутствия проблемы

– Verification часто повторяет действия Detection

Page 158: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

• Источники данных:

– Командлеты PowerShell

– Windows Management Infrastructure (WMI)

– Записи в реестре

– События Windows (Windows Events)

– COM-объекты и .NET-провайдеры

– Утилиты Windows

– Программные интерфейсы Windows

Page 159: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

Page 160: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

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

Page 161: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

Page 162: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

Page 163: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Windows Troubleshooting Platform

Page 164: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Пример

Page 165: Windows 7 и модернизация приложенийdownload.microsoft.com/documents/rus/isv/W7_App_Mod.pdfFault Tolerant Heap •Устойчивая к сбоям «куча»

Вопросы и ответы

[email protected]