Szerző: Gálffy Csaba

2013. december 6. 13:49

Tesztelhető a folyamatokra bontott Firefox

Lassan-lassan célba ért a 2009-ben indult, de egy időre felfüggesztett projekt, amely a Firefox futtatási architektúráját írja át alaposan. A külön processeket használó Firefox már tesztelhető, hamarosan a stabil kiadásban is megjelenik az új architektúra.

A Chrome és az Internet Explorer már évek óta külön processeket (folyamatokat) használ a böngésző különböző funkcióinak megvalósítására, a Firefox azonban még csak a végrehajtás threadekre (utasításszálakra) bontásáig jutott el. Hamarosan ebben a tekintetben is felzárkózik azonban a szabad szoftveres csapat, már tesztfázisban elérhető a multiprocess architektúrát használó böngészőkiadás.

Az új felépítés számos előnyt hordoz a teljesítmény, a biztonság és a stabilitás terén is. Ugyan a többszálúsítással a teljesítményt akadályozó legnagyobb problémákat már korábban sikerült megoldani, például a CPU-igényes szálak leválasztása a fő folyamatról sokat tett a böngésző válaszidejének csökkentéséért. A multiprocess megközelítés még tovább viszi ezt a filozófiát, külön folyamatot kap a UI és a tartalom, amelyek között formalizált protokollokon keresztül folyik a kommunikáció.

A biztonság terén is hozhat újdonságot a több programfolyamat használata. Míg az egységes Firefox esetében is elérhető volt a sandboxing (a böngésző és az operációs rendszer elválasztása), igazából a megjelenített tartalom is hasonló jogosultsággal rendelkezett, mint maga a böngésző, így egy biztonsági résen viszonylag könnyen átvehette a támadó a számítógép fölötti ellenőrzést. A multiprocess architektúrával bevezethető az eltérő folyamatok eltérő jogosultsága, így a böngésző főfolyamata megtarthatja például a fáljrendszer írásának jogát, ezt viszont a tartalom megjelenítéséért felelős folyamatok nem öröklik meg.

A tartalmi folyamatok leválasztásának a stabilitásra is jótékony hatása lesz. Ugyan a Firefox nem a rendszeres összeomlásról híres, néha azért előfordul, hogy egy hiba miatt az egész böngésző kilép. A jövőben ilyen nem fordul majd elő, ha a megjelenítés miatt egy folyamat hibába ütközik, akkor az csak azt a processt, illetve fület rántja magával, maga a böngésző és a többi tab működik tovább probléma nélkül.

És a memóriahasználat?

A Firefox memóriaproblémái széles körben ismertek, a böngésző sokszor hajlamos memóriaszivárgást produkálni, így rendszeres újraindítást követel - a problémát pedig évek alatt is csak visszafogni sikerült, megszüntetni nem. Ezért érthető, hogy a memóriahasználat kérdése a folyamatokra bontás kapcsán is felmerül, a szétbontással ugyanis a párhuzamosan futó folyamatok  között a memóriafoglalás is megsokszorozódik. A böngésző folyamatainak processekre bontásán  dolgozó Bill McCloskey által végzett teszt szerint szerencsére a többszálúsítás hatása a memóriafoglalásra igen minimális, 50 megnyitott böngészőfül mellett mintegy 10 megabájttal lett magasabb a memóriahasználat, ráadásul ez a szám a jövőben néhány optimalizációnak köszönhetően még csökkenhet is.

Mindent vivő munkahelyek

Mindig voltak olyan informatikai munkahelyek, melyek nagyon jól fekszenek az önéletrajzban.

Mindent vivő munkahelyek Mindig voltak olyan informatikai munkahelyek, melyek nagyon jól fekszenek az önéletrajzban.

A memóriahasználat visszafogására komoly hangsúlyt fektettek a fejlesztők. Az egyik (egyelőre nem implementált) megoldás a deduplikáció lesz közös gyorsítótárazás révén: az abban már szereplő adatok nem kerülnek másodpéldányként a memóriába, hanem ugyanazt a példányt fogja használni több folyamat is. A megoldás része persze, hogy a gyorsítótárazott objektumok csak olvashatóak, vagyis a már ott lévő képet, JavaScript-állományt egyik folyamat sem módosíthatja. A fejlesztők ezen felül figyelmet fordítanak arra is, hogy érzékeny adatok (bankkártyaszám, stb.) ne kerüljenek ebbe a közös memóriába, amelyet később egy másik oldal onnan esetleg kiolvashatna.

Már kipróbálható

A több programszálon futó Firefox már most kipróbálható a Nightly kiadás telepítésével (ehhez érdemes egy új böngészős profit létrehozni, így az nem zavar be a "hivatalos" Firefoxnak). A multiprocess futás a browser.tabs.remote beállítás igazra állításával kapcsolható be, újraindítás után pedig már használható az új fejlesztés. Ezt egyébként az igazolja vissza, hogy a füleken az oldal címe aláhúzva jelenik meg - ez mutatja, hogy azt külön process jeleníti meg.

A projekt részleteiről és a webes illetve beépülő modulokat fejlesztőket érintő információkat Bill McCloskey posztjában lehet olvasni.

a címlapról