Hermit, kontrollitud testimise ja vigade tuvastamise tööriist

erak

Hermit kui reprodutseeritav konteiner annab aimu, kuidas oleks, kui süsteemipinn pakuks abstraktsioonina korratavust

Facebook avalikustas hiljuti avaldatud väljaande kaudu Erakordne, mis moodustab a keskkond programmi deterministlikuks täitmiseks, mis võimaldab saavutada sama tulemuse ja korrata täitmisprotsessi erinevatel käivitamistel, kasutades samu sisendandmeid.

Tavalise täitmise ajal mõjutavad väljundit mitmesugused kõrvalised tegurid, nagu praegune aeg, lõime ajastamise funktsioonid, virtuaalse mälu aadressid, pseudojuhuslike numbrite generaatori andmed ja mitmesugused kordumatud identifikaatorid.

Hermit võimaldab programmi konteineris käivitada kus need tegurid jäävad järgmistel käikudel konstantseks. Korduv täitmine, mis reprodutseerib täielikult muutliku keskkonna konfiguratsiooni, saab kasutada vigade diagnoosimiseks, silumiseks mitmeastmeline iteratsioonidega, luues fikseeritud keskkonna regressioonitestimiseks, stressitestimiseks, mitme lõimega tõrkeotsinguks ja korratavateks ehitussüsteemideks.

Hermit sunnib suvaliste programmide deterministlikku täitmist ja toimib reprodutseeritava ümbrisena. See tähendab, et see isoleerib programmi hermeetiliselt mittedeterminismi allikatest, nagu ajastus, lõime põimimine, juhuslike numbrite genereerimine jne. Garanteeritud determinism on võimas tööriist ja see on aluseks paljudele rakendustele, sealhulgas samaaegsuse stressitestidele, salvestamisele/taasesitamisele, reprodutseeritavatele järgidele ja samaaegsusvigade automaatsele diagnoosimisele ja muule.

Hermit ei saa isoleerida külalisprogrammi mittedeterminismi allikatest, nagu failisüsteemi muudatused või välisvõrkude vastused. Selle asemel peab kasutaja täieliku determinismi tagamiseks esitama fikseeritud failisüsteemi baaspildi (näiteks Dockeriga) ja keelama välisvõrgud.

Ermiti kohta

Erakordne võimaldab võimsust loob reprodutseeritava keskkonna pealtkuulamisega süsteemikutsed, millest osa asendatakse nende enda töötlejatega, mis toodavad pidevat väljundit ja osad suunatakse ümber kerneli, misjärel eemaldatakse väljundist mittepüsivad andmed.

Kõnede pealtkuulamiseks süsteemile, raamistikku kasutatakse unistus, mille koodi avaldab ka Facebook. Et failisüsteemi muudatused ja võrgupäringud ei mõjutaks täitmise edenemist, täitmine toimub liikumatu pildi abil failisüsteemist ja juurdepääs välistele võrkudele on keelatud. Pseudojuhuslike numbrite generaatorile ligi pääsedes loob Hermit etteantud jada, mida korratakse iga kord, kui see käivitatakse.

Kõige keerulisem mittedeterminismi allikas on lõime ajakavas. See, kuidas kernel lõime ajastab, sõltub paljudest välistest teguritest, sealhulgas füüsiliste protsessorite arvust või muudest süsteemis töötavatest lõimedest, mis nõuavad protsessori aega.

Keerulisematest mittepüsivatest tulemuslikkuse mõjudest tõstab esile lõime ajakava, mille käitumine sõltub paljudest välistest teguritest, nagu protsessori tuumade arv ja muude töötavate lõimede olemasolu.

Korratava ajakava käitumise tagamiseks, on kõik lõimed serialiseeritud, seotud ühe CPU tuumaga ja selles järjekorras, kuidas juhtimine niitidele üle antakse. Igal lõimel on lubatud täita fikseeritud arv käske, misjärel täitmine peatatakse ja viiakse üle teisele lõimele (piiramiseks kasutatakse CPU PMU-d (Performance Monitoring Unit), mis peatab täitmise pärast teatud arvu tingimuslikke harusid).

Diagnoosimiseks võistlusseisundist tingitud keermeprobleemid, Hermit on režiim rikkis olevate toimingute tuvastamiseks ja põhjustas blokaadi. Selliste probleemide tuvastamiseks võrreldakse olekuid, milles registreeriti õige toiming ja täitmise ebanormaalne lõpetamine.

Lõpuks, kui olete huvitatud selle kohta rohkem teada saama, peaksite seda teadma projekti kood see on kirjutatud Rust keeles ja seda levitatakse BSD litsentsi all.

Üksikasju saate kontrollida järgmine link.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutav: AB Internet Networks 2008 SL
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.