Ognisty lis na sterydach — podkręcanie Firefoxa

Obecne technologie webowe rozwijają się w szybkim tempie (a na pewno o wiele szybciej niż desktopowy hardware), a przeglądarki internetowe z aktualizacji na aktualizację puchną oraz zwiększają swoje obciążenie zarówno dla systemu operacyjnego jak i dla sprzętu. Kilka otwartych kart potrafi spokojnie zjeść już ponad gigabajt pamięci operacyjnej, zaś operacji odczytu oraz zapisu na dysku komputera jest co nie miara - składają się na to między innymi pamięć tymczasowa, ciasteczka, historia przeglądanych witryn oraz pobieranych plików czy lokalny magazyn. Nie dość że duża ilość operacji IO może szybko zapchać bufor dysku HDD, to dodatkowo w przypadku nośników SSD przyśpieszają one zużywanie się pamięci. 

Jest jednak praktyczne rozwiązanie tego problemu - możemy użyć jako magazyn danych profilu przeglądarki, pamięci operacyjnej komputera, która jest najszybszą pamięcią w komputerze, nie licząc oczywiście pamięci cache procesora. Jest ona jednak ulotna, na co również można znaleźć rozwiązanie - jest nim profile-sync-daemon.

Czym jest PSD?

PSD jest usługą działającą w tle (demonem systemowym) mającym na celu przeniesienie całego profilu użytkownika przeglądarki do pamięci operacyjnej przy jednoczesnym dbaniu o integralność profilu - co jakiś czas dokonywana jest synchronizacja między zapisanym na dysku twardym profilem, a tym będącym obecnie w pamięci RAM. Powoduje to znaczne przyśpieszenie działania całej przeglądarki internetowej oraz zmniejsza znacząco liczbę operacji dyskowych - co jakiś czas jest bowiem dokonywana jedna hurtowa aktualizacja, a nie zaś co chwilę kilkanaście małych co bardzo pozytywnie wpływa na żywotność SSD. Warto dodać że profile-sync-daemon działa nie tylko z normalnym Firefoxem, ale również z wydaniem ESR Firefoxa, a także innymi przeglądarkami takimi jak Palemoon, Opera, Icecat, Epiphany czy Vivaldi, natomiast skupię się tutaj na dwóch odmianach Firefoxaa - zwykłej oraz tej o przedłużonym wsparciu technicznym.

Instalacja PSD.

Przed rozpoczęciem instalacji należy zamknąć wszystkie sesje przeglądarek uruchomionych na komputerze. Dystrybucje posiadające menedżer pakietów APT (Ubuntu, Debian, Linux Mint oraz distra na nich bazujące) muszą dodać nowe repozytorium do systemu i z niego pobrać pakiet profile-sync-daemon.

sudo add-apt-repository ppa:graysky/utils
sudo apt-get update
sudo apt-get install profile-sync-daemon

Dystrybucje korzystające z YUM (na przykład Fedora) mogą pobrać pakiet bezpośrednio z domyślnych repozytoriów.
sudo yum install profile-sync-daemon
Po instalacji należy uruchomić usługę oraz zdefiniować ją jako automatycznie uruchamianą przy starcie systemu operacyjnego.

systemctl --user start psd
systemctl --user enable psd

Ponadto dla Firefoxa w wersji ESR należy utworzyć link symboliczny

mv ~/.mozilla/firefox/ ~/.mozilla/firefox_old
ln -s ~/.mozilla/firefox-esr/ ~/.mozilla/firefox

Po wykonaniu powyższych czynności profile-sync-daemon powinien już dbać automatycznie o optymalizację naszego profilu. Obecny status działania usługi możemy sprawdzić komendą psd p.

Przenoszenie cache przeglądarki do pamięci.

PSD odpowiada za przenoszenie całej konfiguracji, historii czy innych danych z profilu użytkownika. Pamięć podręczna jednak znajduje się domyślnie w innej lokalizacji na dysku twardym, warto jest zatem ją zmienić i ograniczyć trochę jej rozmiar. Aby to uczynić uruchamiamy przeglądarkę Firefox i w pasku adresu przechodzimy do adresu about:config, a następnie wyrażamy zgodę na dobrowolną utratę gwarancji.

Wpisujemy w wyszukiwarce na górze interfejsu frazę browser.cache oraz zmieniamy wartość następujących ustawień na następujące wartości (zmiana odbywa się przez dwukrotnie kliknięcie na daną konfigurację oraz wprowadzenie jej nowej wartości lub dwukrotnie jej kliknięcie dla wartości logicznych - czyli true lub false):

  • browser.cache.use_new_backend na 1
  • browser.cache.disk.enable na true
  • browser.cache.disk.parent_directory na /tmp/.firefox_cache
  • browser.cache.disk.capacity na 100000
  • browser.cache.disk.smart_size.enabled na false
  • browser.cache.disk.smart_size.first_run na false
  • browser.cache.disk.smart_size.use_old_max na false
  • browser.cache.memory.enable na true
  • browser.cache.memory.capacity na 100000
  • browser.cache.offline.enable na true
  • browser.cache.offline.capacity na 100000

Niektóre z tych ustawień mogą mieć taką wartość przyjętą domyślnie, warto sprawdzać obecne wartości przed ich zmianą. Jeżeli zaś któregoś ustawienia nie ma należy je po prostu utworzyć klikając prawym przyciskiem w dowolnym miejscu strony oraz zależnie od typu wybrać odpowiedni rodzaj wartości (liczbowe - integer, logiczne - boolean, tekstowe - string).

Następnie uruchamiamy konsolę poleceń i za pomocą polecenia mkdir /tmp/.firefox_cache tworzymy odpowiedni katalog który będzie przechowywał pliki tymczasowe stron internetowych.

Po restarcie przeglądarki zmiany powinny wejść już w życie. Obecny stan pamięci operacyjnej możemy sprawdzić wpisując w pasku adresu about:cache. Możemy sprawdzić tam zarówno ścieżkę do katalogu z danymi tymczasowymi jak i ustawiony limit (którym jest obecnie 100MB, z moich doświadczeń wynika iż jest to najbardziej optymalne ustawienie).

Podsumowując.

Kilka modyfikacji w ustawieniach Mozilli Firefox może znacząco wpłynąć na komfort korzystania z niej. Osobiście z zastosowanych modyfikacji korzystam już od dłuższego czasu i nie zdarzyło mi się odczuwać żadnych negatywnych konsekwencji ich negatywnego działania. Nie straciłem również bieżących historii przeglądania czy zakładek, pomimo przechowywania profilu w pamięci operacyjnej oraz jej czasowej synchronizacji. Natomiast narzędzie iostat nie wykazuje w trakcie używania żadnych operacji dyskowych podczas używania przeglądarki, co dodatkowo podkreśla skuteczność tej metody optymalizacji Firefoxa, którą, przy odrobinie wiedzy, można również zastosować w innych przeglądarkach