Eremit, e Tool fir kontrolléiert Testen a Feelererkennung

Eremit

Eremit, als reproduzéierbare Container, gëtt eng Iddi wéi et wier wann de Systemstack Widderhuelbarkeet als Abstraktioun ubitt

Facebook virgestallt kuerzem duerch eng Publikatioun, de Start vun Eremit, deen eng Ëmfeld fir deterministesch Programmausféierung, wat et méiglech mécht datselwecht Resultat z'erreechen an den Ausféierungsprozess op verschiddene Starten ze widderhuelen andeems se déiselwecht Inputdaten benotzen.

Wärend der normaler Ausféierung beaflossen verschidde extern Faktoren den Ausgang, sou wéi déi aktuell Zäit, Fuedemplangfunktiounen, virtuelle Gedächtnisadressen, Daten vun engem pseudorandom Zuelengenerator a verschidde eenzegaarteg Identifizéierer.

Hermit erlaabt de Programm an engem Container ze lafen wou dës Faktore konstant bleiwen an de spéideren Lafen. Widderhuelbar Ausféierung, déi d'Konfiguratioun vum liichtflüchtege Ëmfeld voll reproduzéiert, kann fir Feeler Diagnos benotzt ginn, Debugging Multi-Schrëtt mat Iteratiounen, e fixt Ëmfeld fir Regressiounstest, Stresstest, Multi-threaded Troubleshooting a widderhuelend Bausystemer erstellen.

Eremit zwéngt deterministesch Ausféierung vun arbiträre Programmer an handelt als reproduzéierbar Wrapper. Dat ass, et isoléiert de Programm hermetesch vu Quelle vum Net-Determinismus wéi Timing, thread Interleaving, zoufälleg Zuel Generatioun, etc. Garantéiert Determinismus ass e mächtegt Tool an déngt als Fundament fir eng Zuel vun Uwendungen, dorënner Concurrency Stress Testen, Rekord / Replay, reproduzéierbar Builds an automatesch Diagnostik vu Concurrency Feeler, a méi.

Eremit kann de Gaaschtprogramm net vu Quelle vum Net-Determinismus isoléieren, sou wéi Dateiesystem Ännerungen oder Äntwerte vun externen Netzwierker. Amplaz, fir voll Determinismus ze bidden, muss de Benotzer e fixe Dateisystem Basisbild ubidden (zum Beispill mat Docker) an extern Netzwierker auszeschalten.

Iwwer Eremit

Eremit erlaabt Muecht schaaft eng reproduzéierbar Ëmwelt duerch d'Interceptioun vu Systemruffen, vun deenen e puer mat hiren eegene Handler ersat ginn, déi konstante Ausgab produzéieren, an e puer vun deenen op de Kärel ëmgeleet ginn, no deenen net-persistent Daten aus der Ausgab geläscht ginn.

Fir Uriff z'ënnerscheeden An de System, Kader benotzt gëtt iwwerpréiwen, deem säi Code och vu Facebook publizéiert gëtt. Fir ze verhënneren datt Dateiesystem Ännerungen an Netzwierkfuerderunge d'Ausféierung Fortschrëtter beaflossen, Ausféierung gëtt mat engem Stillbild gemaach vum Dateiesystem a mat Zougang zu externen Netzwierker behënnert. Andeems Dir op de pseudorandom Zuel Generator Zougang, produzéiert Hermit eng virdefinéiert Sequenz déi all Kéier wann se ausgefouert gëtt widderholl.

Déi komplexst Quell vum Net-Determinismus ass am thread Scheduler. D'Art a Weis wéi de Kernel Threads plangt hänkt vu ville externe Faktoren of, dorënner d'Zuel vun de kierperleche CPUs oder aner Threads déi um System lafen, déi CPU Zäit erfuerderen.

Vun de méi komplexen net-permanente Afloss op d'Leeschtung, Highlights thread Scheduler, deem säi Verhalen vu villen externen Faktoren hänkt, wéi d'Zuel vun den CPU-Cores an d'Präsenz vun anere Lafen thread.

Fir widderholl Scheduler Verhalen ze garantéieren, all thread sinn serialiséiert, gebonnen un engem eenzegen CPU Kär an an der Uerdnung an där d'Kontroll un d'Threads weidergeleet gëtt. All Fuedem ass erlaabt eng fix Unzuel vun Instruktiounen auszeféieren, duerno gëtt d'Ausféierung gestoppt an an en anere Fuedem transferéiert (fir Limitatioun gëtt d'CPU PMU (Performance Monitoring Unit) benotzt, déi d'Ausféierung stoppt no enger spezifizéierter Zuel vu bedingte Filialen).

ze diagnostizéieren Problemer mat thread wéinst engem Rennen Zoustand, Eremit huet e Modus fir Operatiounen z'entdecken déi ausseruerdentlech waren a verursaacht eng Blockade. Fir esou Probleemer z'identifizéieren, gëtt e Verglach tëscht de Staaten gemaach, an deenen d'korrekt Operatioun an den anormalen Enn vun der Ausféierung registréiert goufen.

Schlussendlech, wann Dir interesséiert sidd fir méi doriwwer ze léieren, sollt Dir dat wëssen de Projet Code et ass a Rust geschriwwen a gëtt ënner der BSD Lizenz verdeelt.

Dir kënnt d'Detailer kontrolléieren an de folgende Link.


Den Inhalt vum Artikel hält sech un eis Prinzipie vun redaktionnell Ethik. Fir e Feeler ze mellen klickt hei.

Gitt d'éischt fir ze kommentéieren

Gitt Äre Kommentar

Är Email Adress gëtt net publizéiert ginn. Néideg Felder sinn markéiert mat *

*

*

  1. Responsabel fir d'Donnéeën: AB Internet Networks 2008 SL
  2. Zweck vun den Donnéeën: Kontroll SPAM, Kommentarmanagement.
  3. Legitimatioun: Är Zoustëmmung
  4. Kommunikatioun vun den Donnéeën: D'Donnéeë ginn net un Drëttubidder matgedeelt ausser duerch legal Verpflichtung.
  5. Datenspeicher: Datebank gehost vun Occentus Networks (EU)
  6. Rechter: Zu all Moment kënnt Dir Är Informatioun limitéieren, recuperéieren an läschen.