Remete, az ellenőrzött tesztelés és hibaészlelés eszköze

remete

A Remete, mint reprodukálható tároló, képet ad arról, milyen lenne, ha a rendszerverem absztrakcióként ismételhetőséget biztosítana

A Facebook bemutatta a közelmúltban egy publikáción keresztül, a megjelenése Remete, amely a környezet a determinisztikus programvégrehajtáshoz, amely lehetővé teszi ugyanazon eredmény elérését és a végrehajtási folyamat megismétlését különböző indításokon ugyanazon bemeneti adatok felhasználásával.

A normál végrehajtás során különféle külső tényezők befolyásolják a kimenetet, mint például az aktuális idő, a szálütemezési funkciók, a virtuális memóriacímek, az álvéletlenszám-generátorból származó adatok és különféle egyedi azonosítók.

A Hermit lehetővé teszi a program tárolóban való futtatását ahol ezek a tényezők állandóak maradnak a következő futtatások során. Megismételhető végrehajtás, amely teljes mértékben reprodukálja az illékony környezet konfigurációját, használható hibadiagnosztikára, hibakeresésre többlépéses iterációkkal, rögzített környezet létrehozásával a regressziós teszteléshez, stressztesztekhez, többszálú hibaelhárításhoz és megismételhető összeállítású rendszerekhez.

A Remete önkényes programok determinisztikus végrehajtására kényszeríti, és reprodukálható burkolóként működik. Vagyis hermetikusan elszigeteli a programot a nem-determinizmus forrásaitól, mint például az időzítés, a szálak átlapolása, a véletlenszám-generálás stb. A garantált determinizmus hatékony eszköz, és számos alkalmazás alapjául szolgál, beleértve a párhuzamossági stressztesztet, a rögzítést/visszajátszást, a reprodukálható buildeket és a párhuzamossági hibák automatikus diagnosztizálását és még sok mást.

A Hermit nem tudja elkülöníteni a vendégprogramot a nem-determinizmus forrásaitól, például a fájlrendszer változásaitól vagy a külső hálózatok válaszaitól. Ehelyett a teljes meghatározottság érdekében a felhasználónak egy rögzített fájlrendszer alapképet kell megadnia (például a Dockerrel), és le kell tiltania a külső hálózatokat.

Remeteről

Remete lehetővé teszi a teljesítményt, reprodukálható környezetet teremt rendszerhívások elfogásával, amelyek egy részét saját kezelőkre cserélik, amelyek állandó kimenetet produkálnak, egy részét pedig átirányítják a kernelre, ami után eltávolítják a nem állandó adatokat a kimenetről.

Hívások lehallgatására A rendszerhez, keretet használjuk álmodozás, melynek kódját a Facebook is közzéteszi. Annak elkerülése érdekében, hogy a fájlrendszer változásai és a hálózati kérések befolyásolják a végrehajtás előrehaladását, a végrehajtás állókép segítségével történik fájlrendszerben, és a külső hálózatokhoz való hozzáférés le van tiltva. Az álvéletlenszám-generátor elérésével a Hermit egy előre meghatározott sorozatot állít elő, amely minden egyes végrehajtáskor megismétlődik.

A nem-determinizmus legösszetettebb forrása a szálütemezőben található. A kernel szálak ütemezésének módja számos külső tényezőtől függ, beleértve a fizikai CPU-k vagy a rendszeren futó egyéb, CPU-időt igénylő szálak számát.

A teljesítményre gyakorolt ​​összetettebb, nem állandó hatások közül kiemeli a szálütemezőt, amelynek viselkedése számos külső tényezőtől függ, mint például a CPU magjainak száma és más futó szálak jelenléte.

Az ütemező megismételhető viselkedésének biztosítása érdekében, minden szál szerializált, egyetlen CPU maghoz van kötve és abban a sorrendben, ahogy az irányítást átadják a szálaknak. Minden szál fix számú utasítást hajthat végre, amely után a végrehajtás leáll, és átkerül egy másik szálra (a korlátozáshoz a CPU PMU-t (Performance Monitoring Unit) használják, amely meghatározott számú feltételes elágazás után leállítja a végrehajtást).

diagnosztizálni problémák a menetekkel versenyhelyzet miatt, Remete móddal rendelkezik a nem megfelelő műveletek észlelésére és blokádot okozott. Az ilyen problémák azonosítása érdekében összehasonlítják azokat az állapotokat, amelyekben a helyes működést és a végrehajtás rendellenes leállását regisztrálták.

Végül, ha többet szeretne megtudni róla, akkor ezt tudnia kell a projekt kódja Rust nyelven íródott és a BSD licenc alatt terjesztik.

A részleteket meg tudod nézni a következő link.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: AB Internet Networks 2008 SL
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.