Борьба со звуковыми сбоями в Windows 7

Добиться безупречного воспроизведения звука на ПК – задача на самом деле непростая, связанная со множеством технических ограничений, которые приходится преодолевать. В отличие от устройств, специально предназначенных для работы со звуком и видео, ПК вынужден во время воспроизведения выполнять массу сторонних задач, обусловленных наличием большого числа аппаратных и программных компонентов. Многим из вас знакомо явление внезапных сбоев при воспроизведении. В этом сообщении Кристин Карр (Kristin Carr), руководитель группы в отделе Devices and Media, расскажет об усилиях, предпринятых при разработке Windows 7 для того, чтобы избавиться от этой проблемы. Один из уроков, усвоенных мной ещё на ранней стадии разработки продукта, звучит так: мы не говорим «без сбоев», мы говорим – «устойчивый к сбоям». Надеюсь, это – важное замечание для читателей. – Стивен

Вы когда-нибудь использовали компьютер, чтобы проигрывать МР3 или DVD? Если ответ будет положительным, то вы находитесь в рядах подавляющего большинства пользователей, использующих свои ПК для воспроизведения аудио- и видео-приложений, включающих в себя всё, что угодно – от просмотра фильма и запуска игры до проигрывания роликов с YouTube. Но вам, вероятно, пришлось удостовериться, что процесс этот не лишён недостатков – возможно, у видеофрагмента выпадали кадры, а звуковая композиция «заикалась». Мы называем это «глитчем» (сбоем) – ощутимым прерыванием воспроизведения звука или изображения, нарушающим целостность восприятия медиа-контента. В этом сообщении мы рассмотрим звуковые сбои: посмотрим, какие технические трудности способствуют появлению таких сбоев и обсудим проделанную нами работу для уменьшения этого неприятного эффекта.

В чём причины сбоев?

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

Воспроизведение звука – особо чувствительная область. Для того, чтобы из динамиков зазвучала музыка, необходимо доставлять данные к оборудованию примерно каждые 10 миллисекунд, или в 30 раз быстрее, чем длится моргание. Проблема в том, что компьютер именно в это время загружен массой прочих задач, – как раз сейчас загружается ролик из YouTube или новая композиция, и для этих задач временнАя точность исполнения команд также чрезвычайно важна. Как вы догадываетесь, в действительности всё довольно просто: медленная сетевая карта или видеоадаптер отнимают массу процессорного времени – и пожалуйста, ваша музыка начинает «заедать».

Итак, что же мы предприняли для того, чтобы избежать такого рода неприятностей? Короткий ответ: «Предостаточно!», а остальное сообщения будет посвящено нижеперечисленным аспектам:

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

2. Разработка способа систематического определения и анализа сбоев

3. Широкое внедрение созданных инструментов и методов тестирования как внутри Microsoft, так и у наших партнёров по работе с Windows

4. Тесное сотрудничество с партнёрами для обнаружения, изучения и устранения сбоев

Кто сталкивается со сбоями?

При изучении этого вопроса на стадии разработки Windows 7, первостепенной задачей был сбор данных. Мы получали сообщения о сбоях, но не представляли себе истинного масштаба проблемы. Как часто пользователи слышат сбои? Происходит ли это на одних компьютерах чаще, чем на других? Задавая себе эти вопросы, мы смогли приблизиться к истинному пониманию проблемы.

Мы собирали данные с помощью встроенной в ОС инфраструктуры для телеметрии, позволяющей потребителям предоставлять Microsoft сведения о производительности и другую статистику, благодаря которой происходит процесс совершенствования Windows. Для каждого компьютера, отсылавшего информацию в Microsoft, мы определяли, сколько раз оборудование для воспроизведения звука не получало нужные ему данные (т.е. когда пользователь слышал сбой). Эти данные группировались по так называемым «сессиям», каждая из которых являлась представлением данных, собранных с определённого ПК в определённый день или данных, собранных в интервале между перезагрузками – в зависимости от того, какой период короче.

Давайте теперь взглянем на результаты. Сначала посмотрим на общий уровень сбоев:

clip_image002

Рис. 1. Количество сбоев на одну сессию

График показывает данные от пользователей, не являющихся сотрудниками Microsoft. Примерно в 80% сессий сбоев нет совсем, но в 4,3% сбоев больше 10. Это показывает, что от сбоев страдает значительное количество пользователей.

Определив, как часто происходит сбой, мы начинаем выяснять, почему он происходит. В первую очередь, мы фильтруем сведения по критерию портативный/настольный ПК:

clip_image004

Рис. 2. Вероятность сбоев в зависимости от типа ПК (портативный/настольный)

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

Следующим этапом стало определение вероятности сбоев в зависимости от изготовителя оборудования:

clip_image006

Рис 3. Вероятность сбоев в зависимости от изготовителя оборудования (Mfr)

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

Теперь мы можем посмотреть на график сбоев у широкого спектра моделей компьютеров:

clip_image008

Рис. 4. Сводная таблица всех сбойных сессий по моделям ПК

В этой таблице представлен результат исследования сессий, в ходе которых зарегистрирован хотя бы один сбой. При этом мы пытались определись корреляции между моделями и производителями оборудования, как показано в таблице (реальные названия заменены псевдонимами). Первое, на что следует обратить внимание, – на компьютере А сбои случаются в три раза чаще, чем на всех остальных ПК, представленных в таблице. Эти данные подтверждают ранние сведения о том, что на определённых ПК сбои происходят чаще обычного, и мы установили, что виновата в этом неправильно сконфигурированная видеокарта. В результате производитель изменил конфигурацию.

