Facebook a lansat codul sursă Cinder care este utilizat de Instagram

Facebook a fost dezvăluit recent printr-o postare, eliberarea codului sursă al proiectului Cinder, care este o furculiță a ramurii CPython și implementarea principală de referință a limbajului de programare Python.

Zgură utilizat în infrastructura de producție a Facebook pentru a alimenta Instagram și include optimizări pentru îmbunătățirea performanței. Codul a fost publicat pentru a discuta despre posibilitatea migrației optimizărilor gata făcute către mainstream-ul CPython și pentru a ajuta alte proiecte de îmbunătățire a performanței CPython.

Facebook menționează că nu va sprijini Cinder ca un proiect open source separat iar codul este prezentat sub forma în care este utilizat în infrastructura companiei, fără documentație suplimentară.

De asemenea, Cinder nu se promovează ca alternativă la CPython - principalul obiectiv de dezvoltare este îmbunătățirea CPython în sine.

Codul Cinder este considerat destul de fiabil și testat în medii de producție, dar dacă problemele sunt identificate, acestea vor trebui soluționate singure, deoarece Facebook nu garantează că va răspunde la mesajele de eroare externe și trage cereri.

În același timp, Facebook nu exclude cooperarea constructivă cu comunitatea și este gata să discute idei despre cum să faci Cinder și mai rapid sau cum să accelerezi transferul modificărilor pregătite în cadrul principal CPython.

Principalele optimizări implementate în Cinder sunt:

  • Memorarea în cache a codului online bytecode: Esența metodei este de a identifica situațiile tipice de execuție a codului de operare care pot fi optimizate dinamic și de a înlocui acel cod de opțiune cu opțiuni specializate mai rapide.
  • Evaluare de rutină: Pentru apelurile de funcții asincrone care sunt procesate imediat, rezultatul acelor funcții este înlocuit direct fără a crea o coroutină și fără a invoca o buclă de eveniment. În codul folosit de Facebook, pe care îl folosește intens, optimizarea duce la o accelerare de aproximativ 5%.
  • Compilare selectivă JIT la nivel de metode și funcții individuale: este activat de opțiunea „-X jit” sau de variabila de mediu PYTHONJIT = 1 și permite accelerarea mai multor teste de performanță de 1,5 până la 4 ori.
    Lista funcțiilor pentru care ar trebui activat JIT poate fi determinată pe baza rezultatelor profilului. În viitor, se așteaptă suport pentru compilarea dinamică JIT bazată pe analiza internă a frecvenței apelurilor funcționale, dar având în vedere specificul proceselor de lansare pe Instagram, compilarea JIT este potrivită și pentru Facebook în etapa inițială.
    JIT convertește mai întâi bytecode-ul Python într-o reprezentare intermediară la nivel înalt (HIR), care este în mod rezonabil aproape de bytecode-ul Python, dar este conceput pentru a utiliza o mașină virtuală bazată pe înregistrări, mai degrabă decât o mașină virtuală bazată pe înregistrări. informații suplimentare despre tip și detalii relevante pentru performanță. HIR este apoi convertit într-un formular Static Single Allocation (SSA) și suferă etape de optimizare pe baza numărului de referințe și a datelor de utilizare a memoriei. Ca rezultat, se generează o reprezentare intermediară de nivel scăzut (LIR), care este aproape de limbajul de asamblare.
  • Mod strict pentru module:Funcționalitatea are trei componente: tipul StrictModule. Un analizor static capabil să determine că execuția unui modul nu afectează codul din afara acelui modul.
  • Python static: este un compilator experimental de bytecode care folosește adnotări de tip pentru a genera bytecode care este specific fiecărui tip și rulează mai rapid prin compilarea JIT. În unele teste, combinația Static Python și JIT demonstrează o îmbunătățire a performanței de până la 7x față de CPython tipic. În multe situații, rezultatele sunt evaluate ca și cum ar fi utilizate compilatoarele MyPyC și Cython.

În cele din urmă dacă sunteți interesat să puteți obține codul Cinder sau aflați mai multe despre aceasta, puteți consulta detalii în următorul link.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.