Hermit, una eina per a proves controlades i detecció d'errors

Hermit Facebook

Hermit, com a contenidor reproduïble, brinda una idea de com seria si la pila del sistema proporcionés repetibilitat com una abstracció

Facebook va donar a conèixer fa poc mitjançant una publicació, el llançament de Ermità, que forma un entorn per a l'execució determinista del programa, el que permet aconseguir el mateix resultat i repetir el procés dexecució en diferents llançaments utilitzant les mateixes dades dentrada.

Durant l'execució normal, diversos factors estranys afecten el resultat, com ara l'hora actual, les funcions de programació de subprocessos, les adreces de memòria virtual, les dades d'un generador de números pseudoaleatoris i diversos identificadors únics.

Hermit permet executar el programa en un contenidor en què aquests factors romanen constants en execucions posteriors. L'execució repetible, que reprodueix completament la configuració de l'entorn volàtil, es pot utilitzar per al diagnòstic derrors, la depuració de diverses passes amb repeticions, la creació d'un entorn fix per a les proves de regressió, les proves d'estrès, la resolució de problemes de subprocessos múltiples i els sistemes de compilació repetibles.

Hermit força l'execució determinista de programes arbitraris i actua com a contenidor reproduïble. És a dir, aïlla hermèticament el programa de fonts de no determinisme com el temps, l'entrellaçat de subprocessos, la generació de números aleatoris, etc. El determinisme garantit és una eina poderosa i serveix com a base per a una sèrie d'aplicacions, incloses les proves d'estrès de concurrència, enregistrament/reproducció, compilacions reproduïbles i diagnòstic automàtic d'errors de concurrència i més.

Hermit no pot aïllar el programa convidat de fonts de no determinisme, com ara canvis al sistema de fitxers o respostes de xarxes externes. En canvi, per proporcionar un determinisme complet, l'usuari ha de proporcionar una imatge base del sistema de fitxers fix (per exemple, amb Docker) i deshabilitar les xarxes externes.

Sobre Hermit

Ermità permet poder crear un entorn reproduïble en interceptar les trucades al sistema, algunes de les quals es reemplacen amb els seus propis controladors que produeixen un resultat constant, i algunes es redireccionen al nucli, després de les quals s'eliminen les dades no persistents del resultat.

Per interceptar trucades al sistema, s'utilitza el marc de somni, el codi del qual també és publicat per Facebook. Per evitar que els canvis al sistema de fitxers i les sol·licituds de xarxa afectin el progrés de l'execució, l'execució es fa utilitzant una imatge fixa del sistema de fitxers i amb l'accés a xarxes externes deshabilitat. En accedir al generador de números pseudoaleatoris, Hermit produeix una seqüència predefinida que es repeteix cada cop que s'executa.

La font més complexa de no determinisme és al programador de subprocessos. La manera com el kernel programa els subprocessos depèn de molts factors externs, inclosa la quantitat de CPU físiques o altres subprocessos que s'executen al sistema que requereixen temps de CPU

De les influències no permanents més complexes en l'execució, destaca el planificador de subprocessos, el comportament del qual depèn de molts factors externs, com la quantitat de nuclis de CPU i la presència d'altres subprocessos en execució.

Per garantir el comportament repetible del programador, tots els subprocessos se serialitzen, es vinculen a un sol nucli de CPU i en lordre en què es passa el control als subprocessos. A cada subprocés se li permet executar un nombre fix d'instruccions, després de tot això l'execució s'atura i es transfereix a un altre subprocés (per limitar, s'usa la CPU PMU (Unitat de Monitorització de Rendiment), que atura l'execució després de nombre específic de bifurcacions condicionals).

Per diagnosticar problemes amb subprocessos a causa d'una condició de carrera, Hermit té una manera per detectar operacions que estaven fora de servei i van provocar un bloqueig. Per identificar aquests problemes, es fa una comparació dels estats en què es van registrar el funcionament correcte i la terminació anormal de lexecució.

Finalment, si estàs interessat en poder conèixer més sobre això, has de saber que el codi del projecte està escrit a Rust i es distribueix sota la llicència BSD.

Pots consultar els detalls a el següent enllaç.


Sigues el primer a comentar

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.