Szerző: Gálffy Csaba

2014. augusztus 11. 11:36

Terheléselosztással energiát spórolni?

Autoscale néven új generációs terheléselosztó (load balancer) algoritmust dolgozott ki a Facebook. A rendszer célja optimális terhelési tartományban tartani a szervereket, ezzel 10-15 százalékkal sikerült növelni az energiahatékonyságot.

Meglepő ponton, a terheléselosztásnál kezdte rendszereinek áthangolását a Facebook a magasabb energiahatékonyság érdekében. A sok alacsony terhelésen dolgozó gép helyett néhány, jól kihasznált gép jelenti az optimális megoldást, a komplex vezérlőrendszert Autoscale néven vezette be a közösségi szolgáltatás.

Új load balancing algoritmus

A load balancing feladata hagyományosan azonos terhelésen tartani a szervereket, arányosan elosztani a beérkező kéréseket a webes klaszter (fürtözött rendszer) gépei között. Erre a Facebook eddig egy módosított round-robin módszert használt, ez a lekéréseket egyszerűen a beérkezés sorrendjében kiosztja a gépek között. A megoldás előnye, hogy viszonylag egyszerűen megvalósítható, a kéréseket arányosan elosztva nagyjából azonos terhelést kap minden szerver. Ugyan nem minden kérés jelent pontosan ugyanakkora terhelést, a megközelítés a nagy számok törvénye alapján kielégítően működik.

Mennyit fogyaszt egy lekérés (joule/web interaction)? (egy korábbi kutatásból)

A round-robin módszer hátránya, hogy nem veszi figyelembe a kiszolgáló gépek optimális üzemi terhelését. Ahogy a belsőégésű motorok, a webszerverek is viszonylag szűk terhelési tartományban nyújtanak maximális kérés/watt arányt, a sávon kívül nem optimális a kihasználás. A Facebook által használt szerverek terhelés nélkül (0 kérés per másodperc mellett) mintegy 60 wattot fogyasztanak, mivel a processzorok és számos más elem alacsony energiájú állapotba kerül, gyakorlatilag lekapcsol. A fogyasztás azonban már alacsony terhelés mellett is felugrik 130 wattra, ehhez képest már nem nagy további emelkedés a közepes terhelés 150 wattja.

A közösségi szolgáltatás adott földrajzi régiókat mindig igyekszik közeli adatközpontokból kiszolgálni. Ennek mellékhatása, hogy míg a globális terhelés viszonylag kiegyenlített, a regionális forgalmat kiszolgáló adatközpontokban már jelentkezik a napszakok hatása, a hajnali órákban a déli csúcs töredékére esik a bejövő forgalom például. A Facebook eredeti terheléselosztási algoritmusával a terhelés a legtöbb napszakban az optimális szint alatt maradt, így adta magát a megoldás: sok szerver alacsony terhelése helyett néhány kiszolgálóra koncentrálni a beérkező kéréseket, amelyek így optimális tartományban dolgozhatnak, a külső terhelés növekedésével pedig újabb szervereket bevonni a munkába, egyenként.

Terhelés és CPU-kihasználtság függvénye

Összetett vezérlési modell

A fenti elképzelés elég egyszerűen hangzik, ennek implementálása azonban viszonylag komplex vezérlősík ("control plane") fejlesztését igényli. Az Autoscale folyamatosan figyeli az aktívnak jelölt szerverek terhelését és dinamikusan módosítja a terhelés függvényében ezek számát úgy, hogy minden szerver legalább közepes terhelésen működjön. Az aktív és passzív szerverek listáját a vezérlő átadja a load balancernek, a passzívként jelölt kiszolgálók nem kapnak webes forgalmat, így azok felszabadulnak más, háttérfeladatok ellátására (videokonvertálás, képátméretezés, stb.) vagy alacsony fogyasztás mellett ketyegnek tovább.

A visszacsatolásos rendszer központi eleme a vezérlő, amelynek pontosan meg kell jósolnia a szerverek terhelését és elegendő tartalékot kell képeznie hirtelen megnövekedő forgalom esetére is. Ehhez a cég kísérletekkel felmérte a terhelés-teljesítmény profilt, amely a hardver terhelésének és az elvégzett munkának (kiszolgált lekérések) függvényét adja. Ennek birtokában a vezérlő elég pontosan meg tudja határozni, hogy adott típusú forgalom mekkora hardverterhelést jelent és ehhez hány gépet kell aktiválnia. A visszacsatolás révén pedig automatikusan finomhangolni is tudja a rendszert, a megvalósult terhelés folyamatos követésével.

Holtidőben jelentős megtakarítás, csúcsidőben azonos fogyasztás

Fejlesztő vagy? Segíts! Hack the Crisis. Gyere hétvégén fejleszteni, csatlakozz a hazai fejlesztői közösséghez!

A bejegyzés szerint az Autoscale az előzetes tesztek alapján már az éles (production) rendszereken működik, az elért fogyasztáscsökkenés pedig jelentős. A Facebook mérései szerint a legalacsonyabb terhelést hozó órákban a fogyasztást 27 százalékkal tudta mérsékelni az új elosztó algoritmus, a 24 órás periódus alatt pedig 10-15 százalékos az energiamegtakarítás. Figyelembe véve, hogy az adatközpont működési költségeinek jelentős részét az energia teszi ki, egy Facebook-méretű cégnél pedig a dolgozók bérköltsége mellett az egyik legnagyobb tétel a villanyszámla, ennek komoly pénzügyi vonzata is van - a pontos összeg persze nem nyilvános.

A következő lépés

A bejegyzés szerint az Autoscale bevezetése csak az első lépés, amit a Facebook az adatközpontok energiahatékonyságának növelésére tett, a szoftverstack egyes további elemeinek módosításával a cég további jelentős megtakarításokat remél. Pontos részleteket nem közölt a vállalat, de az operációs rendszertől az egyedi EFI/BIOS beállításokig, az alkalmazások áthangolt viselkedéséig rengeteg ponton optimalizálható még a kiszolgálók működése. Mivel a cég maga tervezi, fejleszti a házon belül használt hardverek nagy részét, a Facebook egészen alacsony szintű hozzáféréssel is rendelkezik a szerverekhez, így például saját hatáskörben akár a processzorok energiagazdálkodását is módosíthatja bizonyos keretek között.

a címlapról