A Meta nyílt forráskódúvá tette a Rebalancer feladatelosztó rendszerét
A C++ alapú, Pythonon keresztül is elérhető szoftver naponta mintegy 40 millió feladatot kezel, és az Apache 2.0 licenc mellett dokumentációval, PyPI csomaggal valamint hibakereső felülettel is rendelkezésre áll.

A Meta rendszereiben felmerülő feladat-elosztási problémákra kínál megoldást a Rebalancer, például adatközpontokba kerülő rackek, szolgáltatásokhoz rendelt szerverek, szerverekhez kiosztott feladatok vagy adatközpontokba irányított felhasználói forgalom esetében. A könyvtár két fő kihívásra reagál: a használhatóságra és a skálázhatóságra. A fejlesztők gyakran nehezen alakítják át a szabályokat precíz képletekké, és sok probléma NP-nehéz, ami meghaladja a kereskedelmi megoldások kapacitását. A Rebalancer erre úgy reagál, hogy szétválasztja a probléma specifikációját a megoldástól. (MarkTechPost)
Az adat specifikáció rétegei
A specifikációs nyelv három rétegből áll: modellezési építőelemekből (dimenziók, partíciók, hatókörök és kihasználtság), egy kifejezés API-ból (aggregáció és transzformáció) és egy spec API-ból, amely előre definiált célokat és korlátokat tartalmaz. A Meta példájában a feladatokat objektumokként, a szervereket bin-ekként, a rackeket pedig hatókörként modellezik. A CapacitySpec korlátozza a szerverenkénti CPU- és tárhelykapacitást, míg a GroupCountSpec egy racken belül csak egyféle feladatot engedélyez. A BalanceSpec pedig kiegyensúlyozza a szerverek kihasználtságát mindkét dimenzióban.
Két megoldó: MIP és lokális keresés
A Rebalancer a specifikációt egy irányított, aciklikus kifejezésgrafikonná fordítja. A felhasználók megadhatnak egy kezdeti kiosztást és egy leállítási feltételt. A már sértett korlátok magas prioritású célokká válnak. Az optimális megoldó a grafikonból vegyes egész számprogramot (MIP) hoz létre, amely FICO Xpress, Gurobi vagy HiGHS szoftverekkel futtatható.
A változók aggregálása és a szimmetria megtörése zsugorítja a modelleket. A legnagyobb problémákhoz a Meta lokális keresést használ, amely közvetlenül a kifejezésgrafikonon dolgozik, objektumok más bin-ekbe való mozgatását vizsgálja. Ez a módszer másodpercenként millió számítási értékelést ér el, és a keresési teret levágja.
Termelési adatok és felhasználási esetek
A Meta belső használatában a Rebalancer naponta körülbelül 40 millió feladatot old meg, több mint 30 különböző formulációban. A P99 megoldási idő 12 másodperc 265 ezer objektum és 3,2 ezer bin esetén. Az egymilliónál több objektumot és 5 ezernél több bint tartalmazó problémák átlagosan 171 másodpercet vesznek igénybe, több mint 3400 futás során. A könyvtár ideális feladatok elosztására klasztereken, forgalom és munkaterhelések kiegyensúlyozására régiók között, valamint infrastruktúrán kívüli műveleti feladatokhoz, mint például támogatási jegyek mérnökökhöz rendelése.
Hibakeresés és alternatívák
A Rebalancer Explorer egy Dockerizált webes felület, amely segít a modellezőknek a megoldó viselkedésének hibakeresésében, megmutatva a kötő korlátokat, a relaxációs hatásokat és az okokat, amiért egy objektum egy adott bin-be került. A Meta Rebalancer a Google OR-Tools és a Timefold Solver mellett jelenik meg, de előnye az egységes specifikáció, amely lokális kereséssel és MIP-megoldóval is futtatható. A szoftver naponta mintegy 40 millió feladatot kezel.