Na modelu B 512 MB Pi z Raspbian „wheezy” wypróbowałem Midori, Chromium i Iceweasel. Gdy strona się powiększa, ładowanie jest wolne, nawet po przetaktowaniu jej do 1 GHz. Na telefonie z Androidem z procesorem 1 GHz ładowanie strony wydaje się znacznie szybsze.
Chcę wiedzieć, gdzie jest wąskie gardło w Pi? Czy jest to rozmiar procesora, pamięci RAM, czy nieprzyspieszony serwer X? Czy przeglądarka może bezpośrednio używać procesora graficznego w celu przyspieszenia?
performance
web-browsers
hello.wjx
źródło
źródło
hdmi_mode=35 1280x1024 60Hz
... Ale nie widzę żadnej poprawy po zmianie konfiguracji nahdmi_mode=9 800x600 60Hz
Odpowiedzi:
Jest to połączenie dość słabego procesora ARM11 Raspberry Pi i nie przyspieszonego serwera X. Ponieważ procesor GPU nie przyspiesza, procesor musi wykonać cały rendering; na czymś takim jak rdzeń ARM11 w Pi, powoduje to dodatkowe obciążenie już i tak słabego procesora.
Anegdotycznie, podczas oglądania,
htop
gdy Midori na Pi ładuje ciężką stronę internetową, taką jak Facebook, widziałem, jak proces X zajmuje do 25% procesora.Porównywanie chipa w telefonie z Androidem z chipem (nawet podkręconym) w Pi nie jest uczciwe. Układ 1 GHz w twoim telefonie to prawdopodobnie coś w rodzaju Cortex-A8 lub A9, które wykorzystują architekturę w wersji ARMv7; dlatego mają wyższą wydajność na cykl zegara niż ARM11, który wykorzystuje ARMv6.
źródło
To już poprawna odpowiedź IMO i to, co sugeruję, prawdopodobnie nie zrobi dużej różnicy, ale warto wiedzieć.
Jeśli wszystko, co chcesz zrobić, to uruchomić przeglądarkę, nie musisz też uruchamiać środowiska graficznego. Utwórz plik, który wygląda następująco
$HOME/.xinitrc
:Jeśli .xinitrc już istnieje, przenieś go tymczasowo lub skomentuj cokolwiek innego. Teraz
startx
(oczywiście nie powinieneś już w nim być - zrób to z konsoli bez uruchomionego GUI). Voila, masz tylko przeglądarkę, nie ma komputera.To oszczędza trochę pamięci, chociaż przeglądarka jest zdecydowanie słoniem w pokoju, a sam serwer Xorg (który działa) jest większy niż podstawowy LXDE (który teraz nie działa). Jeśli masz tak dużo załadowanych do pamięci RAM, że używasz swap, wpłynie to na wydajność. Powyższy midori + goły X używa rezydenta <100 MB zgodnie z
free
:448708 - 393920 = 54788/1024 = 53,5 MB
To przy otwartych 4 kartach. Ponownie, jeśli spojrzysz na nie i zobaczysz, że pamięć RAM jest prawie pełna, jest to problem z wydajnością. Zauważ, że normalne jest używanie odrobiny zamiany, nawet jeśli RAM nie jest pełny, więc nie przejmuj się tym - te zamiany mają niski priorytet.
Kolejną kwestią do przemyślenia pod względem wydajności jest znaczenie buforów i pamięci podręcznej . Nie uwzględniłem ich w całości i zauważam, że jest to więcej niż pamięć zaangażowana (około dwa razy więcej). To normalne. Jeśli zapełnisz pamięć zatwierdzonymi rzeczami, system po prostu zużyje mniej pamięci podręcznej i / lub prześle ją do wymiany. Tak czy inaczej, będzie to obniżenie wydajności, ponieważ pamięć podręczna jest ważna (po prostu nie jest niezbędna lub niezmienna, więc nie jest częścią zatwierdzonej pamięci).
Innymi słowy, optymalnie chcesz, aby twój zaangażowany ram był nie więcej niż 75% tego, co jest dostępne na pi, a być może mniej. Jeśli używasz LXDE i zaczynasz otwierać inne rzeczy, możesz szybko zacząć do tego podejść.
źródło
Możesz wypróbować niektóre z flag Google Chrome / Chromium poniżej,
chrome://flags
aby poprawić (pozorną) wydajność przeglądania. Jest artykuł wyjaśniający niektóre flagi związane z wydajnością . Spróbuję zebrać trochę tutaj:Wymuszenie przyspieszenia GPU poprzez włączenie opcji „Zastąp listę renderowania oprogramowania” spowoduje użycie GPU do renderowania kosztem możliwych artefaktów, nawet jeśli sterownik nie jest na białej liście. Nie wiem jednak, jak dobrze to działa z GPU Pi.
Komponowanie GPU na wszystkich stronach będzie używać GPU do przewijania wszystkich warstw. Dlatego wydajność przewijania powinna się poprawić na stronach bez warstw przyspieszanych przez GPU.
Kolejna wskazówka to odświeżenie okna w innym kierunku. Będzie renderować kafelki i wyświetlać je, gdy tylko będzie gotowy, zamiast czekać na zakończenie ostatniego. W efekcie renderowanie potrwa dłużej z powodu wprowadzonego obciążenia, ale zawartość pojawi się szybciej.
Renderowanie w oddzielnym wątku spowoduje renderowanie asynchroniczne i utrzyma interfejs w gotowości. Możesz przewijać, gdy strona jest nadal renderowana.
Wyłącz GPU VSync zaktualizuje renderowaną zawartość bez względu na to, czy monitor ją załadował. Poprawia to liczbę klatek kosztem niespójnej prezentacji.
Po włączeniu / wyłączeniu jakichkolwiek przełączników musisz ponownie uruchomić Chrome / Chromium, aby zastosować to ustawienie. Możesz to zrobić za pomocą przycisku na dole strony z flagami.
Idąc dalej, przełączniki wiersza poleceń można wykorzystać do optymalizacji Chrome / Chromium. Zobacz listę przełączników Chrom linii poleceń pełną listę.
--default-tile-width
i--default-tile-height
można go ustawić tak, aby odpowiadał ułamkowi wielkości ekranu, aby przyspieszyć wstępne renderowanie każdej strony.źródło
Override software rendering list
,GPU compositing on all pages
aThreaded compositing
na Pi, ale nie wydaje żadnych widocznych usprawnień. Próbowałem też tych flag na PC, nie wydaje się też żadnych ulepszeń.Override software rendering list
otwórz demo WebGL. Aby przetestować,Threaded compositing
spróbuj przewinąć, gdy trwa ładowanie dużej strony.