A Facebook kiadta a Cinder forráskódot, amelyet az Instagram használ

A Facebook bemutatta nemrég egy bejegyzés útján, a Cinder projekt forráskódjának kiadása, ami a CPython ág villája és a Python programozási nyelv fő referencia-megvalósítása.

salak a Facebook termelési infrastruktúrájában használják az Instagram működéséhez és optimalizálást tartalmaz a teljesítmény javítása érdekében. A kódot azért tették közzé, hogy megvitassák a kész optimalizációk áttelepítésének lehetőségét a CPython mainstreamjébe és más CPython teljesítményjavító projektek támogatására.

A Facebook megemlíti, hogy nem fogja támogatni a Cinder-t külön nyílt forráskódú projektként és a kódot abban a formában mutatják be, ahogyan azt a vállalat infrastruktúrájában használják, további dokumentáció nélkül.

A Cinder sem a CPython alternatívájaként hirdeti önmagát - a fő fejlesztési cél maga a CPython fejlesztése.

A Cinder kódja meglehetősen megbízható és gyártási környezetben tesztelték, de ha problémákat észlelnek, azokat önállóan kell megoldani, mivel a Facebook nem garantálja, hogy reagálni fog a külső hibaüzenetekre és húzza a kéréseket.

Ugyanakkor a Facebook nem zárja ki a közösséggel folytatott konstruktív együttműködést, és készen áll arra, hogy megvitasson ötleteket arról, hogyan lehetne még gyorsabbá tenni a Cinder programot, vagy hogyan lehetne felgyorsítani az előkészített változtatások átadását a CPython fő keretrendszerébe.

A Cinder főbb optimalizálásai a következők:

  • Bytecode online gyorsítótár: A módszer lényege, hogy meghatározza a dinamikusan optimalizálható tipikus opcode végrehajtási helyzeteket, és ezt az opcode-ot gyorsabb speciális opciókkal helyettesítse.
  • Rutin értékelés: Azonnal feldolgozott aszinkron függvényhívások esetében ezeknek a függvényeknek az eredménye közvetlenül felülírásra kerül, anélkül, hogy koroutint hozna létre, és eseményhívást nem kezdeményez. A Facebook által használt kódban, amelyet erősen használ, az optimalizálás körülbelül 5% -os gyorsulást eredményez.
  • A JIT szelektív összeállítása az egyes módszerek és funkciók szintjén: a "-X jit" opció vagy a PYTHONJIT = 1 környezeti változó engedélyezi, és lehetővé teszi számos teljesítményteszt 1,5-4-szeres gyorsítását.
    A profil eredményei alapján meghatározható azon funkciók listája, amelyekhez a JIT-et engedélyezni kell. A jövőben a függvényhívási frekvencia belső elemzésén alapuló dinamikus JIT-összeállítás támogatása várható, de figyelembe véve az Instagram indítási folyamatainak sajátosságait, a JIT-összeállítás a kezdeti szakaszban a Facebook számára is megfelelő.
    A JIT először átalakítja a Python byte-kódját magas szintű köztes reprezentációvá (HIR), amely ésszerűen közel áll a Python bytecode-hoz, de úgy tervezték, hogy rekord alapú virtuális gépet használjon, nem pedig veremben lévő virtuális gépet, és típusinformációkat is felhasznál. és a teljesítmény szempontjából releváns további részletek. A HIR ezt követően statikus egyszeri allokáció (SSA) formává konvertálódik, és optimalizálási szakaszokon megy keresztül a referenciaszám és a memóriahasználati adatok alapján. Ennek eredményeként egy alacsony szintű közbeiktatás (LIR) jön létre, amely közel áll az összeállítási nyelvhez.
  • Szigorú mód modulok számára:A funkciónak három összetevője van: a StrictModule típus. Statikus analizátor, amely képes megállapítani, hogy a modul végrehajtása nem befolyásolja az adott modulon kívüli kódot.
  • Statikus Python: egy kísérleti bájtkód-fordító, amely típusjegyzetekkel állítja elő az egyes típusokra jellemző és a JIT-fordításon keresztül gyorsabban futó bájtkódot. Bizonyos tesztekben a Static Python és a JIT kombinációja akár 7-szeres teljesítményjavulást mutat a tipikus CPythonhoz képest. Sok esetben az eredményeket úgy értékelik, mintha a MyPyC és a Cython fordítókat használták volna.

Végül ha érdekli, hogy megszerezhesse a Cinder kódot vagy többet megtudhat róla, konzultálhat a részletek a következő linken.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.