Facebook қайталанатын бағдарламаны орындауға арналған Hermit құралын шығарады

Facebook (Ресей Федерациясында тыйым салынған) әртүрлі іске қосуларға бірдей нәтижеге қол жеткізуге және бірдей кіріс деректерін пайдаланып орындауды қайталауға мүмкіндік беретін бағдарламаларды детерминирленген орындау үшін ортаны жасайтын Hermit құралдар жинағының кодын жариялады. Жоба коды Rust тілінде жазылған және BSD лицензиясы бойынша таратылады.

Қалыпты орындау кезінде нәтижеге ағымдағы уақыт, ағынды жоспарлау, виртуалды жад мекенжайлары, жалған кездейсоқ сандар генераторының деректері және әртүрлі бірегей идентификаторлар сияқты әртүрлі бөгде факторлар әсер етеді. Hermit бағдарламаны келесі іске қосулар кезінде осы факторлар тұрақты болып қалатын контейнерде іске қосуға мүмкіндік береді. Қоршаған ортаның тұрақты емес параметрлерін толығымен қайта шығаратын қайталанатын орындау қателерді диагностикалау, қайталанатын іске қосулармен көп сатылы жөндеу, регрессиялық сынақтар үшін бекітілген ортаны құру, стресс-тестілеу, көп ағынды және қайталанатын құрастыру жүйелеріндегі мәселелерді анықтау үшін пайдаланылуы мүмкін. .

Facebook қайталанатын бағдарламаны орындауға арналған Hermit құралын шығарады

Қайталанатын орта жүйелік шақыруларды ұстап алу арқылы жасалады, олардың кейбіреулері тұрақты нәтиже беретін өздерінің өңдеушілерімен ауыстырылады, ал кейбіреулері ядроға қайта бағытталады, содан кейін нәтиже тұрақты емес деректерден тазартылады. Жүйелік қоңырауларды ұстап алу үшін коды Facebook-те жарияланған реверь негізі қолданылады. Файлдық жүйедегі және желілік сұраулардағы өзгерістердің орындалу барысына әсер етуіне жол бермеу үшін орындау бекітілген FS кескіні арқылы және сыртқы желілерге кіру өшірілген күйде орындалады. Псевдокездейсоқ сандар генераторына қол жеткізген кезде, Hermit іске қосылған сайын қайталанатын алдын ала анықталған тізбекті жасайды.

Орындалу барысына ең күрделі айнымалы әсерлердің бірі ағынды жоспарлаушы болып табылады, оның тәртібі CPU ядроларының саны және басқа орындалатын ағындардың болуы сияқты көптеген сыртқы факторларға байланысты. Жоспарлаушының қайталанатын әрекетін қамтамасыз ету үшін барлық ағындар тек бір процессорлық ядроға байланысты және басқаруды ағындарға беру тәртібін сақтай отырып, сериялық түрде орындалады. Әрбір ағынға нұсқаулардың бекітілген санын орындауға рұқсат етіледі, одан кейін орындау тоқтатылады және басқа ағынға ауыстырылады (шартты тармақтардың көрсетілген санынан кейін орындауды тоқтататын CPU PMU (Performance Monitoring Unit) шектеу үшін).

Жарыс жағдайларына байланысты жіптермен ақауларды диагностикалау үшін Hermit орындалу реті істен шыққан және әдеттен тыс өшіруге әкелген операцияларды анықтауға арналған режимге ие. Мұндай проблемаларды анықтау үшін дұрыс жұмыс және орындаудың қалыптан тыс аяқталуы тіркелген күйлерді салыстыру жүргізіледі.

Ақпарат көзі: opennet.ru

пікір қалдыру