Το Facebook κυκλοφόρησε τον πηγαίο κώδικα Cinder που χρησιμοποιείται από το Instagram

Το Facebook αποκάλυψε πρόσφατα μέσω μιας ανάρτησης, απελευθερώνοντας τον πηγαίο κώδικα του έργου Cinder, το οποίο είναι ένα πιρούνι του κλάδου CPython και την κύρια εφαρμογή αναφοράς της γλώσσας προγραμματισμού Python.

Ασβόλη χρησιμοποιείται στην υποδομή παραγωγής του Facebook για να τροφοδοτήσει το Instagram και περιλαμβάνει βελτιστοποιήσεις για τη βελτίωση της απόδοσης. Ο κώδικας έχει δημοσιευτεί για να συζητήσει τη δυνατότητα μετεγκατάστασης έτοιμων βελτιστοποιήσεων στο mainstream του CPython και να βοηθήσει άλλα έργα βελτίωσης της απόδοσης CPython.

Το Facebook αναφέρει ότι δεν θα υποστηρίζει το Cinder ως ξεχωριστό έργο ανοιχτού κώδικα και ο κωδικός παρουσιάζεται στη μορφή με την οποία χρησιμοποιείται στην υποδομή της εταιρείας, χωρίς πρόσθετα έγγραφα.

Το Cinder δεν προωθεί τον εαυτό του ως εναλλακτική λύση για το CPython - ο κύριος στόχος ανάπτυξης είναι η βελτίωση του ίδιου του CPython.

Ο κωδικός Cinder θεωρείται αρκετά αξιόπιστος και δοκιμάστηκε σε περιβάλλοντα παραγωγής, αλλά Εάν εντοπιστούν προβλήματα, θα πρέπει να επιλυθούν μόνα τους, καθώς το Facebook δεν εγγυάται ότι θα ανταποκριθεί σε εξωτερικά μηνύματα σφάλματος και τραβήξτε αιτήματα.

Ταυτόχρονα, το Facebook δεν αποκλείει εποικοδομητική συνεργασία με την κοινότητα και είναι έτοιμο να συζητήσει ιδέες για το πώς να κάνει το Cinder ακόμη πιο γρήγορο ή πώς να επιταχύνει τη μεταφορά των έτοιμων αλλαγών στο κύριο πλαίσιο του CPython.

Οι κύριες βελτιστοποιήσεις που εφαρμόζονται στο Cinder είναι:

  • Online κρυφή μνήμη Bytecode: Η ουσία της μεθόδου είναι ο εντοπισμός τυπικών καταστάσεων εκτέλεσης opcode που μπορούν να βελτιστοποιηθούν δυναμικά και να αντικατασταθεί αυτός ο opcode με ταχύτερες εξειδικευμένες επιλογές.
  • Τακτική αξιολόγηση: Για κλήσεις ασύγχρονης συνάρτησης που υποβάλλονται σε άμεση επεξεργασία, το αποτέλεσμα αυτών των συναρτήσεων παρακάμπτεται απευθείας χωρίς να δημιουργηθεί μια κορουτίνα και χωρίς να γίνεται επίκληση ενός βρόχου συμβάντος. Στον κώδικα που χρησιμοποιεί το Facebook, τον οποίο χρησιμοποιεί σε μεγάλο βαθμό, η βελτιστοποίηση οδηγεί σε επιτάχυνση περίπου 5%.
  • Επιλεκτική συλλογή JIT στο επίπεδο μεμονωμένων μεθόδων και λειτουργιών: Ενεργοποιείται από την επιλογή "-X jit" ή τη μεταβλητή περιβάλλοντος PYTHONJIT = 1 και σας επιτρέπει να επιταχύνετε πολλές δοκιμές απόδοσης κατά 1,5 έως 4 φορές.
    Η λίστα των λειτουργιών για τις οποίες πρέπει να ενεργοποιηθεί το JIT μπορεί να καθοριστεί με βάση τα αποτελέσματα του προφίλ. Στο μέλλον, αναμένεται υποστήριξη για δυναμική συλλογή JIT βάσει εσωτερικής ανάλυσης της συχνότητας κλήσεων λειτουργίας, αλλά λαμβάνοντας υπόψη τις λεπτομέρειες των διαδικασιών εκκίνησης στο Instagram, η συλλογή JIT είναι επίσης κατάλληλη για το Facebook στο αρχικό στάδιο.
    Το JIT μετατρέπει πρώτα τον bytecode του Python σε μια ενδιάμεση αναπαράσταση υψηλού επιπέδου (HIR), η οποία είναι λογικά κοντά στο bytecode της Python, αλλά έχει σχεδιαστεί για να χρησιμοποιεί μια εικονική μηχανή βασισμένη σε εγγραφή και όχι μια εικονική μηχανή βασισμένη σε αρχεία. χρησιμοποιεί πληροφορίες τύπου και πρόσθετες λεπτομέρειες σχετικές με την απόδοση. Στη συνέχεια, το HIR μετατρέπεται σε φόρμα Στατικής Μονής Κατανομής (SSA) και υφίσταται στάδια βελτιστοποίησης με βάση τον αριθμό αναφοράς και τα δεδομένα χρήσης μνήμης. Ως αποτέλεσμα, δημιουργείται μια ενδιάμεση αναπαράσταση χαμηλού επιπέδου (LIR), η οποία είναι κοντά στη γλώσσα συναρμολόγησης.
  • Αυστηρή λειτουργία για ενότητες:Η λειτουργικότητα έχει τρία στοιχεία: τον τύπο StrictModule. Ένας στατικός αναλυτής ικανός να προσδιορίσει ότι η εκτέλεση μιας μονάδας δεν επηρεάζει τον κώδικα εκτός αυτής της ενότητας.
  • Στατικό Python: είναι ένας πειραματικός μεταγλωττιστής κωδικών bytecode που χρησιμοποιεί σχολιασμούς τύπου για τη δημιουργία κωδικού bytec που είναι συγκεκριμένος για κάθε τύπο και εκτελείται πιο γρήγορα μέσω της σύνταξης JIT. Σε ορισμένες δοκιμές, ο συνδυασμός Static Python και JIT καταδεικνύει έως και 7 φορές βελτίωση της απόδοσης σε σχέση με το τυπικό CPython. Σε πολλές περιπτώσεις, τα αποτελέσματα αξιολογούνται σαν να χρησιμοποιήθηκαν οι μεταγλωττιστές MyPyC και Cython.

Τελικά εάν ενδιαφέρεστε να αποκτήσετε τον κωδικό Cinder ή μάθετε περισσότερα για αυτό, μπορείτε να συμβουλευτείτε το λεπτομέρειες στον παρακάτω σύνδεσμο.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.