Hermit, një mjet për testimin e kontrolluar dhe zbulimin e gabimeve

vetmitar

Hermit, si një enë e riprodhueshme, jep një ide se si do të ishte nëse pirgu i sistemit do të siguronte përsëritshmërinë si një abstraksion

Facebook zbuloi së fundmi përmes një publikimi, nisja e vetmitar, e cila formon a mjedis për ekzekutimin e programit përcaktues, gjë që bën të mundur arritjen e të njëjtit rezultat dhe përsëritjen e procesit të ekzekutimit në nisje të ndryshme duke përdorur të njëjtat të dhëna hyrëse.

Gjatë ekzekutimit normal, faktorë të ndryshëm të jashtëm ndikojnë në dalje, të tilla si koha aktuale, funksionet e planifikimit të fijeve, adresat e memories virtuale, të dhënat nga një gjenerues numrash pseudorandom dhe identifikues të ndryshëm unik.

Hermit lejon ekzekutimin e programit në një enë ku këta faktorë mbeten konstant në ecuritë e mëvonshme. Ekzekutim i përsëritshëm, i cili riprodhon plotësisht konfigurimin e mjedisit të paqëndrueshëm, mund të përdoret për diagnostikimin e gabimeve, korrigjimin e gabimeve me shumë hapa me përsëritje, duke krijuar një mjedis fiks për testimin e regresionit, testimin e stresit, zgjidhjen e problemeve me shumë fije dhe sisteme ndërtimi të përsëritshme.

Hermit detyron ekzekutimin determinist të programeve arbitrare dhe vepron si një mbështjellës i riprodhueshëm. Kjo do të thotë, ai izolon në mënyrë hermetike programin nga burimet e jo-determinizmit si koha, ndërthurja e fijeve, gjenerimi i numrave të rastësishëm, etj. Determinizmi i garantuar është një mjet i fuqishëm dhe shërben si bazë për një sërë aplikacionesh, duke përfshirë testimin e stresit të njëkohshëm, regjistrimin/përsëritjen, ndërtimet e riprodhueshme dhe diagnostikimin automatik të gabimeve të njëkohshme, dhe më shumë.

Hermit nuk mund ta izolojë programin e ftuar nga burimet e jo-determinizmit, të tilla si ndryshimet e sistemit të skedarëve ose përgjigjet nga rrjetet e jashtme. Në vend të kësaj, për të siguruar determinizëm të plotë, përdoruesi duhet të sigurojë një imazh bazë të sistemit të skedarëve fiks (për shembull, me Docker) dhe të çaktivizojë rrjetet e jashtme.

Rreth Hermitit

vetmitar lejon që fuqia të krijojë një mjedis të riprodhueshëm duke përgjuar thirrjet e sistemit, disa prej të cilave zëvendësohen me mbajtësit e tyre që prodhojnë dalje konstante, dhe disa prej të cilave ridrejtohen në kernel, pas së cilës të dhënat jo të qëndrueshme hiqen nga dalja.

Për të përgjuar telefonata Për sistemin, përdoret korniza zbavitje, kodi i të cilit publikohet edhe nga Facebook. Për të parandaluar që ndryshimet e sistemit të skedarëve dhe kërkesat e rrjetit të ndikojnë në progresin e ekzekutimit, ekzekutimi kryhet duke përdorur një imazh të palëvizshëm të sistemit të skedarëve dhe me akses në rrjetet e jashtme të çaktivizuar. Duke hyrë në gjeneratorin e numrave pseudorandom, Hermit prodhon një sekuencë të paracaktuar që përsëritet sa herë që ekzekutohet.

Burimi më kompleks i jo-determinizmit është në planifikuesin e fijeve. Mënyra se si kerneli planifikon thread-et varet nga shumë faktorë të jashtëm, duke përfshirë numrin e CPU-ve fizike ose thread-ave të tjerë që funksionojnë në sistem që kërkojnë kohë të CPU-së.

Nga ndikimet më komplekse jo të përhershme në performancë, thekson planifikuesin e fijeve, sjellja e të cilit varet nga shumë faktorë të jashtëm, si numri i bërthamave të CPU-së dhe prania e fijeve të tjera të funksionimit.

Për të siguruar sjellje të përsëritshme të planifikuesit, të gjitha thread-ët janë të serializuar, të lidhur në një bërthamë të vetme CPU dhe sipas radhës në të cilën kontrolli kalohet te thread-et. Çdo thread lejohet të ekzekutojë një numër fiks instruksionesh, pas së cilës ekzekutimi ndalet dhe transferohet në një thread tjetër (për kufizim, përdoret CPU PMU (Njësia e Monitorimit të Performancës), e cila ndalon ekzekutimin pas një numri të caktuar degësh të kushtëzuara).

për të diagnostikuar probleme me fijet për shkak të një gjendje gare, Hermit ka një modalitet për të zbuluar operacionet që ishin jashtë funksionit dhe shkaktoi një bllokadë. Për të identifikuar probleme të tilla, bëhet një krahasim midis shteteve në të cilat është regjistruar funksionimi i saktë dhe përfundimi jonormal i ekzekutimit.

Së fundi, nëse jeni të interesuar të jeni në gjendje të mësoni më shumë rreth tij, duhet ta dini këtë kodin e projektit është shkruar në Rust dhe shpërndahet nën licencën BSD.

Ju mund të kontrolloni detajet në lidhja e mëposhtme.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: AB Internet Networks 2008 SL
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.