Facebook publizéiert Hermit, e Toolkit fir widderhuelend Programmausféierung

Facebook (verbueden an der russescher Federatioun) huet de Code fir den Eremit Toolkit publizéiert, deen en Ëmfeld fir deterministesch Ausféierung vu Programmer erstellt, wat et erlaabt verschidde Runen datselwecht Resultat z'erreechen an d'Ausféierung mat der selwechter Inputdaten ze widderhuelen. De Projet Code ass a Rust geschriwwen a gëtt ënner der BSD Lizenz verdeelt.

Wärend der normaler Ausféierung gëtt d'Resultat vun enger Vielfalt vun externe Faktoren beaflosst, sou wéi déi aktuell Zäit, Fuedemplang, virtuelle Gedächtnisadressen, Daten vum pseudorandom Zuelengenerator a verschidde eenzegaarteg Identifizéierer. Hermit erlaabt Iech e Programm an engem Container ze lafen an deem dës Faktoren konstant bleiwen iwwer spéider Runen. Widderhuelbar Ausféierung, déi déi net-persistent Parameter vun der Ëmwelt voll reproduzéiert, ka fir Fehlerdiagnostik benotzt ginn, Multi-Schrëtt Debugging mat widderholl Runen, e fixt Ëmfeld fir Regressiounstester erstellen, Stresstesten, Probleemer mat Multithreading z'identifizéieren an a widderhuelend Bausystemer .

Facebook publizéiert Hermit, e Toolkit fir widderhuelend Programmausféierung

E reproduzéierbar Ëmfeld gëtt erstallt andeems d'Systemappellen ofgeschaaft ginn, e puer vun deenen duerch hiren eegene Handler ersat ginn, déi e permanent Resultat produzéieren, an e puer ginn op de Kärel ëmgeleet, duerno gëtt d'Resultat vun net-persistent Daten geläscht. Fir Systemruffen z'ënnerscheeden, gëtt de Reverie-Framework benotzt, de Code vun deem och vu Facebook publizéiert gëtt. Fir d'Verännerungen am Dateiesystem an d'Netzwierksufroen ze verhënneren datt d'Ausféierung Fortschrëtter beaflossen, gëtt d'Ausféierung mat engem fixen FS-Bild gemaach a mat Zougang zu externen Netzwierker behënnert. Wann Dir op de pseudo-zoufälleg Zuel Generator Zougang, Hermit produzéiert eng predefinéiert Sequenz datt all Kéier wann se lancéiert widderholl gëtt.

Ee vun de komplexste Variabelen Afloss op d'Ausféierung Fortschrëtter ass den thread Scheduler, deem säi Verhalen hänkt vu ville externe Faktoren of, sou wéi d'Zuel vun den CPU-Cores an d'Präsenz vun aneren Ausféierungsfäegkeeten. Fir widderholl Verhalen vum Scheduler ze garantéieren, ginn all Threads seriell a Verbindung mat nëmmen engem CPU Kär ausgefouert an d'Uerdnung behalen an där d'Kontroll op d'Threads transferéiert gëtt. All Fuedem ass erlaabt eng fix Unzuel vun Instruktiounen auszeféieren, no deenen d'Ausféierung stoppt an an en anere Fuedem transferéiert gëtt (fir d'CPU PMU (Performance Monitoring Unit) ze limitéieren, déi d'Ausféierung no enger spezifizéierter Zuel vu bedingte Filialen stoppt).

Fir Probleemer mat Threads ze diagnostizéieren wéinst engem Rassbedingung, huet den Hermit e Modus fir Operatiounen z'identifizéieren, deenen hir Ausféierungsbestellung verletzt gouf an zu engem anormalen Ausschalt gefouert huet. Fir esou Probleemer z'identifizéieren, gëtt e Verglach vun de Staaten gemaach, an deenen d'korrekt Operatioun an d'onnormal Enn vun der Ausféierung opgeholl goufen.

Source: opennet.ru

Setzt e Commentaire