Ahududu pi üzerinde web tarama hızı darboğaz nerede?


23

Raspbian “wheezy” la birlikte 512 MB'lik bir Pi Pi'de Midori, Chromium ve Iceweasel'i denedim. Web sayfası büyüdüğünde, 1 GHz hızaşırtmamdan sonra bile yükleme yavaş. 1 GHz işlemcili bir Android telefonda, web sayfasının yüklenmesi çok daha hızlı görünüyor.

Bilmek istediğim şu ki, Pi'deki tıkanıklık nerede? CPU mu, RAM mi, yoksa hızlandırılmış X sunucusu mu? Tarayıcının hızlandırmak için GPU'yu doğrudan kullanması mümkün mü?


Ve pi 3.5 "480 x 800 ekran kullanıyor mu?;) Belki de tek başına bu bir etken değil ...
goldilocks

Bir VGA monitörü HDMI-VGA kablosuyla göstermek için kullanılır ve config hdmi_mode=35 1280x1024 60Hz... Ancak yapılandırma değiştirildikten sonra herhangi bir iyileşme göremiyorumhdmi_mode=9 800x600 60Hz
merhaba.wjx

Şüphesiz. Çıkarılan bu sorunun doğru cevabı olduğunu düşünüyorum ama sizin için bir fikri olan bir tane daha ekledim.
goldilocks

Yanıtlar:


15

Raspberry Pi'nin oldukça zayıf ARM11 işlemcisi ve hızlandırılmamış X sunucusunun bir birleşimi. GPU tarafından hızlandırılmadığından, CPU tüm işlemleri yapmak zorundadır; Pi'deki ARM11 çekirdeği gibi bir şey, bu durum zaten zayıf bir CPU'ya çok fazla yük getiriyor.

Aniden, Pi'deki htopMidori Facebook gibi ağır bir web sitesini yüklerken izlerken , X işleminin CPU'nun% 25'ini aldığını gördüm.

Android telefonunuzdaki çipi Pi'deki çip (hatta overclock edilmiş) ile karşılaştırmak hiç de adil değil. Telefonunuzdaki 1 GHz yongası muhtemelen mimarinin ARMv7 sürümünü kullanan Cortex-A8 veya A9 gibi bir şey; bu nedenle, saat döngüsü başına ARMv6 kullanan ARM11'den daha yüksek performans gösterirler.


GPU ne tür 2B çizim işlemini hızlandırabilir?
Trismegistos

@Trismegistos Bölgeleri renklerle doldurma. Saydam arka plan ile katmanları birleştirerek. Yazı tipi kenarlarının düzleştirilmesi.
Dmitry Grigoryev

14

Bu zaten doğru cevap IMO, ve benim önerdiğim şey muhtemelen pek bir fark yaratmayacak, ama bilmek faydalı olabilir.

Tek yapmak istediğiniz tarayıcıyı çalıştırmaksa, masaüstü ortamı da çalıştırmak zorunda değilsiniz. Şuna benzer bir dosya oluşturun $HOME/.xinitrc:

#!/bin/sh

midori

.Xinitrc zaten mevcutsa, geçici olarak taşıyın veya başka herhangi bir şeyi yorumlayın. Şimdi, startx(açıkçası, zaten içinde olmamalısınız - bunu GUI çalışmadan konsoldan yapın). Voila, sadece tarayıcın var, masaüstün yok.

Her ne kadar tarayıcı odadaki bir fil olsa ve Xorg sunucusunun kendisi (çalışıyor) temel bir lxde'den (şimdi çalışmıyor) daha büyük olmasına rağmen, bu bir miktar bellek tasarrufu sağlıyor . RAM'a çok fazla yüklediyseniz, takas kullanıyorsunuz, bu performansı etkiler. Yukarıdaki midori + çıplak X, aşağıdakilere göre <100 MB yerleşik kullanır free:

             total       used       free     shared    buffers     cached
Mem:        448708     242604     206104          0      82660     105156
-/+ buffers/cache:      54788     393920
Swap:       102396          0     102396

448708 - 393920 = 54788/1024 = 53,5 MB

4 sekme açık. Yine, bunlara bakarsanız ve RAM'inizin neredeyse dolmuş olduğunu görürseniz, bu bir performans sorunudur. Ram dolu olmasa bile biraz takas kullanmanın normal olduğunu unutmayın, bu yüzden endişelenmeyin - takas edilen şeyler düşük önceliklidir.

