Фејсбук го објавува Хермит, пакет со алатки за повторливо извршување на програмата

Фејсбук (забранет во Руската Федерација) го објави кодот за комплетот алатки „Ермит“, кој создава средина за детерминистичко извршување на програми, овозможувајќи различни работи за постигнување ист резултат и повторување на извршувањето користејќи исти влезни податоци. Кодот на проектот е напишан во Rust и се дистрибуира под лиценцата BSD.

При нормално извршување, резултатот е под влијание на различни необични фактори, како што се моменталното време, распоредот на нишките, адресите на виртуелната меморија, податоците од генераторот на псевдослучајни броеви и разни уникатни идентификатори. Hermit ви овозможува да извршите програма во контејнер во кој овие фактори остануваат константни во текот на следните работи. Повторливото извршување, кое целосно ги репродуцира непостојаните параметри на околината, може да се користи за дијагностицирање на грешки, повеќестепено дебагирање со повторени работи, создавање фиксна средина за регресивни тестови, стрес-тестирање, идентификување проблеми со повеќенишки и во системи за повторливи градби .

Фејсбук го објавува Хермит, пакет со алатки за повторливо извршување на програмата

Се создава репродуктивно опкружување со пресретнување на системски повици, од кои некои се заменуваат со свои управувачи кои произведуваат траен резултат, а некои се пренасочуваат кон јадрото, по што резултатот се чисти од непостојани податоци. За пресретнување на системските повици се користи рамката reverie, чиј код го објавува и Facebook. За да се спречат промените во датотечниот систем и мрежните барања да влијаат на напредокот на извршувањето, извршувањето се врши со помош на фиксна FS слика и со оневозможен пристап до надворешни мрежи. При пристап до генераторот на псевдо-случајни броеви, Хермит произведува предефинирана низа што се повторува секогаш кога ќе се активира.

Едно од најкомплексните променливи влијанија врз напредокот на извршувањето е распоредувачот на нишки, чие однесување зависи од многу надворешни фактори, како што се бројот на јадра на процесорот и присуството на други нишки за извршување. За да се обезбеди повторливо однесување на распоредувачот, сите нишки се извршуваат сериски во врска со само едно јадро на процесорот и одржувајќи го редоследот по кој контролата се пренесува на нишките. На секоја нишка му е дозволено да изврши фиксен број инструкции, по што извршувањето запира и се пренесува во друга нишка (за да се ограничи CPU PMU (Единица за следење на перформанси), која го запира извршувањето по одреден број условни гранки).

За да ги дијагностицира проблемите со нишките поради условите на трката, Хермит има режим за идентификација на операции чиј налог за извршување не беше во ред и доведе до ненормално исклучување. За да се идентификуваат ваквите проблеми, се прави споредба на состојбите во кои е евидентирано правилно работење и абнормално завршување на извршувањето.

Извор: opennet.ru

Додадете коментар