Hermit, et værktøj til kontrolleret test og fejldetektion

eremit

Eremit, som en reproducerbar beholder, giver en idé om, hvordan det ville være, hvis systemstakken gav repeterbarhed som en abstraktion

Facebook afsløret for nylig gennem en publikation, lanceringen af Eremit, som danner en miljø for deterministisk programudførelse, hvilket gør det muligt at opnå det samme resultat og gentage eksekveringsprocessen på forskellige lanceringer ved hjælp af de samme inputdata.

Under normal udførelse påvirker forskellige uvedkommende faktorer outputtet, såsom det aktuelle tidspunkt, trådplanlægningsfunktioner, virtuelle hukommelsesadresser, data fra en pseudorandom-talgenerator og forskellige unikke identifikatorer.

Hermit giver mulighed for at køre programmet i en container hvor disse faktorer forbliver konstante i efterfølgende kørsler. Gentagelig udførelse, som fuldt ud gengiver konfigurationen af ​​det flygtige miljø, kan bruges til fejldiagnose, debugging flere trin med iterationer, der skaber et fast miljø for regressionstest, stresstest, multi-threaded fejlfinding og repeterbare byggesystemer.

Eremit fremtvinger deterministisk udførelse af vilkårlige programmer og fungerer som en reproducerbar indpakning. Det vil sige, at det hermetisk isolerer programmet fra kilder til ikke-determinisme såsom timing, trådindfletning, generering af tilfældige tal osv. Garanteret determinisme er et kraftfuldt værktøj og fungerer som grundlaget for en række applikationer, herunder samtidighedsstresstest, optagelse/genafspilning, reproducerbare opbygninger og automatisk diagnose af samtidighedsfejl og mere.

Hermit kan ikke isolere gæsteprogrammet fra kilder til ikke-determinisme, såsom filsystemændringer eller svar fra eksterne netværk. For at give fuld determinisme skal brugeren i stedet levere et fast filsystembasebillede (f.eks. med Docker) og deaktivere eksterne netværk.

Om Eremit

Eremit tillader strøm skaber et reproducerbart miljø ved at opsnappe systemkald, hvoraf nogle erstattes med deres egne handlere, der producerer konstant output, og nogle af dem omdirigeres til kernen, hvorefter ikke-vedvarende data fjernes fra outputtet.

For at aflytte opkald Til systemet, rammen bruges drømmerier, hvis kode også udgives af Facebook. For at forhindre filsystemændringer og netværksanmodninger i at påvirke eksekveringsforløbet, udførelse udføres ved hjælp af et stillbillede af filsystemet og med adgang til eksterne netværk deaktiveret. Ved at få adgang til pseudorandom-talgeneratoren producerer Hermit en foruddefineret sekvens, der gentages hver gang den udføres.

Den mest komplekse kilde til ikke-determinisme er i trådplanlæggeren. Den måde, hvorpå kernen planlægger tråde, afhænger af mange eksterne faktorer, herunder antallet af fysiske CPU'er eller andre tråde, der kører på systemet, og som kræver CPU-tid.

Af de mere komplekse ikke-permanente påvirkninger af ydeevne, fremhæver trådplanlægger, hvis adfærd afhænger af mange eksterne faktorer, såsom antallet af CPU-kerner og tilstedeværelsen af ​​andre løbende tråde.

For at sikre gentagelig planlægningsadfærd, alle tråde er serialiseret, bundet til en enkelt CPU-kerne og i den rækkefølge, hvori kontrollen overføres til trådene. Hver tråd har lov til at udføre et fast antal instruktioner, hvorefter eksekveringen stoppes og overføres til en anden tråd (til begrænsning anvendes CPU PMU (Performance Monitoring Unit), som stopper eksekveringen efter et specificeret antal betingede forgreninger).

At diagnosticere problemer med tråde på grund af racetilstand, Eremit har en tilstand til at registrere operationer, der var ude af drift og forårsagede en blokade. For at identificere sådanne problemer foretages en sammenligning mellem de stater, hvor den korrekte operation og den unormale afslutning af udførelsen blev registreret.

Endelig, hvis du er interesseret i at kunne lære mere om det, skal du vide det projektkoden den er skrevet i Rust og distribueres under BSD-licensen.

Du kan tjekke detaljerne ind følgende link.


Vær den første til at kommentere

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for data: AB Internet Networks 2008 SL
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.