Mae Facebook yn cyhoeddi Hermit, pecyn cymorth ar gyfer gweithredu rhaglenni ailadroddadwy

Cyhoeddodd Facebook (wedi'i wahardd yn Ffederasiwn Rwsia) y cod ar gyfer pecyn cymorth Hermit, sy'n creu amgylchedd ar gyfer gweithredu rhaglenni yn benderfynol, gan ganiatΓ‘u ar gyfer rhediadau gwahanol i gyflawni'r un canlyniad ac ailadrodd y gweithrediad gan ddefnyddio'r un data mewnbwn. Mae cod y prosiect wedi'i ysgrifennu yn Rust ac yn cael ei ddosbarthu o dan y drwydded BSD.

Yn ystod gweithrediad arferol, mae'r canlyniad yn cael ei ddylanwadu gan amrywiaeth o ffactorau allanol, megis yr amser presennol, amserlennu edau, cyfeiriadau cof rhithwir, data o'r generadur rhif ffug, a gwahanol ddynodwyr unigryw. Mae Hermit yn caniatΓ‘u ichi redeg rhaglen mewn cynhwysydd lle mae'r ffactorau hyn yn aros yn gyson ar draws rhediadau dilynol. Gellir defnyddio cyflawni ailadroddus, sy'n atgynhyrchu'n llawn baramedrau nad ydynt yn barhaus yr amgylchedd, ar gyfer diagnosis gwallau, dadfygio aml-gam gyda rhediadau dro ar Γ΄l tro, creu amgylchedd sefydlog ar gyfer profion atchweliad, profi straen, nodi problemau gyda multithreading ac mewn systemau adeiladu ailadroddadwy. .

Mae Facebook yn cyhoeddi Hermit, pecyn cymorth ar gyfer gweithredu rhaglenni ailadroddadwy

Mae amgylchedd atgenhedladwy yn cael ei greu trwy ryng-gipio galwadau system, y mae rhai ohonynt yn cael eu disodli gan eu trinwyr eu hunain sy'n cynhyrchu canlyniad parhaol, ac mae rhai yn cael eu hailgyfeirio i'r cnewyllyn, ac ar Γ΄l hynny mae'r canlyniad yn cael ei glirio o ddata nad yw'n barhaus. Er mwyn rhyng-gipio galwadau system, defnyddir y fframwaith reverie, y mae ei god hefyd yn cael ei gyhoeddi gan Facebook. Er mwyn atal newidiadau yn y system ffeiliau a cheisiadau rhwydwaith rhag effeithio ar y cynnydd gweithredu, cyflawnir gan ddefnyddio delwedd FS sefydlog a gyda mynediad i rwydweithiau allanol yn anabl. Wrth gyrchu'r generadur rhifau ffug-hap, mae Hermit yn cynhyrchu dilyniant wedi'i ddiffinio ymlaen llaw sy'n cael ei ailadrodd bob tro y caiff ei lansio.

Un o'r dylanwadau newidiol mwyaf cymhleth ar gynnydd gweithredu yw'r rhaglennydd edau, y mae ei ymddygiad yn dibynnu ar lawer o ffactorau allanol, megis nifer y creiddiau CPU a phresenoldeb edafedd gweithredu eraill. Er mwyn sicrhau ymddygiad ailadroddadwy'r amserlennydd, mae'r holl edafedd yn cael eu gweithredu'n gyfresol mewn cysylltiad Γ’ dim ond un craidd CPU a chynnal y drefn y mae rheolaeth yn cael ei drosglwyddo i'r edafedd. Caniateir i bob edefyn weithredu nifer sefydlog o gyfarwyddiadau, ac ar Γ΄l hynny mae gweithrediad yn dod i ben ac yn cael ei drosglwyddo i edefyn arall (i gyfyngu ar y CPU PMU (Uned Monitro Perfformiad), sy'n atal gweithredu ar Γ΄l nifer penodol o ganghennau amodol).

Er mwyn canfod problemau gydag edafedd oherwydd amodau hil, mae gan Hermit fodd ar gyfer nodi gweithrediadau yr oedd eu gorchymyn gweithredu allan o drefn ac a arweiniodd at gau annormal. Er mwyn nodi problemau o'r fath, gwneir cymhariaeth o'r cyflwr y cofnodwyd gweithrediad cywir a therfyniad annormal ar gyfer cyflawni.

Ffynhonnell: opennet.ru

Ychwanegu sylw