Ermito, kiel reproduktebla ujo, donas ideon pri kia ĝi estus, se la sistema stako donus ripeteblon kiel abstraktaĵo.
Facebook malkaŝis lastatempe per publikaĵo, la lanĉo de Ermito, kiu formas a medio por determinisma programo ekzekuto, kiu ebligas atingi la saman rezulton kaj ripeti la ekzekutprocezon ĉe malsamaj lanĉoj uzante la samajn enigajn datumojn.
Dum normala ekzekuto, diversaj eksterlandaj faktoroj influas la produktaĵon, kiel ekzemple la nuna tempo, fadenaj planadfunkcioj, virtualaj memoradresoj, datenoj de pseŭdohazarda nombrogeneratoro, kaj diversaj unikaj identigiloj.
Ermito permesas ruli la programon en ujo kie tiuj faktoroj restas konstantaj en postaj kuroj. Ripetebla ekzekuto, kiu plene reproduktas la agordon de la volatila medio, uzeblas por erara diagnozo, senararigado plurpaŝe kun ripetoj, kreante fiksan medion por regrestestado, streĉtestado, multfadena problemo-solvado kaj ripeteblaj konstrusistemoj.
Ermito devigas determinisman ekzekuton de arbitraj programoj kaj funkcias kiel reproduktebla envolvaĵo. Tio estas, ĝi hermetike izolas la programon de fontoj de ne-determinismo kiel ekzemple tempigo, fadeninterplektado, hazarda nombrogenerado, ktp. Garantiita determinismo estas potenca ilo kaj servas kiel fundamento por kelkaj aplikoj, inkluzive de samtempa strestestado, rekordo/ripeto, reprodukteblaj konstruoj kaj aŭtomata diagnozo de samtempaj eraroj, kaj pli.
Ermito ne povas izoli la gastprogramon de fontoj de ne-determinismo, kiel ekzemple dosiersistemoŝanĝoj aŭ respondoj de eksteraj retoj. Anstataŭe, por disponigi plenan determinismon, la uzanto devas disponigi fiksan dosiersisteman bazbildon (ekzemple, kun Docker) kaj malŝalti eksterajn retojn.
Pri Ermito
Ermito permesas potencon kreas reprodukteblan medion per kaptado de sistemvokoj, kelkaj el kiuj estas anstataŭigitaj per siaj propraj pritraktiloj kiuj produktas konstantan produktaĵon, kaj kelkaj el kiuj estas redirektitaj al la kerno, post kiu ne-daŭraj datenoj estas forigitaj de la produktaĵo.
Interkapti vokojn Al la sistemo, kadro estas uzata revado, kies kodo estas publikigita ankaŭ de Fejsbuko. Por malhelpi dosiersistemajn ŝanĝojn kaj retajn petojn influu ekzekutprogreson, ekzekuto estas farita uzante senmovan bildon de la dosiersistemo kaj kun aliro al eksteraj retoj malebligitaj. Alirante la pseŭdohazardan nombrogeneratoron, Hermit produktas antaŭdifinitan sekvencon kiu estas ripetita ĉiun fojon kiam ĝi estas efektivigita.
La plej kompleksa fonto de ne-determinismo estas en la fadenoplanilo. La maniero kiel la kerno planas fadenojn dependas de multaj eksteraj faktoroj, inkluzive de la nombro da fizikaj CPUoj aŭ aliaj fadenoj kurantaj sur la sistemo kiuj postulas CPU-tempon.
De la pli kompleksaj nepermanentaj influoj sur efikeco, elstarigas fadenplanilon, kies konduto dependas de multaj eksteraj faktoroj, kiel la nombro da CPU-kernoj kaj la ĉeesto de aliaj kurantaj fadenoj.
Por certigi ripeteblan konduton de planisto, ĉiuj fadenoj estas seriigitaj, ligitaj al ununura CPU-kerno kaj en la ordo en kiu kontrolo estas pasita al la fadenoj. Ĉiu fadeno rajtas ekzekuti fiksan nombron da instrukcioj, post kiu ekzekuto estas ĉesigita kaj translokigita al alia fadeno (por limigado, la CPU PMU (Performance Monitoring Unit) estas uzata, kiu ĉesigas ekzekuton post difinita nombro da kondiĉaj branĉoj).
diagnozi problemoj kun fadenoj pro raskondiĉo, Ermito havas reĝimon por detekti operaciojn kiuj estis neordaj kaj kaŭzis blokadon. Por identigi tiajn problemojn, oni faras komparo inter la statoj, en kiuj la ĝusta operacio kaj la eksternorma fino de la ekzekuto estis registritaj.
Fine, se vi interesiĝas povi lerni pli pri ĝi, vi devus scii tion la projektkodo ĝi estas skribita en Rust kaj estas distribuita sub la BSD-licenco.
Vi povas kontroli la detalojn la sekva ligilo.