FPGA duplázza a Bing teljesítményét
Hardveresen gyorsítható számos adatközponti számítási feladat - találták a Microsoft Research kutatói. A Bing egyik, az oldalak rangsorolásával foglalkozó algoritmusa alá tettek programozható FPGA-kat, az eredmény minden tekintetben meghaladta a várakozásokat.
A külső, specializált gyorsítólapkák használata (a mérnöki-tudományos számítások esetén alkalmazott GPU-kat leszámítva) nem terjedt el széles körben az adatközpontokban. Ennek több oka van a Microsoft szerint, a nagyon nagy méretű, több tízezer vagy több százezer szervert használó központokban a homogenitás felülír minden esetleges hozadékot hatékonyságban vagy gyorsaságban - az egységes hardverplatform nagyon megkönnyíti a virtualizált környezet menedzsmentjét, az alkalmazások hordozhatóságát. A másik problémát a gyors fejlődés jelenti, a gyorsítók egymást követő generációi különböző képességekkel rendelkeznek, így egy hardveres frissítés nagyon megbontja a fent említett homogenitást.
Potenciális megoldás az FPGA-k, vagyis az utólag, gyártás után, használat közben újraprogramozható gyorsítók használata. Az ilyen lapkák tetszőlegesen, az adott számítási feladathoz rajzolhatóak át szoftveresen, ezzel csökkenthető a fent említett homogenitási-inkompatibilitási probléma, miközben olyan dedikált áramkörök huzalozhatóak be, amelyek jelentős gyorsulást hozhatnak az általános célú processzorokkal szemben.
Jó az FPGA, de kicsi
Az ilyen lapkák nem terjedtek el széles körben sem a szerverekben, sem a kliensgépekben. A Microsoft szerint ennek az a fő oka, hogy az újraprogramozható lapkák jóval "kisebbek" a fix társaiknál, effektíve lényegesen kevesebb tranzisztor áll rendelkezésre a számítási feladatok elvégzéséhez, jellemzően még a legnagyobb FPGA-k sem elegendőek egy komplexebb feladat hardveres implementálásához.
Mi az az FPGA?
A Microsoft Research ezért azt találta ki, hogy az FPGA-kat rendszerbe, pipeline-ba szervezi, amelyben egy-egy lapka csupán egy részfeladatot végez el, majd az eredményt átadja további feldolgozásra a következő processzornak. A megoldás előnye, hogy kihasználja a lapkák egyébként igen látványos sebességét, hátránya, hogy rendszerszinten további komplexitást hoz. A kísérleti rendszerben a Microsoft kutatói a Bing keresőalgoritmusának egy elemét, az oldalak és dokumentumok rangsorolásának feladatát portolták FPGA-kra. A futószalag nyolcfokozatú, minden fokozatot egyénileg huzalozott FPGA futtat, hardveresen.
A Catapult névre keresztelt rendszer 48 darab, fél rack szélességű, 1U magas, egy-egy FPGA-t tartalmazó szerverből épül fel, amelyek egy passzív backenden keresztül 6x8-as kétdimenziós tórusz struktúrába rendeződnek. Az FPGA-k között közvetlen kapcsolat van, amely SerialLight III-as full-duplex 10 gigabites interfészt használ, mikroszekundumos késleltetéssel a szerverek közötti, illetve az adatközponti hálózat infrastruktúrájától függetlenül. Egy-egy FPGA mellett 8 gigabájt DDR3 memória kapott helyet, a kutatók szerint ez ideális méret a feladat elvégzéséhez, noha a sávszélesség némileg korlátozta az elérhető maximális sebességet. A kísérletben felhasznált lapkák egyébként az Altera csúcskategóriás Stratix V D5 modellei voltak, amelyek jelentős méretű újrahuzalozható területtel rendelkeznek.
A kísérlet legfontosabb kérdése az adatközponti felhasználás két nagy problémáját érintette: az FPGA-k felhasználásával növekszik-e annyival a teljesítmény, mint amennyivel ezek a hardverek drágábbak, illetve nő-e az egységnyi fogyasztásra vetített teljesítmény - és beilleszthető-e ez az adatközpontokban elvárt sűrűségbe? A kísérlet szerint az 1632 szerverből/FPGA-ból épített rendszer 95 százalékkal (tehát szinte duplájára) gyorsult az FPGA-t nem használó, egyébként azonos rendszerhez képest. Ezzel szemben a rendszer teljes élettartamára vetített költsége 30 százalékkal magasabb, fogyasztása pedig csak 10 százalékkal nőtt. Érdemes megjegyezni, hogy a 95 százalékos gyorsulás rendszerszinten értendő, az egyes FPGA-k sebessége sokszorosa az általános felhasználású processzorokénak.
Bonyolult, de megoldható az integráció
Az FPGA-k használata azonban ennél jóval komplexebb kérdéseket is felvet a rendszerintegráció oldalán. Az újraprogramozható lapkák bevezetésére a futtatott alkalmazást, a gazdarendszert és az adatközpont menedzsmentrétegét is fel kell készíteni, ami nehéz, de a kutatók szerint megoldható feladat.
Az első kérdés a hibakezelés. A nagyméretű, több ezres telepítések esetében az egyes eszközök meghibásodása mindennapos, ezért ezt nem egyedi, esetleges problémaként, hanem rendszerszinten kell kezelni. Az FPGA-kat ezért integrálták a Microsoft saját Health Monitor eszközével, ez felel a fizikai szerverek hibakezeléséért, igyekszik a szoftveres hibákat orvosolni, a hardveres hibákat pedig jelezni az adatközpont személyzetének. Mivel az FPGA-kkal vadonatúj hibalehetőségek hosszú sora jelent meg a rendszerben, amelyek jelentős része ráadásul szoftveresen korrigálható, erre a Health Monitort is fel kellett készíteni.
Eggyel magasabb szinten a szoftveres redundanciát is meg kell oldani, a kieső gép egyrészt nem ránthatja magával a teljes tömböt, másrészt helyére be kell konfigurálni egy újat. Ez hagyományos szerverek esetében többé-kevésbé megoldott problémának számít, az FPGA-tömbök miatt azonban ezt az automatizmust is újra ki kellett dolgozni. Ha a fent említett Health Monitor szoftveresen javíthatatlan problémát talál, akkor bonyolult algoritmus dönti el, hogy a tömb képes-e tovább működni - ha igen, akkor a Mapping Manager újraprogramozza az FPGA-kat a megfelelő szerepkörre és a potenciálisan korrupt állapotot lenullázza, az épp végzett feladatot eldobja.
Külön megoldandó problémát jelent a felprogramozás alatt álló FPGA-k kezelése. A rekonfiguráció (áthuzalozás) során a lapka destabilizálni tudja a gazdarendszert, mivel egy hibásan működő PCI Express eszközként látszik a rendszer oldaláról. Másik probléma, hogy a belső hálózatra felprogramozás alatt véletlenszerű forgalmat, zajt küld, ami egyes esetekben befolyásolhatja a többi lapka stabil működését is. Harmadrészt a teljes tömb újraprogramozása esetén az egyes lapkákon a művelet nem egyszerre fejeződik be, a késve érkezők pedig hibás adatokkal bombázzák addig az elsőket.
A Gitlab mint DevSecOps platform (x) Gyere el Radovan Baćović (Gitlab, Data Engineer) előadására a november 7-i DevOps Natives meetupon.
A megoldást a lapkák közötti forgalom alapos beszabályozása jelentette, az átprogramozás alatt az FPGA-k "TX Halt" üzeneteket küldenek, a tömbszintű átkonfiguráció esetén pedig minden lapka "RX Halt" állapottal áll fel, minden beérkező üzenetet automatikusan eldob - amíg a központi Mapping Manager oldaláról nem jön üzenet, hogy a tömb minden lapkája elkészült, indulhat a munka.
Kettéosztott szoftver
A bevezetés másik fontos tanulsága, hogy a felprogramozást érdemes két részre osztani, ezeket shell és role néven fejlesztette a Microsoft. A shell foglalkozik az FPGA kötött funkciós részeivel, ez lapkaspecifikus, ez felel például az FPGA-FPGA és a gazda-FPGA kommunikációért, adatelérésért, hibakeresésért, hardveres debug-funkciókért. A shellt elegendő egy FPGA-hoz egyszer megírni, lapkák (és alkalmazások) között hordozható.
A role ezzel szemben az alkalmazásspecifikus részt jelenti - esetünkben az említett nyolc pipeline-fokozat egyikének hardveres implementációját. Ez a rész nem kötődik a lapka konkrét hardveréhez, vagyis gyártók között kis átalakítással hordozható. A kutatók szerint a fejlesztés következő mérföldköve a shell és a role teljes leválasztása lesz, így például a role újraprogramozása során a shell rész működőképes maradjon. Szintén további fejlesztéssel elérhető a shell által elfoglalt hely minimalizálása, ez jelenleg az FPGA területének mintegy 23 százalékát teszi ki.
Hogyan tovább?
Az FPGA-k használata adatközponti környezetben nagyon izgalmas kérdéseket vet fel. A Microsoft az ilyen lapkák rendszerintegrációs nehézségeiről fontos tapasztalatokat szerzett, amelyeket a jövőben fel is kíván használni: a cég ugyanis eldöntötte, hogy a tesztkörnyezet után a lapkák éles környezetben, valódi feladatot futtató adatközpontban is helyet nyertek. A tervek szerint a hátra lévő integrációs feladatok elvégzésével jövő év elején lendülhetnek munkába az első ilyen szerverek.
A lépés annál aggasztóbb lehet az Intel számára. A Microsoft kutatási beszámolója szerint a kísérletet egyértelműen az indokolta, hogy az általános célú processzorok sebességének növekedése drámaian lelassult az elmúlt években, az adatközpontokra pedig egyre nagyobb méretű feladatok zúdulnak. Jelenleg erre az egyetlen megoldás újabb és újabb adatközpontok felépítése és benépesítése, ez azonban hosszabb távon gyorsan igen költségessé váló megoldás - a kiút például az ilyen FPGA-k vagy az ARM-os lapkákkal szerelt specializált kiszolgálók tömeges elterjedése lehet.
A kutatási beszámoló további részletekkel a Microsoft Research oldalán érhető el, érdemes fellapozni.