Facebook нь Instagram ашигладаг Cinder-ийн эх кодыг гаргасан

Фэйсбүүкийг нээлээ саяхан шуудангаар дамжуулан, Синдер төслийн эх кодыг гаргах, тэр нь CPython салбарын сэрээ болон Python програмчлалын хэлний үндсэн лавлагааны хэрэгжилт.

Синдер Instagram-ийг хүчирхэгжүүлэхийн тулд Facebook-ийн үйлдвэрлэлийн дэд бүтцэд ашигладаг мөн гүйцэтгэлийг сайжруулах оновчлолыг багтаасан болно. Бэлэн оновчлолыг CPython-ийн үндсэн урсгал руу шилжүүлэх, бусад CPython-ийн гүйцэтгэлийг сайжруулах төслүүдэд туслах боломжийг хэлэлцэх зорилгоор энэхүү кодыг нийтлэв.

Фэйсбүүк нь Синдерийг тусдаа нээлттэй эхийн төсөл болгон дэмжихгүй гэдгээ дурдсан байна кодыг нэмэлт баримт бичиггүйгээр компанийн дэд бүтцэд ашиглаж буй хэлбэрээр толилуулсан болно.

Синдер нь өөрийгөө CPython-ийн альтернатив хувилбар гэж сурталчлахгүй байгаа бөгөөд хөгжлийн гол зорилго нь CPython-ийг сайжруулах явдал юм.

Синдерийн кодыг боломжийн найдвартай гэж үздэг болон үйлдвэрлэлийн орчинд туршиж үзсэн боловч хэрэв асуудал илэрсэн бол фэйсбүүк нь гадны алдааны мэдэгдэлд хариу өгөх баталгаа өгөхгүй тул тэдгээрийг өөрсдөө шийдвэрлэх шаардлагатай болно мөн хүсэлтийг татах.

Үүний зэрэгцээ, Фэйсбүүк нь олон нийттэй бүтээлч хамтын ажиллагааг үгүйсгэхгүй бөгөөд Синдерийг хэрхэн хурдан болгох, эсвэл бэлтгэсэн өөрчлөлтүүдийг CPython-ийн үндсэн тогтолцоонд шилжүүлэх ажлыг хэрхэн хурдасгах талаар санал бодлоо хэлэлцэхэд бэлэн байна.

Синдерт хэрэгжүүлсэн гол оновчлолууд нь:

  • Онлайн кэш хийх байт код: Аргын мөн чанар нь динамикаар оновчтой болгож болох opcode гүйцэтгэлийн ердийн нөхцөл байдлыг тодорхойлж, тухайн opcode-ийг илүү хурдан төрөлжсөн хувилбаруудаар солих явдал юм.
  • Тогтмол үнэлгээ: Шууд боловсруулагдсан асинхрон функцын дуудлагын хувьд эдгээр функцын үр дүнг coroutine үүсгэхгүйгээр, үйл явдлын давталтгүйгээр шууд хүчингүйд тооцдог. Фэйсбүүкийн ашигладаг кодонд оновчлол нь 5% -ийг хурдасгахад хүргэдэг.
  • JIT-ийн сонгосон эмхэтгэл нь бие даасан арга, чиг үүргийн түвшинд: үүнийг "-X jit" сонголт эсвэл орчны хувьсагч PYTHONJIT = 1 идэвхжүүлсэн бөгөөд олон гүйцэтгэлийн туршилтыг 1,5-4 дахин хурдасгах боломжийг олгодог.
    JIT-ийг идэвхжүүлэх ёстой функцын жагсаалтыг профайлын үр дүнгээс хамаарч тодорхойлж болно. Ирээдүйд функцын дуудлагын давтамжийн дотоод анализ дээр суурилсан динамик JIT хөрвүүлэлтийг дэмжихээр төлөвлөж байгаа боловч Instagram дээр эхлүүлэх үйл явцын онцлогийг харгалзан JIT эмхэтгэл нь эхний шатанд Facebook-т тохиромжтой.
    JIT нь эхлээд Python-ийн байт кодыг өндөр түвшний завсрын дүрслэл (HIR) болгон хөрвүүлдэг бөгөөд энэ нь Python-ийн байт кодтой боломжийн ойролцоо боловч стек дээр суурилсан виртуал машин биш харин бичлэг дээр суурилсан виртуал машин ашиглахад зориулагдсан бөгөөд бас төрлийн мэдээллийг ашигладаг. болон гүйцэтгэлтэй холбоотой нэмэлт мэдээлэл. Дараа нь HIR нь Static Single Allocation (SSA) хэлбэрт шилжиж, лавлагаа тоолох болон санах ойн ашиглалтын өгөгдөл дээр үндэслэн оновчлолын үе шатыг дамжуулдаг. Үүний үр дүнд доод түвшний завсрын дүрслэл (LIR) бий болох бөгөөд угсарч буй хэлтэй ойролцоо болно.
  • Модулиудын хатуу горим:Функциональ нь гурван бүрэлдэхүүн хэсэгтэй: StrictModule төрөл. Модулийн гүйцэтгэл нь тухайн модулийн гаднах кодод нөлөөлөхгүй гэдгийг тодорхойлох чадвартай статик анализатор.
  • Статик питон: нь төрөл бүрийн онцлогт тохирсон байт кодыг үүсгэх аннотацийг ашигладаг туршилтын байт кодын хөрвүүлэгч бөгөөд JIT эмхэтгэлээр илүү хурдан ажилладаг. Зарим туршилтанд Static Python ба JIT-ийн хослол нь ердийн CPython-оос 7 дахин сайн гүйцэтгэлийг харуулдаг. Ихэнх тохиолдолд үр дүнг MyPyC болон Cython хөрвүүлэгчийг ашигласан мэт үнэлдэг.

Эцэст нь Хэрэв та Синдер кодыг авах боломжтой бол сонирхож байна эсвэл энэ талаар илүү ихийг олж мэдэх боломжтой бол дэлгэрэнгүй мэдээллийг дараахь холбоосоор оруулна уу.


Нийтлэлийн агуулга нь бидний зарчмуудыг баримталдаг редакцийн ёс зүй. Алдааны талаар мэдээлэхийн тулд товшино уу энд байна.

Сэтгэгдэл бичих эхний хүн бай

Сэтгэгдэлээ үлдээгээрэй

Таны и-мэйл хаяг хэвлэгдсэн байх болно. Шаардлагатай талбарууд нь тэмдэглэгдсэн байна *

*

*

  1. Мэдээллийг хариуцах: Мигель Анхель Гатан
  2. Мэдээллийн зорилго: СПАМ-ыг хянах, сэтгэгдлийн менежмент.
  3. Хууль ёсны байдал: Таны зөвшөөрөл
  4. Мэдээллийн харилцаа холбоо: Хуулийн үүргээс бусад тохиолдолд мэдээллийг гуравдагч этгээдэд дамжуулахгүй.
  5. Өгөгдөл хадгалах: Occentus Networks (ЕХ) -с зохион байгуулсан мэдээллийн сан
  6. Эрх: Та хүссэн үедээ мэдээллээ хязгаарлаж, сэргээж, устгаж болно.