Facebook jippubblika Hermit, sett ta' għodda għall-eżekuzzjoni ta' programm li jista' jiġi ripetut

Facebook (ipprojbit fil-Federazzjoni Russa) ippubblika l-kodiċi għall-Hermit toolkit, li joħloq ambjent għall-eżekuzzjoni deterministika tal-programmi, li jippermetti ġirjiet differenti biex jiksbu l-istess riżultat u jirrepetu l-eżekuzzjoni bl-użu tal-istess data input. Il-kodiċi tal-proġett huwa miktub f'Rut u huwa mqassam taħt il-liċenzja BSD.

Waqt l-eżekuzzjoni normali, ir-riżultat huwa influwenzat minn varjetà ta 'fatturi estranji, bħall-ħin kurrenti, l-iskedar tal-ħajt, indirizzi tal-memorja virtwali, dejta mill-ġeneratur ta' numru psewdorandom, u diversi identifikaturi uniċi. Hermit jippermettilek tmexxi programm f'kontenitur li fih dawn il-fatturi jibqgħu kostanti matul ġirjiet sussegwenti. Eżekuzzjoni ripetibbli, li tirriproduċi bis-sħiħ il-parametri mhux persistenti tal-ambjent, tista 'tintuża għal dijanjosi ta' żbalji, debugging f'diversi stadji b'ġirjiet ripetuti, ħolqien ta 'ambjent fiss għal testijiet ta' rigressjoni, ittestjar tal-istress, identifikazzjoni ta 'problemi b'multithreading u f'sistemi ta' bini ripetibbli .

Facebook jippubblika Hermit, sett ta' għodda għall-eżekuzzjoni ta' programm li jista' jiġi ripetut

Jinħoloq ambjent riproduċibbli billi jiġu interċettati s-sejħiet tas-sistema, li wħud minnhom jiġu sostitwiti bil-handlers tagħhom stess li jipproduċu riżultat permanenti, u xi wħud huma diretti mill-ġdid lejn il-kernel, u wara r-riżultat jitneħħa minn data mhux persistenti. Biex jinterċetta sejħiet tas-sistema, jintuża l-qafas reverie, li l-kodiċi tiegħu huwa ppubblikat ukoll minn Facebook. Biex tevita li l-bidliet fis-sistema tal-fajls u t-talbiet tan-netwerk jaffettwaw il-progress tal-eżekuzzjoni, l-eżekuzzjoni titwettaq bl-użu ta 'immaġni FS fissa u b'aċċess għal netwerks esterni diżattivati. Meta jaċċessa l-ġeneratur ta 'numru psewdo-random, Hermit jipproduċi sekwenza predefinita li tiġi ripetuta kull darba li titnieda.

Waħda mill-aktar influwenzi varjabbli kumplessi fuq il-progress tal-eżekuzzjoni hija l-iskedar tal-ħajt, li l-imġieba tiegħu tiddependi fuq ħafna fatturi esterni, bħan-numru ta 'qlub tas-CPU u l-preżenza ta' ħjut ta 'eżekuzzjoni oħra. Biex tiġi żgurata l-imġieba ripetibbli tal-iskeduler, il-ħjut kollha huma esegwiti serjali b'konnessjoni ma 'qalba CPU waħda biss u jżommu l-ordni li fiha l-kontroll jiġi trasferit għall-ħjut. Kull ħajt huwa permess li jesegwixxi numru fiss ta 'struzzjonijiet, wara li l-eżekuzzjoni tieqaf u tiġi trasferita għal ħajt ieħor (biex jillimita s-CPU PMU (Performance Monitoring Unit), li jwaqqaf l-eżekuzzjoni wara numru speċifikat ta' fergħat kondizzjonali).

Biex jiġu djanjostikati problemi bil-ħjut minħabba l-kundizzjonijiet tar-razza, Hermit għandu mod għall-identifikazzjoni ta 'operazzjonijiet li l-ordni ta' eżekuzzjoni tagħhom kienet barra mill-ordni u wassal għal għeluq anormali. Biex jiġu identifikati problemi bħal dawn, isir paragun tal-istati li fihom ġew irreġistrati tħaddim korrett u terminazzjoni anormali tal-eżekuzzjoni.

Sors: opennet.ru

Żid kumment