Szerző: Bodnár Ádám

2011. december 12. 15:22

Virtuális géppel gyorsítaná a PHP-t a Facebook

A 2010 elején megjelent HipHoppal a Facebook jelentősen felgyorsította a PHP szkriptek végrehajtását, de a vállalat itt nem állt meg, most egy PHP-re optimalizált virtuális géppel rukkolt elő.

Lassan két éve már, hogy a Facebook bejelentette a HipHop projektet, amelynek a PHP nyelven írt alkalmazások végrehajtásának gyorsítását tűzte ki célul. Az eredeti HipHop a PHP szkriptekből C++ kódot generál, amelyet aztán gépi kódra (x64) fordít le. A következő lépés egy PHP végrehajtásra optimalizált virtuális gép, ami további teljesítményjavulást hoz.

Dinamikus fordítás a dinamikus nyelvhez

A fejlesztők közlése szerint a HipHoppal az oldalak bonyolultságától függően nagyjából felére csökkenthető a processzorokon a terhelés, ami hatalmas megtakarítást jelent ebben a léptékben. A Facebook most továbbfejlesztette a technológiát és egy virtuális gépet alkotott PHP-hoz. A vállalat már élesben is használja a technológiát és a tervek szerint a jövőben minden PHP-t ezen futtat - a 800 millió felhasználóval rendelkező közösségi oldal hatalmas mennyiségű komplex PHP kódot hajt végre, a futási teljesítmény növelésével jelentősen csökkentheti szerverei terhelését.

"A HipHoppal sokat javult a kódjaink teljesítménye, de a statikus fordítás miatt az optimalizálás időrablóvá vált" - írja a technológia születését és működését taglaló blogbeegyzésben Jason Evans, a HipHopon dolgozó mintegy húszfős fejlesztőcsapat tagja. A következő lépés egy önálló HipHop interpreter megírása volt, amelyet a Facebook PHP fejlesztői elsődleges eszközként használnak, ezt viszont karban tartani nehéz. "A múlt év elején létrehoztunk egy kis csapatot annak kikísérletezésére, hogy lehet a PHP kódot dinamikusan gépi kódra fordítani. Ennek az eredményeképp létrejött a HipHop runtime-on alapuló PHP-végrehajtó motor, amit HipHop Virtual Machine-nek hívunk"

A végrehajtómotor egy új, a PHP-t HipHop bájtkódra alakító interpreterből és a bájtkódot x64 kóddá alakító dinamikus fordítóból áll, írja Evans. A dinamikus fordítás bevezetésére azért volt szükség Evans szerint, mert a PHP egy dinamikus nyelv, az alkalmazások futását jelentősen gyorsította, de a fejlesztését és optimalizálását  megnehezítette a HipHop, ami statikus fordítást használt. "Sok Facebook-fejlesztő napokat tölt PHP fejlesztéssel a szerkesztés-újratöltés-debuggolás végtelen körét járva. - írja Evans. "A 8 másodperces és 5 másodperces újratöltés közötti időkülönbség, amir a hphpi-ról hhvm-re váltás ad, nagy különbséget eredményez a termelékenységben és ez még nagyobb lesz amikor bekapcsoljuk a fordítót."

Még 60 százalékos gyorsulás

A Facebook saját kódjaival futtatott mérései szerint a HipHop virtuális gépen futó PHP teljesítménye átlagosan 60 százalékkal múlja felül az eredeti HipHopét, miközben tizedannyi memóriával is beéri. Evans szerint a hhvm projekt 90 százalékban készen áll, "most jön a következő 90 százalék hogy tényleg jó legyen". A HipHophoz hasonlóan a virtuális gép kódját is megosztja a közösséggel a Facebook, az érdeklődők a GitHubról tölthetik le - a vállalat természetesen arra számít, hogy a közösség is csatlakozik és a hibajelentések, fejlesztési javaslatok és technikai viták során a projekt folyamatosan fejlődni fog.

a címlapról