Netflix neden tam ekran modunda daha iyi (daha verimli) performans gösteriyor?


6

Geçen gün, Retina MacBook Pro'mdaki Chrome'da Netflix'te bir film izlerken, sadece videoyu normal bir penceredeki tek bir sekmede izlerken fanların daha hızlı döneceğini fark ettim. (örn. Tam ekran değil.)

Tam ekran moduna geçilirken, bir dakika kadar sonra fanlar ölür.

Bu yüzden, her iki modda da izlerken mAh'ı ölçmek için bir pil monitör uygulaması kullandım ve pencereli modda yaklaşık 85 mAh ve tam ekran modunda yaklaşık 50 mAh ölçtüm.

Diğer tarayıcılarda henüz test etmedim.

Activity Monitor yalnızca Netflix'in bir sekmede açılmasını sağlamanın ayrık kartın başlamasına neden olduğunu, bu nedenle bunun tümleşik ve ayrık grafiklerle ilgili bir sorun olmadığını düşünüyorum.

Neden daha büyük bir görüntüleme alanının ve (teorik olarak) daha yüksek kalitede video akışının daha az sistem kaynağı kullandığını belirleyemiyorum.

Yanıtlar:


6

Neredeyse kesinlikle masaüstü pencere bestecisi ile ilgisi var.

Bir web tarayıcısı penceresinde oynatılan bir videoya sahipseniz ve bundan daha kötüsü, bir eklentide web tarayıcısının sayfasını şu şekilde hazırlaması gerekir:

  1. Pencere dekorasyonumuzu çizin (adres çubuğu, yer imleri, düğmeler vb.)
  2. Web sayfasının ilk bölümünü çizin.
  3. Videonun olması gereken yere bir "siyah kare" çizin, ancak web sayfasının ilgili kısımlarını her iki tarafına da çizin (sol ve sağ).
  4. Eklentiden, penceresini almak istediğini söylediği yerde çizmesini isteyin.
  5. Web sayfasının kalan kısmını pencerenin altına, sayfanın altına doğru çizin.
  6. Bu dizinin üstüne, animasyon efektlerinden sorumlu olan birleştirme pencere yöneticisi (pencereleri küçültüp büyütdüğünüzde olduğu gibi), ekrandaki her pencerenin içeriğini izlemelidir. Bunun bir parçası olarak, her şeyin Chrome'da bir olan eklenti, dahil olmak üzere bu pencere içinde çizim izlemek zorundadır dışı süreci (anlamı, başka bir işlem değil, krom ana süreç parçası) eklentisi. Kompozisyon pencere yöneticisi bunu takip etmediyse ve penceredeki her şeye "3B doku" gibi davrandıysa, eksi düğmesini tıkladığınızda pencerenin küçültülmesini görev çubuğunuza yerleştiremezsiniz.

Flash'a (veya Silverlight) videoyu tam ekran oynatmasını söylediğinizde, ne olacağı Flash'ın Chrome'a ​​herhangi bir şey yapmasını söylemediği anlamına gelir. Aslında, tüm birleştirme pencere yöneticisi geçici olarak devre dışı bırakılabilir ve monitöre grafik oluşturmaktan sorumlu olabilecek diğer tüm programlara geçici olarak oluşturma işlemini durdurması söylenir (veya belki de çizim komutları göndermelerine izin verilir, ancak Ekrandaki gerçek etki.)

Tam ekran olmasa da grafik hattı:

Tarayıcı ve Flash / Silverlight -> kompozisyon penceresi yöneticisi -> grafik donanımı

Tam ekrandayken grafik hattı:

Flash / Silverlight -> grafik donanımı

Bu sadeleştirilmiş boru hattı ek yükü azaltır çünkü devam eden daha az tampon "kopyalama" vardır ve video işleminin tamamı şöyle görünür:

  1. Video içeriğini ağdan indirin.
  2. DRM sistemini kullanarak videonun şifresini çözün.
  3. Video verilerinin sıkıştırılmamış bir formata kod çözme işlemi gerçekleştirmek için sabit işlevli video kod çözme boru hattı adı verilen GPU'nun özel bir bölümünü kullanın .
  4. Donanım video kod çözme hattı şimdi kodu çözülmüş videoyu doğrudan grafik çerçevesine kopyalayıp, CPU / RAM'e geri göndermeden oynatabilir!

Fanlar dönüyor ve video tam olarak pencerelendiğinde daha fazla güç tüketiliyor çünkü kompozisyon penceresi yöneticisi her zaman "Tamam, video şu anda nasıl görünüyor?" Kompozit pencere yöneticisinden önce CPU’nun (ve muhtemelen RAM’de tamponlandığından) tekrar okunması gerekir, daha sonra tüm diğer birleşik verilerle (tarayıcı, görev çubuğu, vb.) birlikte grafik kartına geri yazmaya karar verir. .)

Bileşik pencere yöneticisi, normal şartlar altında, yazmak için izin verilen sistemde tek işlem nedeniyle CPU geri aktarılmasını video içeriği için soran tutmak zorunda doğrudan Video arabelleðine olan birleştirme pencere yöneticisi. Tarayıcı, video oynatıcı ve sistemdeki diğer tüm bileşenlerin, donanım ile kullanıcı alanı arasında oturan bir kapı bekçisi veya sözcüsü gibi birleşik pencere yöneticisinden geçmesi gerekir.

