Warum arbeitet Netflix im Vollbildmodus besser (effizienter)?


6

Neulich ist mir aufgefallen, dass sich die Fans beim Ansehen eines Films auf Netflix in Chrome auf meinem Retina MacBook Pro schneller drehten, als ich das Video in einem einzigen Tab in einem normalen Fenster ansah. (dh nicht im Vollbildmodus.)

Wenn Sie innerhalb einer Minute in den Vollbildmodus wechseln, werden die Lüfter leiser.

Daher habe ich eine Batteriemonitor-App verwendet, um den mAh-Wert beim Betrachten in beiden Modi zu messen. Im Fenstermodus wurden ca. 85 mAh und im Vollbildmodus ca. 50 mAh gemessen.

Ich habe noch nicht in anderen Browsern getestet.

Der Aktivitätsmonitor meldet, dass das Öffnen von Netflix in einem Tab dazu führt, dass die diskrete Karte aktiviert wird. Ich denke also nicht, dass es sich um integrierte oder diskrete Grafiken handelt.

Ich kann anscheinend nicht feststellen, warum ein größerer Anzeigebereich und (theoretisch) ein Videostream mit höherer Qualität weniger Systemressourcen verbrauchen.

Antworten:


6

Es hat mit ziemlicher Sicherheit mit dem Desktop Window Compositor zu tun.

Wenn Sie ein Video in einem Webbrowser-Fenster abspielen, und schlimmer noch, in einem Plugin , muss der Webbrowser seine Seite folgendermaßen rendern:

  1. Zeichnen Sie unsere Fensterdekorationen (Adressleiste, Lesezeichen, Schaltflächen usw.)
  2. Zeichnen Sie die ersten Teile der Webseite.
  3. Zeichne ein "schwarzes Quadrat", in dem sich das Video befinden soll, aber zeichne die relevanten Teile der Webseite auf beiden Seiten (links und rechts).
  4. Bitten Sie das Plugin, an der Stelle zu zeichnen, an der es sein Fenster haben möchte.
  5. Zeichnen Sie den Rest der Webseite unterhalb des Fensters bis zum Ende der Seite.
  6. Darüber hinaus muss der Compositing-Fenstermanager, der für die animierten Effekte verantwortlich ist (z. B. beim Minimieren und Maximieren von Fenstern usw.), den Inhalt jedes Fensters auf dem Bildschirm verfolgen. Als Teil davon muss es alles verfolgen, was in diesem Fenster gezeichnet wird, einschließlich des Plugins, das in Chrome ein Out-of-Process- Plugin ist (das heißt, es ist Teil eines anderen Prozesses, nicht des Chrome-Hauptprozesses). Wenn der Compositing-Fenstermanager dies nicht im Auge behalten und alles im Fenster als "3D-Textur" behandeln würde, wäre es nicht möglich, die Minimierung eines Fensters in Ihrer Taskleiste zu animieren, wenn Sie auf die Minus-Schaltfläche klicken.

Wenn Sie Flash (oder Silverlight) anweisen, das Video im Vollbildmodus abzuspielen, sagt Flash Chrome nicht mehr, dass etwas gerendert werden soll. Tatsächlich kann der gesamte Compositing-Fenstermanager vorübergehend deaktiviert werden, und jedes andere Programm, das möglicherweise für das Rendern von Grafiken auf dem Monitor verantwortlich ist, wird vorübergehend angewiesen, das Rendern zu beenden (oder sie dürfen möglicherweise Zeichnungsbefehle übermitteln, haben jedoch keine Effekt auf dem Bildschirm.)

Grafik-Pipeline ohne Vollbild:

Browser und Flash / Silverlight -> Compositing Window Manager -> Grafikhardware

Grafik-Pipeline im Vollbildmodus:

Flash / Silverlight -> Grafikhardware

Diese vereinfachte Pipeline reduziert den Overhead, da weniger Puffer "kopiert" wird und die gesamte Videoverarbeitung ungefähr so ​​aussieht:

  1. Laden Sie den Videoinhalt aus dem Netzwerk herunter.
  2. Entschlüsseln Sie das Video mit dem DRM-System.
  3. Verwenden Sie einen speziellen Teil der GPU, die sogenannte Videodekodierungspipeline mit festen Funktionen, um die Hardwaredekodierung der Videodaten in ein nicht komprimiertes Format durchzuführen .
  4. Die Hardware-Videodekodierungs-Pipeline kann das dekodierte Video jetzt direkt in den Grafik-Framebuffer kopieren und wiedergeben - ohne es an die CPU / RAM zurückzusenden!

Die Fans drehen sich und es wird mehr Energie verbraucht, wenn das Video mit Fenstern versehen wird, gerade weil der Compositing-Fenstermanager immer sagt: "OK, wie sieht das Video gerade aus?" und es ist zu lesen wieder in die CPU (und wahrscheinlich gepuffert in RAM) , bevor das Compositing Window Manager entscheidet dann, es zu schreiben direkt zurück an die Grafikkarte, zusammen mit all den anderen Compositing - Daten (Browser, die Taskleiste, etc. .)

Das Compositing Window Manager hat für den Videoinhalt zu fragen zu halten , um die CPU zu übertragen zurück , weil unter normalen Umständen der einzige Prozess auf dem System , das zu schreiben ist erlaubt direkt zu dem Video - Framebuffer ist das Compositing Window Manager. Der Browser, der Videoplayer und alle anderen Komponenten des Systems müssen den Compositing-Fenstermanager wie einen Gatekeeper oder Sprecher durchlaufen, der sich zwischen der Hardware und dem Benutzerbereich befindet.

