470 likes | 627 Views
Производительность и энергопотребление мобильных приложений. Владимир Колесников. Microsoft @vladkol , vladkol@microsoft.com. Производительность и энергопотребление. Общая архитектура системы Потоковая модель Многозадачность Состояние Потребители. Архитектура.
E N D
Производительность и энергопотребление мобильных приложений Владимир Колесников Microsoft @vladkol, vladkol@microsoft.com
Производительность и энергопотребление Общая архитектура системы Потоковая модель Многозадачность Состояние Потребители
Архитектура с высоты птичьего полёта Cloud Integration Services App Model UI Model Software Architecture Hardware Foundation
Cloud Integration Services App Model UI Model Software Architecture Hardware Foundation
Железо Capacitive touch 4 or more contact points 800 Sensors A-GPS, Accelerometer, Compass, Light, Proximity, Gyro Camera 5 mega pixels or more Multimedia Common detailed specs, Codec acceleration Memory 256MB RAM or more, 8GB Flash or more GPU DirectX 9 acceleration CPU Qualcomm MSM7x30, MSM8x55 800Mhz or higher Hardware buttons | Back, Start, Search 480
Cloud Integration Services App Model UI Model Software Architecture Hardware Foundation
Архитектура подсистемы приложений Applications Your App UI and logic Frameworks HTML5/JavaScript Silverlight and XNA User data Structured data CLR App Model UI Model Cloud Integration App management Licensing Chamber isolation Software updatesData sharing Shell frame Session manager Direct3D Compositor Xbox LIVE Bing Location Push notifications Windows Live ID Kernel Hardware BSP Security Networking Storage A-GPS Accelerometer Gyro Compass Light Proximity Media Wi-Fi Radio Graphics Hardware Foundation
Платформа приложений - Framework Windows Phone Frameworks Launchers & Choosers Windows Phone Controls Camera Device Integration MultiTasking Structured Data PhoneApplicationFrame PhoneApplicationPage PushNotification WebBrowserControl Sensors Silverlight Presentation and Media XNA Frameworks for Games Controls Drawing IsolatedStorage Drawing GamerServices Silverlight Integration Silverlight 4.0 Media Graphics Shapes Markup Navigation Media Audio Content Input Application Object Common Base Class Library Globalization Resources Reflection Location Text IO Runtime Diagnostics Net Sockets Configuration Collections Security Threading ComponentModel ServiceModel Linq
Модель среды исполнения App Domain Silverlight Application Object XNA Game Object AGENT Frameworks Silverlight XNA HTML5/JavaScript Хост-процесс для приложений CLR App Model Host App Model UI Model Cloud Integration «Песочница» для каждого приложения A-GPS Accelerometer Gyro Compass Light Proximity Media Wi-Fi Radio Graphics Xbox LIVE Bing Location Push notifications Windows Live ID App management Licensing Chamber isolation Software updates Shell frame Session manager Direct3D Compositor • Каждое приложение работает в изолированной среде Kernel Hardware BSP Security Networking Storage • Весь код – managed, что позволяет легко верифицировать – первый заслон для аттак Hardware Foundation • Framework отвечает за взаимодействияс app-моделью, UI-моделью и «телефоном»
Контентно-ориентированная модель: проблемы Your Web Service Custom Web Service Existing Web Services Location Service Microsoft Services phone storage hardware Notification Service
Как это работает app storage Web Service sync agent power monitor resource manager task scheduler connection manager
Структурированное хранилище (БД) и ввод/вывод app folder hardware
Структурированное хранилище в Mango Web Service app agent RO LINQ RW app folder hardware
Приложения и изоляция данных телефона
Mango: запросы к данным телефона RO LINQ RW Data Sharing Surface app folder phone storage process boundary
Perceptionis reality Photo by andrewarchy
Что такое мультизадачность • Красивый UI • Используйте телефон по максимуму • Не заставляйте меня ждать - +
Подходы к многозадачности • «Честная» и прожорливая • Работаем, пока можем • Система сложных правил выгрузки приложений Desktop, Windows Mobile, Android • Мнимая и экономная • Приложение выгружается при деактивации UI • Ключевой фактор – сохранение состояния Ранние iPhone, Windows Phone 7
Подходы к многозадачности • Умная • Похожа на мнимую • Фоновые агенты iPhone 4, Windows Phone codename “Mango” • Возможны уведомления из агентов в приложения
Мультизадачность в Windows Phone Мультизадачность Быстрое переключение Быстрое восстановление
Жизненный цикл Загружено иливосстановлено Приложение в памяти, ресурсы «отключены», потоки приостановлены Tombstoned Автоматическое сохранение состояния
Что могут Background Agents Нельзя Можно • Tiles • Toast • Местоположение • Сеть • Файлы • БД • Аудио (через спец. агентов) • … • Показывать UI • XNA • Микрофон и камера • Сенсоры
Сохраняем UX удобным • Плавность • 60 кадров в секунду • Качественное воспроизведение сложного медиа • Hardware-акселерация • Минимизация деградации производительности со временем • Изоляция и меры по экономии батареи • Управление состоянием • Память и процессор
Важно: система знает, как устроен UI Страница Визуальное состояние Данные страницы и приложения, навигация Состояние данных Навигационный стек, данные страницы и приложения сохраняются для быстрого восстановления
Потоковая модель на десктопах layout input rasterize binding animations OS interop User Interface Thread parsing networking dispatch dispatch Background Thread
Текущая потоковая модель Windows Phone composite onto back buffer primitive animations Compositor Thread touch rasterize binding OS interop layout User Interface Thread parsing networking dispatch dispatch Background Thread
Windows Phone codename “Mango” touch composite onto back buffer primitive animations Compositor Thread rasterize binding OS interop layout User Interface Thread parsing networking dispatch dispatch Background Thread
Сохраняем UX удобным: CPU вWP7 idle idle Qualcomm Snapdragon: 1GHz
Сохраняем UX удобным: CPU вMango idle Qualcomm Snapdragon: 800MHz-1GHz
Сохраняем UX удобным: память вWP7 Навигационный стек Файловый кэш Периодика Приложения Память Рекомендуется 90MB OS foreground idle Минимум памяти: 256MB
Сохраняем UX удобным: память вMango Приложения Навигационный стек Файловый кэш Периодика Приложения Память 90MB минимум OS spare foreground выгружаютсяпо запросу Минимум памяти: 256MB
Достигаем баланса через агентов UI instance abstract class BackgroundAgent { virtual void Invoke(uri, parameters) virtual void OnCancel() void NotifyComplete() void Abort() } Затраты 10% CPU RAM: 5MB Пониженное энергопотребление Затраты 90% CPU RAM: 90MB Энергоемки agent instance app logic app logic Одна «песочница» Отдельные хост-процессы
Аудио-агенты audio audio audio Zune media service Zune media service Zune media service reserved Память OS audio foreground
Generic-агенты on AC periodic periodic audio audio audio Zune media service Zune media service Zune media service Resource manager Resource manager Память on AC on AC OS audio periodic periodic foreground
«Дремлющие» приложения on AC periodic audio Zune media service Resource manager Память on AC on AC OS audio periodic periodic foreground dormant dormant
Агенты передачи данных Background transfers Background transfers Background transfers Resource manager memory Background transfers OS foreground
Тестирование приложенийruwp7dev@microsoft.com • От вас: • Название и описание приложения • Скриншоты • Видео работы в эмуляторе • От нас • Устройство на 1-2 недели • Поддержка в публикации приложения
DevCon11– крупнейшая конференция по разработке ПО • DevCon11– крупнейшая конференция по разработке ПО, проводимая Microsoft вРоссии. • Основные темы конференции DevCon11: • Облачные вычисления • Мобильная разработка • Веб-разработка • Разработка настольных приложений • Корпоративная разработка • Работа с данными • Будущее языков программирования • Построение Интернет-бизнеса • Лучшие докладчики Microsoft: • Нил Лесли • Тим О’Брайн • Евгений Чигиринский • Максим Гольдин • Дмитрий Артёмов Телемост со Скоттом Гатри – Вице-президентом по платформе разработки Microsoft и одним основателей .NET 26-27 мая 2011 года, Подмосковье www.msdevcon.ru