Performans hakkında akıllıca düşünülmesi gereken bir şey de tamponların ve önbelleklerin önemidir . Bunları toplamın içine dahil etmedim ve bunun gerçeklenen bellekten daha fazlası olduğunu (yaklaşık iki katı) fark ettim. Bu normal. Belleği işlenen şeylerle doldurursanız, sistem daha az önbellek kullanır ve / veya değiştirilebiliyorsa aktarır. Önbellek nedeniyle performans düşüşü olacak iki şekilde de, olduğu önemli (akıllıca değil sadece hayati ya değişmez boyut, taahhüt Mem stat öyle değil parçası).

Başka bir deyişle, optimal olarak kararlaştırılmış koçunuzun pi üzerinde mevcut olanın% 75'inden daha fazla ve belki de bundan daha az olmasını istersiniz . LXDE kullanıyorsanız ve başka şeyler açmaya başlarsanız, hızlı bir şekilde buna yaklaşmaya başlayabilirsiniz.


5

Feragatname : Aşağıda, şüpheli etkileri olan deneysel özelliklerin kullanımı açıklanmaktadır. Tanıtılan regresyonları ve gerçek performans kazanımlarını test ettiğinizden emin olun.

Göze çarpan tarama performansını artırmak için, altında Google Chrome’un / Chromium’un bayraklarından bazılarını deneyebilirsiniz chrome://flags. Performansla ilgili bayraklardan bazılarını açıklayan bir makale var . Burada bir şeyler toplamaya çalışacağım:

"Yazılım Oluşturma Listesini Geçersiz Kıl" seçeneğini etkinleştirerek GPU hızlandırmasını zorlamak , sürücü beyaz listeye alınmasa bile, olası artefaktların maliyeti karşılığında işleme almak için GPU'yu kullanır. Pi'nin GPU'su ile bunun ne kadar iyi çalıştığını bilmiyorum.

Tüm sayfalardaki GPU bileşimi, tüm katmanları kaydırmak için GPU'yu kullanır. Bu nedenle, kaydırma performansı GPU hızlandırmalı katmanlara sahip olmayan sayfalarda iyileştirilmelidir.

Pencereyi taewewise yenile başka ipucu olurdu. Döşemeleri oluşturacak ve sonuncunun bitmesini beklemek yerine hazır olduğu anda gösterecektir. Etkili görüntü oluşturma, eklenen ek yük nedeniyle daha uzun sürer, ancak içerik daha hızlı görünecektir.

Ayrı bir iş parçacığında oluşturma, eşzamansız olarak oluşturma işlemini yapar ve arabirimi duyarlı tutar. Sayfa hala görüntülerken kaydırma yapabilirsiniz.

GPU VSync'i devre dışı bırak , monitörün henüz yüklenmemiş olup olmadığına bakılmaksızın oluşturulan içeriği güncelleyecektir. Bu tutarsız sunum pahasına kare hızını artırır.

Herhangi bir anahtarı etkinleştirdikten / devre dışı bıraktıktan sonra, ayarın uygulanabilmesi için Chrome / Chromium'u yeniden başlatmanız gerekir. Bayraklar sayfasının altındaki düğme, bunu sizin için yapabilir.

Daha da ileri giderek, Chrome / Chromium'u optimize etmek için komut satırı anahtarları kullanılabilir. Tam bir liste için bkz . Chromium Komut Satırı Anahtarları Listesi.

--default-tile-widthve --default-tile-heighther sayfanın ilk oluşturulmasını hızlandırmak için ekran boyutunun bir kesriyle eşleşecek şekilde ayarlanabilir.


Bayrakları denedim Override software rendering list, GPU compositing on all pagesve Threaded compositingPi'de, ama belirgin bir gelişme yok. Bilgisayarda bu bayrakları denedim, başka bir gelişme de yok gibi görünüyor.
merhaba.wjx

Bayrakları düzenledikten sonra Chrome'u yeniden başlattığınızdan emin olun. Test etmek için Override software rendering listWebGL demo açık. Test için Threaded compositingbüyük bir sayfa yine yükleme iken kaydırma deneyin.
Bengt

Burada okuduklarımdan: chromium.org/developers/design-documents/… "Dişli kompozisyon" kullanarak pi üzerinde yardımcı olmayacak - sadece bir çekirdeğe sahip - ve ne kadar önemli olduğuna bağlı olarak daha kötü hale getirebilir msgstr " geçerli işlem durumunun bir kopyası üzerinde işlem ".
goldilocks

Sayfa yükleme performansı düşecek, evet. Ancak Javascript, engellenmeyecek ve oluşturulmayı bekleyecek ve sayfa duyarlı kalacaktır. Bazı algılanan performans için bazı objektif performanslar satıyorsunuz.
Bengt
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.