Dies dient zum Teil der Aktivierung von "Effekten" und zum Teil aus Sicherheits- und Stabilitätsgründen, da Programme den Desktop nicht direkt beschädigen können (entweder böswillig oder durch fehlerhafte Codierung). Der Compositing Window Manager lässt es nicht zu. Wenn jedoch der Compositing-Fenstermanager deaktiviert ist (auf Anforderung privilegierter Programme wie Flash und Silverlight), ist diese zusätzliche Schicht "Overhead" plötzlich weg.

Der Compositing Window Manager, der unter Mac OS X verwendet wird, heißt Quartz Compositor und ist seit langem Teil von OS X. Quartz Extreme ist die moderne Inkarnation des Quarz-Compositors, der alles, was ich oben beschrieben habe, auf der GPU selbst ausführt (obwohl diese Vorgänge nicht "kostenlos" sind, nur weil sie auf die GPU ausgelagert sind; die GPU verbraucht immer noch Strom, um diese Compositing-Schritte auszuführen .)

Eine Entwicklerperspektive darüber, wie ein Programm (wie Flash oder Silverlight) die Vollbildsteuerung übernehmen und den Quartz Compositor vorübergehend deaktivieren kann, finden Sie in diesem Apple-Entwicklerdokument .

Kurz gesagt: Quartz Compositor + sehr häufige Bildschirmaktualisierungen (30 bis 60 Mal pro Sekunde mit Video) == hohe CPU-Auslastung. Wenn Sie die Quartz Compositor-Komponente aus der Pipeline entfernen, sinkt die CPU-Auslastung drastisch, insbesondere weil Flash und Silverlight hardwarebeschleunigtes Video-Rendering und -Dekodierung bieten.


Diese Antwort klingt so, als ob sie in den 90er Jahren für Hardware und Software der 90er Jahre geschrieben wurde (an denen ich viel gearbeitet habe). Die einfache Antwort lautet: Sie skalieren ein Full-Motion-Video nicht massiv in Echtzeit und Ihre Grafikkarte führt es nur in der nativen Auflösung aus. Das Compositing und die Effekte haben nichts damit zu tun, wie vor 20 Jahren. CPUs und GPUs können problemlos im Leerlauf zusammengesetzt werden.
Dorian

-1

Hierfür gibt es einige mögliche Gründe.

Der Grund hängt auch von Ihrer Bildschirmauflösung und der empfangenen Netflix-Auflösung ab.

Wenn Sie im Vollbildmodus und Netflix in einer passenden Auflösung anzeigen, z. B. HD auf einem HD-Monitor, wird der Stream ohne großen Aufwand direkt auf den Bildschirm übertragen.

Wenn Sie jedoch HD-Streams in einem kleineren Fenster ansehen, muss der Stream auf Ihrem Computer weiter verarbeitet werden, damit er mit einer Art Filter in das angegebene Anzeigefenster passt. Dies wird offensichtlich die Maschine verlangsamen und / oder mehr Ressourcen in Anspruch nehmen, um dies zu erreichen.

Die einzige Kehrseite dazu ist, wenn Sie den passenden Stream mit kleinerer Auflösung für das kleinere Fenster haben. In diesem Fall sollte es dem Vollbildmodus entsprechen.

Darüber hinaus rendert Ihr Computer im Vollbildmodus nur das Anzeigefenster. Im Fenstermodus rendern Sie jedoch auch den Desktop, andere Fenster usw. usw., was mehr Verarbeitung / Ressourcen erfordert.

Es könnte noch weitere Gründe geben, die ich nicht behandelt habe.


-1

In Chrome werden manchmal Tabs angehalten, die längere Zeit nicht verwendet wurden (oder die noch geladen werden müssen, wenn Sie sie im Hintergrund geöffnet haben). Wenn Sie einen Vollbildmodus aktivieren, hat dies möglicherweise den gleichen Effekt.

Wenn meine Vermutung richtig ist, ist die logische Erklärung dafür, dass Sie beim Anzeigen von Objekten im Vollbildmodus wahrscheinlich nicht zwischen den Registerkarten wechseln (was möglicherweise nicht möglich ist). Die Zeit, die Sie benötigen, um den Vollbildmodus zu verlassen und die Tabs zu wechseln, ist für Chrome ausreichend, um die Tabs wiederherzustellen, zu denen Sie am wahrscheinlichsten wechseln. Dies würde den plötzlichen Abfall des Stromverbrauchs beim Umschalten auf Vollbild erklären. Es kann auch relevant sein, zu beachten, dass ein Vollbild-Videostream oft als separates Fenster gezählt wird. Dies würde bedeuten, dass Chrome selbst nicht mehr den Fokus hatte, während sich Netflix im Vollbildmodus befindet.

Möglicherweise möchten Sie diese Ergebnisse mit anderen Vollbild-kompatiblen Websites (z. B. YouTube) und nach Möglichkeit mit anderen Websites vergleichen, die sowohl Silverlight als auch einen Vollbildmodus anbieten.


Ich wollte nur hinzufügen, dass die anderen Antworten, die während des Schreibens meiner Antwort eingereicht wurden, gleichermaßen plausibel klingen. Es würde mich nicht wundern, wenn es eine Kombination aus mehreren Faktoren ist.
James Thomas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.