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.

Nagy pénz, nagy szívás: útravaló csúcstámadó IT-soknak

Az informatikai vezetősködés sokak álma, de az árnyoldalaival kevesen vannak tisztában.

Nagy pénz, nagy szívás: útravaló csúcstámadó IT-soknak Az informatikai vezetősködés sokak álma, de az árnyoldalaival kevesen vannak tisztában.

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.

Nagyon széles az a skála, amin az állásinterjú visszajelzések tartalmi minősége mozog: túl rövid, túl hosszú, semmitmondó, értelmetlen vagy semmi. A friss heti kraftie hírlevélben ezt jártuk körül. Ha tetszett a cikk, iratkozz fel, és minden héten elküldjük emailben a legfrissebbet!

a címlapról