Hermit, alat za kontrolirano testiranje i otkrivanje grešaka

pustinjak

Hermit, kao reproducibilni kontejner, daje ideju o tome kako bi bilo kada bi sistemski stog pružio ponovljivost kao apstrakciju

Facebook predstavljen nedavno kroz publikaciju, lansiranje Pustinjak, koji formira a okruženje za determinističko izvršavanje programa, što omogućava postizanje istog rezultata i ponavljanje procesa izvršenja na različitim pokretanjima koristeći iste ulazne podatke.

Tokom normalnog izvršavanja, različiti vanjski faktori utiču na izlaz, kao što je trenutno vrijeme, funkcije raspoređivanja niti, adrese virtualne memorije, podaci iz generatora pseudoslučajnih brojeva i različiti jedinstveni identifikatori.

Hermit dozvoljava pokretanje programa u kontejneru pri čemu ovi faktori ostaju konstantni u narednim serijama. Ponovljivo izvršenje, koje u potpunosti reproducira konfiguraciju nestabilnog okruženja, može se koristiti za dijagnozu grešaka, otklanjanje grešaka više koraka sa iteracijama, kreiranjem fiksnog okruženja za regresijsko testiranje, testiranje stresa, rešavanje problema sa više niti i ponovljive sisteme izgradnje.

Pustinjak forsira determinističko izvršavanje proizvoljnih programa i djeluje kao ponovljivi omotač. Odnosno, on hermetički izoluje program od izvora nedeterminizma kao što su vremenski raspored, preplitanje niti, generisanje slučajnih brojeva, itd. Garantovani determinizam je moćan alat i služi kao osnova za brojne aplikacije, uključujući testiranje na stres istovremenosti, snimanje/reprodukciju, reproducibilne gradnje i automatsku dijagnozu grešaka istovremenosti i još mnogo toga.

Hermit ne može izolovati gostujući program od izvora nedeterminizma, kao što su promjene sistema datoteka ili odgovori iz vanjskih mreža. Umjesto toga, da bi pružio potpuni determinizam, korisnik mora obezbijediti fiksnu osnovnu sliku sistema datoteka (na primjer, sa Dockerom) i onemogućiti vanjske mreže.

O pustinjaku

Pustinjak omogućava snagu stvara ponovljivo okruženje presretanje sistemskih poziva, od kojih su neki zamijenjeni vlastitim rukovateljima koji proizvode konstantan izlaz, a neki od njih se preusmjeravaju na kernel, nakon čega se nepostojani podaci uklanjaju iz izlaza.

Za presretanje poziva sistemu, koristi se okvir sanjarenje, čiji kod objavljuje i Facebook. Kako biste spriječili da promjene sistema datoteka i mrežni zahtjevi utiču na napredak izvršavanja, izvršenje se izvodi pomoću nepokretne slike sistema datoteka i sa onemogućenim pristupom vanjskim mrežama. Pristupanjem generatoru pseudoslučajnih brojeva, Hermit proizvodi unapred definisani niz koji se ponavlja svaki put kada se izvrši.

Najsloženiji izvor nedeterminizma je u planeru niti. Način na koji kernel raspoređuje niti ovisi o mnogim vanjskim faktorima, uključujući broj fizičkih CPU-a ili drugih niti koje se pokreću na sistemu koje zahtijevaju CPU vrijeme.

Od složenijih netrajnih uticaja na performanse, highlights planer niti, čije ponašanje ovisi o mnogim vanjskim faktorima, kao što su broj jezgara CPU-a i prisustvo drugih pokrenutih niti.

Da bi se osiguralo ponovljivo ponašanje planera, sve niti su serijalizovane, vezane za jedno CPU jezgro i redosledom kojim se kontrola prenosi na niti. Svakoj niti je dozvoljeno da izvrši fiksni broj instrukcija, nakon čega se izvršenje zaustavlja i prenosi na drugu nit (za ograničenje se koristi CPU PMU (Performance Monitoring Unit) koji zaustavlja izvršenje nakon određenog broja uslovnih grananja).

dijagnosticirati problemi sa nitima zbog stanja trke, pustinjak ima mod za otkrivanje operacija koje nisu bile u redu i izazvao blokadu. Da bi se identifikovali takvi problemi, vrši se poređenje stanja u kojima je registrovan ispravan rad i nenormalan prekid izvršenja.

Konačno, ako ste zainteresirani da saznate više o tome, trebali biste to znati kod projekta napisan je na Rustu i distribuira se pod BSD licencom.

Detalje možete provjeriti u sljedeći link.


Budite prvi koji komentarišete

Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.