Это почти наверняка связано с композитным окном рабочего стола.
Если у вас есть видео, воспроизводимое в окне веб-браузера, и, что еще хуже, в плагине, веб-браузер должен отображать свою страницу таким образом:
- Нарисуйте наши украшения окна (адресная строка, закладки, кнопки и т.д.)
- Нарисуйте первые части веб-страницы.
- Нарисуйте "черный квадрат" там, где должно быть видео, но нарисуйте соответствующие части веб-страницы по обе стороны от него (слева и справа).
- Попросите плагин красиво нарисовать в том месте, в котором он хочет, чтобы у него было окно.
- Нарисуйте остальную часть веб-страницы под окном, вниз до нижней части страницы.
- Помимо этой последовательности, менеджер окон композитинга, который отвечает за анимированные эффекты (например, когда вы минимизируете и максимизируете окна и т.д.), Должен отслеживать содержимое каждого окна на экране. Как часть этого, он должен следить за всем, что рисует внутри этого окна, включая плагин, который в Chrome является плагином вне процесса (то есть, это часть другого процесса, а не основного процесса chrome). Если менеджер окон композитинга не отслеживал это и рассматривал все в окне как "трехмерную текстуру", он не смог бы анимировать минимизацию окна на панели задач при нажатии кнопки "минус".
Когда вы указываете Flash (или Silverlight) воспроизводить видео в полноэкранном режиме, происходит следующее: Flash перестает указывать Chrome визуализировать что-либо. Фактически, весь оконный менеджер композитинга может быть временно отключен, и любой другой программе, которая может быть ответственна за рендеринг графики на монитор, временно говорят прекратить рендеринг (или, возможно, им разрешено отправлять команды рисования, но они не имеют фактический эффект на экране.)
Графический конвейер пока не полноэкранный:
Браузер и Flash/Silverlight -> менеджер окон композитинга -> графическое оборудование
Графический конвейер при полноэкранном режиме:
Flash/Silverlight -> графическое оборудование
Этот упрощенный конвейер уменьшает накладные расходы, поскольку происходит меньше "копирования" в буфере, а вся обработка видео выглядит примерно так:
- Загрузите видеоконтент из сети.
- Расшифруйте видео с помощью системы DRM.
- Используйте специальную часть графического процессора, называемую конвейером декодирования видео с фиксированной функцией, для аппаратного декодирования видеоданных в несжатый формат.
- Конвейер аппаратного декодирования видео теперь может копировать декодированное видео прямо в графический кадровый буфер и воспроизводить его - без отправки обратно в ЦП / ОЗУ!
Вентиляторы раскручиваются, и больше энергии съедается, когда видео размещается в окне именно потому, что оконный менеджер композитинга всегда говорит: «Хорошо, как видео выглядит сейчас?"и он должен быть считан обратно в ЦП (и, вероятно, помещен в буфер в ОЗУ), прежде чем менеджер окон композитинга затем решит записать его обратно на видеокарту вместе со всеми другими композитными данными (браузер, панель задач, так далее.)
Диспетчер окон композитинга должен постоянно просить, чтобы видеоконтент был возвращен обратно в ЦП, потому что при нормальных обстоятельствах единственный процесс в системе, которому разрешено записывать непосредственно в буфер кадров видео, - это диспетчер окон композитинга. Браузер, видеоплеер и все остальные компоненты в системе должны проходить через менеджер окон композитинга, например, привратник или представитель, который находится между оборудованием и пользовательским пространством.
Это частично для включения "эффектов", а частично из-за соображений безопасности и стабильности, поскольку программы не могут напрямую повредить рабочий стол (либо злонамеренно, либо из-за плохого кодирования); оконный менеджер композитинга этого не допустит. Но затем, когда оконный менеджер композитинга отключен (по запросу привилегированных программ, таких как 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 имеют аппаратно-ускоренный рендеринг и декодирование видео.