Facebook nerbitake Hermit, toolkit kanggo eksekusi program sing bisa diulang

Facebook (dilarang ing Federasi Rusia) wis nerbitake kode toolkit Hermit, sing mbentuk lingkungan kanggo eksekusi program deterministik, sing ngidini entuk asil sing padha lan mbaleni proses eksekusi nggunakake data input sing padha ing peluncuran sing beda. Kode proyek ditulis ing Rust lan disebarake miturut lisensi BSD.

Sajrone eksekusi normal, macem-macem faktor extraneous mengaruhi asil, kayata wektu saiki, fitur jadwal thread, alamat memori virtual, data saka generator nomer pseudo-acak, lan macem-macem pengenal unik. Hermit ngijini sampeyan kanggo mbukak program ing wadhah kang faktor iki tetep pancet ing roto sakteruse. Eksekusi sing bisa diulang, sing ngasilake setelan lingkungan sing molah malih, bisa digunakake kanggo diagnosa kesalahan, debugging multi-tataran karo reruns, nggawe lingkungan tetep kanggo tes kemunduran, testing stress, ngatasi masalah masalah multithreading, lan sistem mbangun sing bisa diulang.

Facebook nerbitake Hermit, toolkit kanggo eksekusi program sing bisa diulang

A lingkungan reproducible digawe dening nyegat telpon sistem, sawetara kang diganti karo handler dhewe sing gawé asil pancet, lan sawetara redirected menyang kernel, sawise kang asil dibusak saka data non-terus-terusan. Kanggo nyegat panggilan sistem, kerangka reverie digunakake, kode kasebut uga diterbitake dening Facebook. Kanggo nyegah owah-owahan ing sistem file lan panjalukan jaringan ora mengaruhi kemajuan eksekusi, eksekusi ditindakake kanthi nggunakake gambar FS tetep lan kanthi akses menyang jaringan eksternal dipateni. Nalika ngakses generator nomer pseudo-acak, Hermit mrodhuksi urutan predefined sing bola saben wektu iku mbukak.

Antarane pengaruh non-permanen sing paling rumit ing eksekusi yaiku penjadwal thread, sing prilaku gumantung saka akeh faktor eksternal, kayata jumlah inti CPU lan anané benang liyane sing mlaku. Kanggo mesthekake prilaku repeatable saka panjadwal, kabeh Utas sing serialized, kaiket mung siji inti CPU, lan ing urutan kang kontrol liwati kanggo Utas. Saben Utas diijini kanggo nglakokaké nomer tetep saka instruksi, sawise eksekusi mandheg lan ditransfer menyang thread liyane (kanggo mbatesi, CPU PMU (Performance Monitoring Unit) digunakake, kang mandheg eksekusi sawise nomer tartamtu saka cabang kondisional).

Kanggo ndiagnosa masalah benang amarga kondisi balapan, Hermit duwe mode kanggo ndeteksi operasi sing rusak lan nyebabake kacilakan. Kanggo ngenali masalah kasebut, perbandingan digawe saka negara ing ngendi operasi sing bener lan eksekusi ora normal direkam.

Source: opennet.ru

Add a comment