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

Фејсбук (забрањено у Руској Федерацији) је објавио код Хермит алата који формира окружење за детерминистичко извршавање програма, које омогућава добијање истог резултата и понављање напретка извршења коришћењем истих улазних података при различитим покретањима. Код пројекта је написан на Русту и дистрибуира се под БСД лиценцом.

Током нормалног извршавања, различити спољни фактори утичу на резултат, као што су тренутно време, функције распоређивања нити, адресе виртуелне меморије, подаци из генератора псеудо-случајних бројева и различити јединствени идентификатори. Хермит вам омогућава да покренете програм у контејнеру у коме ови фактори остају константни у наредним извршавањима. Поновљиво извршење, које у потпуности репродукује променљива подешавања окружења, може се користити за дијагнозу грешака, вишестепено отклањање грешака са поновним извођењем, креирање фиксног окружења за регресионе тестове, тестирање стреса, решавање проблема са вишенитношћу и поновљиве системе изградње.

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

Репродуцибилно окружење се ствара пресретањем системских позива, од којих се неки замењују сопственим руковаоцима који производе константан резултат, а неки се преусмеравају на језгро, након чега се резултат брише од непостојаних података. За пресретање системских позива користи се реверие фрамеворк, чији код такође објављује Фацебоок. Да би се спречило да промене у систему датотека и мрежним захтевима утичу на напредовање извршавања, извршење се изводи помоћу фиксне слике ФС и са онемогућеним приступом спољним мрежама. Када приступа генератору псеудо-случајних бројева, Хермит производи унапред дефинисану секвенцу која се понавља сваки пут када се покрене.

Међу најкомплекснијим нетрајним утицајима на извршење је планер нити, чије понашање зависи од многих спољних фактора, као што су број језгара ЦПУ-а и присуство других покренутих нити. Да би се обезбедило поновљиво понашање планера, све нити су серијализоване, везане само за једно језгро ЦПУ-а и редоследом којим се контрола преноси на нити. Свакој нити је дозвољено да изврши фиксни број инструкција, након чега се извршење зауставља и преноси на другу нит (да би се ограничило, користи се ЦПУ ПМУ (Перформанце Мониторинг Унит), која зауставља извршење након одређеног броја условних гранања).

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

Извор: опеннет.ру

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