Facebook inachapisha Hermit, zana ya utekelezaji wa programu inayoweza kurudiwa

Facebook (iliyopigwa marufuku katika Shirikisho la Urusi) ilichapisha msimbo wa zana ya zana ya Hermit, ambayo inaunda mazingira ya utekelezaji wa mipango, kuruhusu uendeshaji tofauti kufikia matokeo sawa na kurudia utekelezaji kwa kutumia data sawa ya ingizo. Nambari ya mradi imeandikwa kwa Rust na inasambazwa chini ya leseni ya BSD.

Wakati wa utekelezaji wa kawaida, matokeo huathiriwa na mambo mbalimbali ya nje, kama vile wakati wa sasa, upangaji wa nyuzi, anwani za kumbukumbu pepe, data kutoka kwa jenereta ya nambari ya uwongo, na vitambulishi mbalimbali vya kipekee. Hermit hukuruhusu kuendesha programu kwenye kontena ambamo vipengele hivi hubaki mara kwa mara katika uendeshaji unaofuata. Utekelezaji unaorudiwa, ambao huzalisha kikamilifu vigezo visivyoendelea vya mazingira, inaweza kutumika kwa utambuzi wa makosa, utatuzi wa hatua nyingi na kukimbia mara kwa mara, kuunda mazingira ya kudumu ya vipimo vya urekebishaji, upimaji wa dhiki, kutambua matatizo na thread nyingi na kwa kurudiwa. kujenga mifumo.

Facebook inachapisha Hermit, zana ya utekelezaji wa programu inayoweza kurudiwa

Mazingira yanayoweza kuzaliana yanaundwa kwa kukata simu za mfumo, ambazo zingine hubadilishwa na vishikilizi vyao ambavyo hutoa matokeo ya kudumu, na zingine huelekezwa kwenye kernel, baada ya hapo matokeo huondolewa kwa data isiyoendelea. Ili kukata simu za mfumo, mfumo wa reverie hutumiwa, msimbo ambao pia huchapishwa na Facebook. Ili kuzuia mabadiliko katika mfumo wa faili na maombi ya mtandao kutokana na kuathiri maendeleo ya utekelezaji, utekelezaji unafanywa kwa kutumia picha ya FS ya kudumu na upatikanaji wa mitandao ya nje umezimwa. Wakati wa kufikia jenereta ya nambari ya uwongo-random, Hermit hutoa mlolongo uliofafanuliwa awali ambao hurudiwa kila wakati inapozinduliwa.

Mojawapo ya mvuto changamano wa kutofautisha katika maendeleo ya utekelezaji ni kipanga ratiba, ambacho tabia yake inategemea mambo mengi ya nje, kama vile idadi ya viini vya CPU na uwepo wa nyuzi zingine za utekelezaji. Ili kuhakikisha tabia inayoweza kurudiwa ya kiratibu, minyororo yote hutekelezwa mfululizo kuhusiana na msingi mmoja tu wa CPU na kudumisha mpangilio ambao udhibiti huhamishiwa kwenye nyuzi. Kila thread inaruhusiwa kutekeleza idadi maalum ya maagizo, baada ya ambayo utekelezaji huacha na kuhamishiwa kwenye thread nyingine (ili kupunguza CPU PMU (Kitengo cha Ufuatiliaji wa Utendaji), ambayo inaacha utekelezaji baada ya idadi maalum ya matawi yenye masharti).

Ili kutambua matatizo ya nyuzi kutokana na hali ya mbio, Hermit ana njia ya kutambua shughuli ambazo amri yake ya utekelezaji ilikiukwa na kusababisha kuzimwa kwa njia isiyo ya kawaida. Ili kutambua matatizo hayo, kulinganisha kunafanywa kwa majimbo ambayo operesheni sahihi na kukomesha usio wa kawaida wa utekelezaji ulirekodi.

Chanzo: opennet.ru

Kuongeza maoni