Hermit, nástroj pro řízené testování a detekci chyb

poustevník

Hermit jako reprodukovatelný kontejner dává představu o tom, jaké by to bylo, kdyby systémový zásobník poskytoval opakovatelnost jako abstrakci

Facebook odhalen nedávno prostřednictvím publikace, spuštění Pustovník, který tvoří a prostředí pro provádění deterministického programu, což umožňuje dosáhnout stejného výsledku a opakovat proces provádění při různých spuštěních pomocí stejných vstupních dat.

Během normálního provádění ovlivňují výstup různé vnější faktory, jako je aktuální čas, funkce plánování vláken, adresy virtuální paměti, data z generátoru pseudonáhodných čísel a různé jedinečné identifikátory.

Hermit umožňuje spustit program v kontejneru kde tyto faktory zůstávají v následujících cyklech konstantní. Opakovatelné provádění, které plně reprodukuje konfiguraci nestálého prostředí, lze použít pro diagnostiku chyb, ladění vícekrokové s iteracemi, vytvoření pevného prostředí pro regresní testování, zátěžové testování, vícevláknové řešení problémů a opakovatelné sestavovací systémy.

Hermit vynucuje deterministické provádění libovolných programů a funguje jako reprodukovatelný obal. To znamená, že hermeticky izoluje program od zdrojů nedeterminismu, jako je časování, prokládání vláken, generování náhodných čísel atd. Zaručený determinismus je mocný nástroj a slouží jako základ pro řadu aplikací, včetně zátěžového testování souběžnosti, záznamu/přehrávání, reprodukovatelných sestav a automatické diagnostiky chyb souběžnosti a dalších.

Hermit nemůže izolovat hostující program od zdrojů nedeterminismu, jako jsou změny systému souborů nebo reakce z externích sítí. Místo toho, aby byl zajištěn úplný determinismus, musí uživatel poskytnout pevný základní obraz systému souborů (například pomocí Dockeru) a zakázat externí sítě.

O Hermitovi

Pustovník umožňuje napájení vytváří reprodukovatelné prostředí zachycením systémových volání, z nichž některá jsou nahrazena vlastními obslužnými rutinami, které produkují konstantní výstup, a některá z nich jsou přesměrována do jádra, načež jsou neperzistentní data z výstupu odstraněna.

K odposlechu hovorů do systému, používá se framework snění, jejíž kód zveřejňuje i Facebook. Chcete-li zabránit tomu, aby změny systému souborů a síťové požadavky ovlivnily průběh provádění, provedení se provádí pomocí statického obrazu souborového systému a se zakázaným přístupem k externím sítím. Přístupem ke generátoru pseudonáhodných čísel Hermit vytváří předdefinovanou sekvenci, která se opakuje pokaždé, když je spuštěna.

Nejsložitější zdroj nedeterminismu je v plánovači vláken. Způsob, jakým jádro plánuje vlákna, závisí na mnoha vnějších faktorech, včetně počtu fyzických CPU nebo jiných vláken běžících v systému, která vyžadují čas CPU.

Ze složitějších netrvalých vlivů na výkon zvýrazní plánovač vláken, jehož chování závisí na mnoha vnějších faktorech, jako je počet jader CPU a přítomnost dalších běžících vláken.

Aby bylo zajištěno opakovatelné chování plánovače, všechna vlákna jsou serializovaná, vázána na jedno jádro CPU a v pořadí, v jakém je řízení předáno vláknům. Každému vláknu je povoleno provádět pevně stanovený počet instrukcí, načež se provádění zastaví a přenese do jiného vlákna (pro omezení se používá CPU PMU (Performance Monitoring Unit), která zastaví provádění po zadaném počtu podmíněných větví).

diagnostikovat problémy s vlákny kvůli rasovému stavu, Hermite má režim pro detekci operací, které byly mimo provoz a způsobil blokádu. Aby bylo možné takové problémy identifikovat, je provedeno srovnání mezi stavy, ve kterých byla zaregistrována správná operace a abnormální ukončení provádění.

A konečně, pokud máte zájem se o tom dozvědět více, měli byste to vědět kód projektu je napsán v Rustu a je distribuován pod licencí BSD.

Podrobnosti můžete zkontrolovat v následující odkaz.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.