Google Chrome ma problem z laptopami. Oprócz okazjonalnych szczegółów wydajności, przeglądarka z Mountain View wymaga poświęcenia w postaci baterii. Nawet Microsoft naciskał na ten punkt, promując Edge, a deweloperzy pracowali przez długi czas, aby poprawić sytuację. Po formalnym ogłoszeniu we wrześniu zeszłego roku, wersja 57 Google Chrome zawiera teraz system throttlingu dla kart w tle, tak aby nie zużywały więcej niż 1 procent CPU.
Krajobraz nowoczesnych przeglądarek jest opłakany. W tej chwili uruchamiam instancję Firefoksa i Chrome. Przeglądarka Mozilli zdecydowała się pożreć 977 megabajtów RAM na trzy karty i dwie rozszerzenia, których uparcie nie chce oddać. Z drugiej strony Chrome wciąż przeżywa kryzysy egzystencjalne za każdym razem, gdy robię trochę scrolling na portalach takich jak Facebook. Efektem jest rodzaj toksycznego break dance, który wykorzystuje 50 procent czterordzeniowego procesora i nie ma żadnego polecenia w sekcji flags ani rozszerzenia w sklepie, które by pomogło. Kolejnym bardzo poważnym problemem przeglądarki Google jest zużycie baterii w laptopach. Niezależnie od modelu czy systemu operacyjnego, Chrome wyciska baterie jak pomarańcze.
Mechanizm throttlingu
Inżynierowie odkryli, że wiele stron zużywa dużą ilość cykli CPU nawet wtedy, gdy znajdują się na karcie w tle. Wraz z nadejściem Chrome 57, to zachowanie się zmieni. Kluczem jest nowy system „throttlingu” oparty na budżecie (mierzononym w sekundach), któremu podlega każda karta w tle po upływie 10 sekund. Ten budżet regeneruje się (ze współczynnikiem 0,01 sekundy na sekundę), ale karta w tle będzie mogła uzyskać dostęp do tzw. „wall time” procesora (wall time to rzeczywisty czas potrzebny procesowi na rozpoczęcie i ukończenie zadania) tylko wtedy, gdy nie wyczerpała swojego budżetu. Innymi słowy, szacuje się, że średnie zużycie dla karty w tle wyniesie 1 procent CPU.
Wyjątki i plany na przyszłość
Główne wyjątki od throttlingu to karty odtwarzające audio (ponieważ automatycznie są uważane za będące na pierwszym planie) oraz te, które utrzymują połączenia w czasie rzeczywistym przez WebRTC lub WebSockets. Zespół Chromium raportuje redukcję „zajętych kart” o 25 procent, a na niektórych stronach spadek użycia CPU może sięgać 75 procent. Oczywiście potrzebujemy teraz znacznie solidniejszych pomiarów od użytkowników, którzy powinni sprawdzić, czy przekłada się to na dłuższe działanie baterii. Ale historia się tu nie kończy. W kierunku roku 2018 będzie się dążyć do całkowitego zawieszenia kart w tle.