Bu, kısmen "efektleri" etkinleştirmek ve kısmen de güvenlik ve kararlılık nedenleriyle, programlar masaüstünü doğrudan tahrip edemediğinden (kötü amaçlı veya kötü kodlamayla); kompozisyon penceresi yöneticisi buna izin vermiyor. Ancak daha sonra, birleştirme pencere yöneticisi devre dışı bırakıldığında (Flash ve Silverlight gibi ayrıcalıklı programların isteği üzerine), birdenbire "ek yük" katmanının fazladan gitti.

Mac OS X'te kullanılan kompozit pencere yöneticisine Quartz Compositor adı verilir ve uzun süredir OS X'in bir parçası olmuştur. Quartz Extreme , yukarıda anlattığım her şeyi GPU'da yapan Kuvars bestecinin modern enkarnasyonudur (bu işlemler GPU'ya boşaltıldıkları için "ücretsiz" olmamasına rağmen, GPU hala bu kompozisyon adımlarını gerçekleştiren gücü tüketmektedir. .)

Bir programın (Flash veya Silverlight gibi) tam ekran kontrolünü tam olarak nasıl geçirebileceği ve Quartz Compositor'u geçici olarak devre dışı bırakabileceğinin geliştirici perspektifi için bu Apple geliştirici belgesine bakın .

Uzun lafın kısası: Quartz Compositor + çok sık ekran güncellemeleri (video ile saniyede 30 ila 60 kez) == yüksek CPU kullanımı. Quartz Compositor bileşenini boru hattından çıkarın ve CPU kullanımı önemli ölçüde düşer, çünkü özellikle Flash ve Silverlight donanım hızlandırmalı video oluşturma ve video kod çözme işlemlerine sahiptir.


Bu cevap 90'larda yazılmış, 90'ların donanım ve yazılımları için (üzerinde çok çalıştığım) yazılmış gibi geliyor. Basit cevap, gerçek zamanlı olarak tam hareketli bir videoyu toplu olarak ölçeklememenizdir ve grafik kartınız yalnızca kendi özünürlükte çalışır. Kompozisyon ve efektlerin, 20 yıl önce olduğu gibi, bununla hiçbir ilgisi yok. İşlemciler ve GPU'lar boşta kompozisyonları kolayca yönetebilir.
Dorian

-1

Bunun birkaç olası nedeni var.

Bunun nedeni ekran çözünürlüğünüze ve alınan netflix çözünürlüğüne bağlı olarak değişecektir.

Tam ekranda izliyor ve netflix'i uygun bir çözünürlükte (örneğin HD monitörde HD) izliyorsanız, akış gerçek bir çaba göstermeden doğrudan ekrana gönderilir.

Bununla birlikte, HD akışını daha küçük bir pencerede izliyorsanız, akışın, bir tür filtreleme kullanarak belirtilen görüntüleme penceresine sığması için makinenizde daha fazla işlenmesi gerekir. Bu açıkça makineyi yavaşlatacak ve / veya elde etmek için daha fazla kaynak alacaktır.

Bunun tek çevirme tarafı, daha küçük pencere için eşleşen daha küçük çözünürlük akışına sahip olmanızdır. Bu durumda, tam ekrana benzer olmalıdır.

Bunun üzerine, tam ekrandayken, makineniz sadece görüntüleme penceresini görüntülüyordur. Ancak, pencereli moddayken, masaüstünü, diğer pencereleri vb. De görüntüleyebilirsiniz. Daha fazla işlem / kaynak gerektirir.

Benim kapsamadığım başka sebepler de olabilir.


-1

Chrome bazen bir süredir kullanılmayan sekmeleri askıya alır (veya arka planda açtıysanız henüz yüklenmemiş) - belki de tam ekran bir şey yapmak aynı etkiye sahip midir?

Önsezim doğruysa, bunun mantıklı açıklaması, Tam Ekran modunda bir şeyi görüntülerken sekmeleri değiştirmeyeceğinizdir (hatta yapamayabilirsiniz). O Tam Ekran modu kaçmak götürür zaman ve anahtar sekmelerin Chrome geçmek için en olası sekmeleri geri yüklemek için geçen süre bol olduğunu. Bu, tam ekrana geçerken güç kullanımındaki ani düşüşü açıklar. Ayrıca, bir tam ekran video akışının genellikle ayrı bir pencere olarak sayıldığını da belirtmek gerekebilir; bu, Netflix Tam Ekran modundayken Chrome'un artık odağı olmadığı anlamına gelir.

Bu sonuçları diğer tam ekran uyumlu sitelerle (örneğin, YouTube) ve mümkünse, hem Silverlight hem de tam ekran modu sunan diğer sitelerle karşılaştırmak isteyebilirsiniz.


Sadece cevabımın sesini eşit derecede makul olarak yazarken gönderilen diğer cevapları da eklemek istedim. Birkaç faktörden oluşan bir kombinasyon olsaydı şaşırmam.
James Thomas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.