6

На днях я заметил, что при просмотре фильма на Netflix в Chrome на моем Retina MacBook Pro фанаты раскручивались быстрее, когда я просто смотрел видео на одной вкладке в обычном окне. (То есть. Не полный экран.)

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

Поэтому я использовал приложение для мониторинга батареи, чтобы измерить мАч во время просмотра в обоих режимах, и измерил около 85 мАч в оконном режиме и около 50 мАч в полноэкранном режиме.

Я еще не тестировал в других браузерах.

Монитор активности сообщает, что простое открытие Netflix на вкладке приводит к срабатыванию дискретной карты, поэтому я не думаю, что это вопрос интегрированной или дискретной графики.

Я не могу понять, почему большая область просмотра и (теоретически) видеопоток более высокого качества будут использовать меньше системных ресурсов.

3 ответа3

6

Это почти наверняка связано с композитным окном рабочего стола.

Если у вас есть видео, воспроизводимое в окне веб-браузера, и, что еще хуже, в плагине, веб-браузер должен отображать свою страницу таким образом:

  1. Нарисуйте наши украшения окна (адресная строка, закладки, кнопки и т.д.)
  2. Нарисуйте первые части веб-страницы.
  3. Нарисуйте "черный квадрат" там, где должно быть видео, но нарисуйте соответствующие части веб-страницы по обе стороны от него (слева и справа).
  4. Попросите плагин красиво нарисовать в том месте, в котором он хочет, чтобы у него было окно.
  5. Нарисуйте остальную часть веб-страницы под окном, вниз до нижней части страницы.
  6. Помимо этой последовательности, менеджер окон композитинга, который отвечает за анимированные эффекты (например, когда вы минимизируете и максимизируете окна и т.д.), Должен отслеживать содержимое каждого окна на экране. Как часть этого, он должен следить за всем, что рисует внутри этого окна, включая плагин, который в Chrome является плагином вне процесса (то есть, это часть другого процесса, а не основного процесса chrome). Если менеджер окон композитинга не отслеживал это и рассматривал все в окне как "трехмерную текстуру", он не смог бы анимировать минимизацию окна на панели задач при нажатии кнопки "минус".

Когда вы указываете Flash (или Silverlight) воспроизводить видео в полноэкранном режиме, происходит следующее: Flash перестает указывать Chrome визуализировать что-либо. Фактически, весь оконный менеджер композитинга может быть временно отключен, и любой другой программе, которая может быть ответственна за рендеринг графики на монитор, временно говорят прекратить рендеринг (или, возможно, им разрешено отправлять команды рисования, но они не имеют фактический эффект на экране.)

Графический конвейер пока не полноэкранный:

Браузер и Flash/Silverlight -> менеджер окон композитинга -> графическое оборудование

Графический конвейер при полноэкранном режиме:

Flash/Silverlight -> графическое оборудование

Этот упрощенный конвейер уменьшает накладные расходы, поскольку происходит меньше "копирования" в буфере, а вся обработка видео выглядит примерно так:

  1. Загрузите видеоконтент из сети.
  2. Расшифруйте видео с помощью системы DRM.
  3. Используйте специальную часть графического процессора, называемую конвейером декодирования видео с фиксированной функцией, для аппаратного декодирования видеоданных в несжатый формат.
  4. Конвейер аппаратного декодирования видео теперь может копировать декодированное видео прямо в графический кадровый буфер и воспроизводить его - без отправки обратно в ЦП / ОЗУ!

Вентиляторы раскручиваются, и больше энергии съедается, когда видео размещается в окне именно потому, что оконный менеджер композитинга всегда говорит: «Хорошо, как видео выглядит сейчас?"и он должен быть считан обратно в ЦП (и, вероятно, помещен в буфер в ОЗУ), прежде чем менеджер окон композитинга затем решит записать его обратно на видеокарту вместе со всеми другими композитными данными (браузер, панель задач, так далее.)

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

Это частично для включения "эффектов", а частично из-за соображений безопасности и стабильности, поскольку программы не могут напрямую повредить рабочий стол (либо злонамеренно, либо из-за плохого кодирования); оконный менеджер композитинга этого не допустит. Но затем, когда оконный менеджер композитинга отключен (по запросу привилегированных программ, таких как Flash и Silverlight), внезапно этот дополнительный уровень "накладных расходов" исчезает.

Диспетчер окон композитинга, используемый в Mac OS X, называется Quartz Compositor, и он уже давно является частью OS X. Quartz Extreme - это современное воплощение композитора Quartz, который выполняет все, что я описал выше, на самом графическом процессоре (хотя эти операции не являются "бесплатными" только потому, что они выгружаются на графический процессор; графический процессор все еще потребляет энергию, выполняя эти шаги композитинга .)

Чтобы узнать, как именно программа (например, Flash или Silverlight) может получить полноэкранный контроль и временно отключить Quartz Compositor, см. Этот документ для разработчиков Apple.

Короче говоря: Quartz Compositor + очень частые обновления экрана (от 30 до 60 раз в секунду с видео) == высокая загрузка ЦП. Удалите компонент Quartz Compositor из конвейера, и загрузка ЦП резко снизится, особенно потому, что Flash и Silverlight имеют аппаратно-ускоренный рендеринг и декодирование видео.

-1

Есть несколько возможных причин для этого.

Причина также зависит от вашего разрешения экрана и полученного разрешения Netflix.

Если вы смотрите в полноэкранном режиме и смотрите netflix в соответствующем разрешении, например, HD на мониторе HD, поток выводится прямо на экран без особых усилий.

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

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

Кроме того, в полноэкранном режиме ваш компьютер просто отображает окно просмотра. Однако в оконном режиме вы также визуализируете рабочий стол, другие окна и т.д. И т.д., Требуя дополнительной обработки / ресурсов.

Могут быть и другие причины, которые я не раскрыл.

-1

Chrome иногда приостанавливает вкладки, которые некоторое время не использовались (или еще не загружены, если вы открыли их в фоновом режиме) - возможно, создание чего-либо в полноэкранном режиме имеет тот же эффект?

Если моя догадка верна, логичным объяснением этого является то, что при просмотре чего-либо в полноэкранном режиме вы вряд ли будете переключать вкладки (возможно, вы даже не сможете). Chrome достаточно времени, чтобы выйти из полноэкранного режима и переключать вкладки, чтобы восстановить вкладки, на которые вы, скорее всего, переключитесь. Это объясняет внезапное падение энергопотребления при переключении в полноэкранный режим. Также может быть уместно отметить, что полноэкранный видеопоток часто считается отдельным окном, что означает, что сам Chrome больше не фокусируется, пока Netflix находится в полноэкранном режиме.

Возможно, вы захотите сравнить эти результаты с другими полноэкранно-совместимыми сайтами (например, YouTube) и, если возможно, с другими сайтами, которые предлагают как Silverlight, так и полноэкранный режим.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .