Hermit, nástroj na kontrolované testovanie a zisťovanie chýb

pustovník

Hermit ako reprodukovateľný kontajner dáva predstavu o tom, aké by to bolo, keby systémový zásobník poskytoval opakovateľnosť ako abstrakciu

Facebook predstavený nedávno prostredníctvom publikácie, spustenia pustovník, ktorý tvorí a prostredie na vykonávanie deterministického programu, čo umožňuje dosiahnuť rovnaký výsledok a opakovať proces vykonávania pri rôznych spusteniach s použitím rovnakých vstupných údajov.

Počas normálneho vykonávania ovplyvňujú výstup rôzne vonkajšie faktory, ako napríklad aktuálny čas, funkcie plánovania vlákien, adresy virtuálnej pamäte, údaje z generátora pseudonáhodných čísel a rôzne jedinečné identifikátory.

Hermit umožňuje spustiť program v kontajneri kde tieto faktory zostávajú v nasledujúcich behoch konštantné. Opakovateľné vykonávanie, ktoré plne reprodukuje konfiguráciu nestáleho prostredia, možno použiť na diagnostiku chýb, ladenie viackrokové s iteráciami, vytváranie pevného prostredia pre regresné testovanie, stresové testovanie, viacvláknové riešenie problémov a opakovateľné zostavovacie systémy.

Hermit si vynucuje deterministické vykonávanie ľubovoľných programov a pôsobí ako reprodukovateľný obal. To znamená, že hermeticky izoluje program od zdrojov nedeterminizmu, ako je časovanie, prekladanie vlákien, generovanie náhodných čísel atď. Zaručený determinizmus je výkonný nástroj a slúži ako základ pre množstvo aplikácií vrátane záťažového testovania súbežnosti, záznamu/prehrávania, reprodukovateľných zostavení a automatickej diagnostiky chýb súbežnosti a ďalších.

Hermit nemôže izolovať hosťovský program od zdrojov nedeterminizmu, ako sú zmeny systému súborov alebo reakcie z externých sietí. Namiesto toho, aby sa dosiahol úplný determinizmus, musí používateľ poskytnúť pevný základný obraz systému súborov (napríklad pomocou Docker) a vypnúť externé siete.

O Pustovníkovi

pustovník umožňuje napájanie vytvára reprodukovateľné prostredie zachytením systémových volaní, z ktorých niektoré sú nahradené vlastnými obslužnými programami, ktoré produkujú konštantný výstup, a niektoré z nich sú presmerované do jadra, po ktorom sú neperzistentné dáta odstránené z výstupu.

Na odpočúvanie hovorov Do systému, používa sa rámec snenie, ktorej kód zverejňuje aj Facebook. Ak chcete zabrániť tomu, aby zmeny systému súborov a sieťové požiadavky ovplyvňovali priebeh vykonávania, vykonávanie sa vykonáva pomocou statického obrázka súborového systému a so zakázaným prístupom k externým sieťam. Prístupom k generátoru pseudonáhodných čísel Hermit vytvára preddefinovanú sekvenciu, ktorá sa opakuje pri každom spustení.

Najkomplexnejší zdroj nedeterminizmu je v plánovači vlákien. Spôsob, akým jadro plánuje vlákna, závisí od mnohých vonkajších faktorov vrátane počtu fyzických CPU alebo iných vlákien spustených v systéme, ktoré vyžadujú čas CPU.

Zo zložitejších netrvalých vplyvov na výkon zvýrazní plánovač vlákien, ktorého správanie závisí od mnohých vonkajších faktorov, ako je počet jadier CPU a prítomnosť ďalších spustených vlákien.

Na zabezpečenie opakovateľného správania plánovača, všetky vlákna sú serializované, viazané na jedno jadro CPU a v poradí, v akom sa riadenie odovzdáva vláknam. Každé vlákno má povolené vykonávať pevný počet inštrukcií, po ktorých sa vykonávanie zastaví a prenesie do iného vlákna (na obmedzenie sa používa CPU PMU (Performance Monitoring Unit), ktorá zastaví vykonávanie po zadanom počte podmienených vetiev).

Na diagnostiku problémy s vláknami kvôli rasovému stavu, Hermit má režim na detekciu operácií, ktoré boli mimo prevádzky a spôsobila blokádu. Na identifikáciu takýchto problémov sa vykoná porovnanie medzi stavmi, v ktorých bola zaregistrovaná správna operácia a abnormálne ukončenie vykonávania.

Nakoniec, ak máte záujem dozvedieť sa o tom viac, mali by ste to vedieť kód projektu je napísaný v jazyku Rust a je distribuovaný pod licenciou BSD.

Podrobnosti si môžete skontrolovať v nasledujúci odkaz.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Za údaje zodpovedá: AB Internet Networks 2008 SL
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.