Facebook gefur út Hermit, verkfærakistu fyrir endurtekna framkvæmd forrita

Facebook (bannað í Rússlandi) hefur gefið út kóðann fyrir Hermit verkfærakistuna, sem myndar umhverfi fyrir framkvæmt ákveðna forrita, sem gerir kleift að fá sömu niðurstöðu og endurtaka framvindu framkvæmdarinnar með því að nota sömu inntaksgögnin við mismunandi ræsingar. Verkefniskóðinn er skrifaður í Rust og dreift undir BSD leyfinu.

Við eðlilega framkvæmd hafa ýmsir utanaðkomandi þættir áhrif á niðurstöðuna, svo sem núverandi tími, þráðaáætlunareiginleikar, vistföng sýndarminni, gögn frá gervi-handahófi númeraframleiðanda og ýmis einstök auðkenni. Hermit gerir þér kleift að keyra forritið í íláti þar sem þessir þættir haldast stöðugir í síðari keyrslum. Endurtekna framkvæmd, sem endurskapar að fullu sveiflukenndar umhverfisstillingar, er hægt að nota fyrir villugreiningu, fjölþrepa villuleit með endursýningum, búa til fast umhverfi fyrir aðhvarfspróf, álagspróf, bilanaleit á fjölþráða vandamálum og endurtekin byggingarkerfi.

Facebook gefur út Hermit, verkfærakistu fyrir endurtekna framkvæmd forrita

Endurgeranlegt umhverfi er búið til með því að stöðva kerfissímtöl, sumum þeirra er skipt út fyrir sína eigin meðhöndlun sem framleiða stöðuga niðurstöðu, og sumum er vísað til kjarnans, eftir það er niðurstaðan hreinsuð af óviðvarandi gögnum. Til að hlera kerfissímtöl er reverie-ramminn notaður en kóðinn er einnig gefinn út af Facebook. Til að koma í veg fyrir að breytingar á skráarkerfinu og netbeiðnum hafi áhrif á framvindu keyrslunnar er keyrsla framkvæmd með fastri FS mynd og með aðgang að ytri netum óvirkan. Þegar aðgangur er að gervi-handahófsnúmeraframleiðandanum framleiðir Hermit fyrirfram skilgreinda röð sem er endurtekin í hvert skipti sem hún er keyrð.

Meðal flóknustu óvaranlegra áhrifa á framkvæmd er þráðaáætlunarmaðurinn, en hegðun hans er háð mörgum ytri þáttum, eins og fjölda CPU kjarna og tilvist annarra þráða í gangi. Til að tryggja endurtekna hegðun tímaáætlunarmannsins eru allir þræðir settir í röð, bundnir við aðeins einn CPU kjarna og í þeirri röð sem stjórn er send til þræðanna. Hver þráður hefur leyfi til að framkvæma fastan fjölda leiðbeininga, eftir það stöðvast framkvæmdin og er flutt yfir á annan þráð (til að takmarka er CPU PMU (Performance Monitoring Unit) notað, sem stöðvar framkvæmd eftir tiltekinn fjölda skilyrtra útibúa).

Til að greina vandamál með þræði vegna keppnisástands hefur Hermit stillingu til að greina aðgerðir sem voru í ólagi og leiddu til hruns. Til að bera kennsl á slík vandamál er borinn saman í hvaða ríkjum rétt aðgerð og óeðlileg framkvæmd framkvæmd var skráð.

Heimild: opennet.ru

Bæta við athugasemd