Эта таблица также помогает понять, насколько широко распространена проблема. Существуют сотни моделей ПК со сбоями, – практически невозможно найти модель, на которой сбоев не происходило никогда. С другой стороны, большинство потребительских компьютеров не испытывают никаких проблем. Вывод, к которому мы пришли, заключается в следующем: сбои при воспроизведении звука вызваны не определённой конфигурацией оборудования, а совокупностью оборудования, драйверов и программ, имеющихся у конкретного пользователя. Нам стало ясно, что не существует компьютеров, имеющих абсолютный иммунитет к сбоям, и для того, чтобы улучшить ситуацию, нам требуется принципиальное, системно-независимое решение проблемы.

Создание инструментария для анализа сбоев

Как только у нас появились данные о времени и причинах сбоев, команда Windows Devices & Media Performance принялась за создание универсального набора тестов, сосредоточенных вокруг воспроизведения медиа-контента и способных оценить качество исполнения сценария компьютером. Во время воспроизведения медиа-контента эти тесты многократно регистрировали статистические параметры системной производительности, включая загрузку центрального процессора, активность всех компонентов и взаимодействие между ними, и, конечно же, случаи сбоев, если они имели место. Мы намеренно задействовали широчайший спектр сценариев и конфигураций оборудования, включая мобильные ПК, работающие от аккумуляторов, оборудование под пиковой нагрузкой, сотни типов медиафайлов, и т.д. Задача состояла в том, чтобы испытать каждый ПК в различных ситуациях, характерных для пользователей, установить и исключить сбои при воспроизведении звука.

Кроме того, группа Devices & Media Performance создала инструмент с графическим интерфейсом, выделяющий сбои и активность процессора непосредственно перед и во время возникновения сбоя. Это позволило нам быстро диагностировать любую проблему, которая фиксировалась. Например, на рис. 5 можно видеть графическое представление момента возникновения сбоя. Мы также можем отобразить соответствующие измерения, сделанные в момент сбоя, чтобы точно определить момент начала подозрительного поведения оборудования.

clip_image010

Рис. 5. Пример графического представления момента сбоя и его устранения

В этом случае видны четыре сбоя (вертикальные красные линии на верхней панели). На четвёртой панели отображается активность, отбирающая более 3 мс (т.н. «долгие» ISR/DPC). На этом примере демонстрируется прямая зависимость между сбоями и долгими ISR/DPC, которые являются процедурными запросами, генерируемыми операционной системой, которые обладают потенциальной способностью затормозить процессор и вызвать сбой. Отсюда можно проследить, какие компоненты ответственны за эти запросы, чтобы снизить или избежать воздействия сбоя. Этот рисунок демонстрирует дополнительную информацию, которой мы пользовались для определения конкретных проблем, обсуждавшихся выше; впрочем, эта информация, наряду со многими другими результатами телеметрии, помогает диагностировать остальные сбои при воспроизведении медиа-контента на широком спектре оборудования.

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

Вооружённые до зубов тестами и диагностическими инструментами, мы приступаем к их установке на возможно большее число компьютеров. В рамках этого мероприятия мы участвуем в международной кампании, призванной помочь ОЕМ-производителям проверить свои ПК перед отгрузкой в торговые сети. Сотни ОЕМ-ПК были доставлены в Microsoft для работы в лабораториях, где их подвергали испытанию тысячами тестов, чтобы удостовериться в должной производительности. Это означает: если мы регистрировали сбои на определённой машине с определённой конфигурацией, то связывались с производителем и помогали устранить причины сбоев ещё до того, как покупатель увидит своё приобретение.

В ходе выполнения этих тестов и анализа их результатов были выявилены сотни потенциальных причин, способных привести к сбоям при воспроизведении звука. В некоторых случаях результат анализа мог повлечь за собой переписывание фрагментов кода Windows. В других случаях мы устанавливали, что какие-то компоненты, созданные партнёрами, могут привести к сбоям.

Сотрудничество с партнёрами

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

При этом мы стремились к тому, чтобы эффект от использования этих инструментов нашими партнёрами был максимальным. Мы сотрудничали как с ОЕМ-, так и с ODM-производителями (производителями оригинального дизайна, традиционно выполняющих сборку ПК для ОЕМ-партнёров), изготовителями оборудования и поставщиками ПО. Мы создали презентации и инструкции, подробные доклады, проводили видеоконференции и семинары. Нашей целью было максимально облегчить создание устойчивого к сбоям оборудования и программного обеспечения.

Вот перечень проводившихся мероприятий:

  • Предоставление телеметрии по сбоям партнёрам. Они прежде располагали минимальными сведениями о проблеме сбоев при воспроизведении звука. С помощью собранных данных они могут успешно диагностировать недоработки и совершенствовать свои продукты.
  • Запуск многих тысяч тестов на видео- и аудиовоспроизведение на сотнях машин, предоставленных ОЕМ-партнёрами, и передача полученных данных в их распоряжение. Оценивая работу многих компьютеров, мы смогли приблизиться к разрешению проблемы сбоев при воспроизведении звука.
  • Предоставляя инструментарий и поддержку, мы помогаем партнёрам оценить воздействие работы используемых компонентов на полностью укомплектованный компьютер и устранить возможные причины сбоев при воспроизведении звука.

Дальнейшие планы

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