Fejsbuko publikigas Hermit, ilaron por ripetebla programa ekzekuto

Facebook (malpermesita en la Rusa Federacio) publikigis la kodon de la Hermit ilaro, kiu formas medion por determinisma programo ekzekuto, kiu permesas akiri la saman rezulton kaj ripeti la progreson de ekzekuto uzante la samajn enigajn datumojn ĉe malsamaj lanĉoj. La projektkodo estas skribita en Rust kaj distribuita sub la permesilo BSD.

Dum normala ekzekuto, diversaj eksterlandaj faktoroj influas la rezulton, kiel ekzemple la nuna tempo, fadenaj planadtrajtoj, virtualaj memoradresoj, datenoj de pseŭd-hazarda nombrogeneratoro, kaj diversaj unikaj identigiloj. Ermito permesas al vi ruli la programon en ujo, en kiu ĉi tiuj faktoroj restas konstantaj dum postaj kuroj. Ripetebla ekzekuto, kiu plene reproduktas volatilajn medio-agordojn, povas esti uzata por erara diagnozo, pluretapa sencimigo kun reruligoj, kreado de fiksa medio por regresaj provoj, strestestado, solvi problemojn pri multfadenaj problemoj kaj ripeteblaj konstrusistemoj.

Fejsbuko publikigas Hermit, ilaron por ripetebla programa ekzekuto

Reproduktebla medio estas kreita per kaptado de sistemaj vokoj, kelkaj el kiuj estas anstataŭigitaj per siaj propraj pritraktiloj kiuj produktas konstantan rezulton, kaj kelkaj estas redirektitaj al la kerno, post kiu la rezulto estas malplenigita de ne-daŭraj datumoj. Por kapti sistemajn vokojn, oni uzas la revan kadron, kies kodo ankaŭ estas publikigita de Facebook. Por malhelpi ŝanĝojn en la dosiersistemo kaj retaj petoj influas la ekzekutprogreson, ekzekuto estas farita uzante fiksan FS-bildon kaj kun aliro al eksteraj retoj malebligita. Dum aliro al la pseŭdo-hazarda nombro-generatoro, Hermit produktas antaŭdifinitan sekvencon kiu estas ripetita ĉiun fojon kiam ĝi estas prizorgita.

Inter la plej kompleksaj nedaŭraj influoj sur ekzekuto estas la fadenoplanisto, kies konduto dependas de multaj eksteraj faktoroj, kiel la nombro da CPU-kernoj kaj la ĉeesto de aliaj fadenoj kurantaj. Por certigi ripeteblan konduton de la planilo, ĉiuj fadenoj estas seriigitaj, ligitaj al nur unu CPU-kerno, kaj en la sinsekvo en kiu kontrolo estas pasita al la fadenoj. Ĉiu fadeno rajtas ekzekuti fiksan nombron da instrukcioj, post kio la ekzekuto ĉesas kaj estas translokigita al alia fadeno (por limigi, la CPU PMU (Performance Monitoring Unit) estas uzata, kiu ĉesigas ekzekuton post difinita nombro da kondiĉaj branĉoj).

Por diagnozi problemojn kun fadenoj pro raskondiĉo, Hermit havas reĝimon por detekti operaciojn kiuj estis malordaj kaj kaŭzis kraŝon. Por identigi tiajn problemojn, komparo estas farita de la statoj en kiuj ĝusta operacio kaj nenormala kompletigo de ekzekuto estis registritaj.

fonto: opennet.ru

Aldoni komenton