Facebook publishes Hermit, a toolkit pikeun palaksanaan program repeatable

Facebook (dilarang di Féderasi Rusia) geus diterbitkeun kodeu tina toolkit Hermit, nu ngabentuk hiji lingkungan pikeun palaksanaan program deterministik, anu ngamungkinkeun pikeun meunangkeun hasil nu sarua jeung repeating kamajuan palaksanaan ngagunakeun data input sarua dina peluncuran béda. Kodeu proyék ditulis dina Rust sareng disebarkeun dina lisénsi BSD.

Salila palaksanaan normal, rupa faktor extraneous mangaruhan hasilna, kayaning waktos ayeuna, fitur scheduling thread, alamat memori maya, data ti generator angka pseudo-acak, sarta sagala rupa identifiers unik. Pertapa ngidinan Anjeun pikeun ngajalankeun program dina wadah nu faktor ieu tetep konstan dina ngajalankeun saterusna. Eksekusi anu tiasa diulang, anu pinuh ngahasilkeun deui setélan lingkungan anu teu stabil, tiasa dianggo pikeun diagnosis kasalahan, debugging multi-tahap sareng reruns, nyiptakeun lingkungan tetep pikeun tés régrési, uji setrés, ngungkulan masalah multithreading, sareng sistem ngawangun anu tiasa diulang.

Facebook publishes Hermit, a toolkit pikeun palaksanaan program repeatable

Lingkungan reproducible dijieun ku intercepting panggero sistem, sababaraha nu diganti ku pawang sorangan nu ngahasilkeun hasil konstan, sarta sababaraha dialihkeun ka kernel, nu satutasna hasilna diberesihan tina data non-persistent. Pikeun nyegat telepon sistem, kerangka lamunan dianggo, kodeu anu ogé diterbitkeun ku Facebook. Pikeun nyegah parobahan sistem file sareng pamundut jaringan mangaruhan kamajuan palaksanaan, palaksanaan dilaksanakeun nganggo gambar FS tetep sareng aksés ka jaringan éksternal ditumpurkeun. Nalika ngaksés generator nomer pseudo-acak, Hermit ngahasilkeun sekuen anu tos disetel anu diulang unggal waktos dijalankeun.

Diantara pangaruh non-permanén paling pajeulit dina palaksanaan nyaeta scheduler thread, anu kabiasaan gumantung kana loba faktor éksternal, kayaning jumlah cores CPU jeung ayana threads séjén ngajalankeun. Pikeun mastikeun kabiasaan repeatable tina scheduler nu, sadaya threads anu serialized, kabeungkeut ngan hiji inti CPU, sarta dina urutan nu kontrol disalurkeun ka threads. Unggal thread diidinan ngajalankeun sababaraha parentah tetep, nu satutasna palaksanaan eureun sarta ditransferkeun ka thread sejen (pikeun ngawatesan, CPU PMU (Performance Monitoring Unit) dipaké, nu eureun palaksanaan sanggeus jumlah husus tina cabang kondisional).

Pikeun mendiagnosis masalah sareng benang kusabab kaayaan balapan, Hermit gaduh mode pikeun ngadeteksi operasi anu henteu teratur sareng nyababkeun kacilakaan. Pikeun ngaidentipikasi masalah sapertos kitu, ngabandingkeun nagara-nagara dimana operasi anu leres sareng palaksanaan anu teu normal dirékam.

sumber: opennet.ru

Tambahkeun komentar