Gipatik sa Facebook ang Hermit, usa ka toolkit alang sa gibalikbalik nga pagpatuman sa programa

Ang Facebook (gidili sa Russian Federation) nagpatik sa code alang sa Hermit toolkit, nga nagmugna sa usa ka palibot alang sa deterministikong pagpatuman sa mga programa, nga nagtugot sa lain-laing mga dagan aron makab-ot ang sama nga resulta ug balikon ang pagpatuman gamit ang sama nga data sa input. Ang code sa proyekto gisulat sa Rust ug giapod-apod ubos sa lisensya sa BSD.

Atol sa normal nga pagpatuman, ang resulta maimpluwensyahan sa lain-laing mga extraneous nga mga butang, sama sa kasamtangan nga panahon, thread scheduling, virtual memory address, data gikan sa pseudorandom number generator, ug nagkalain-laing talagsaon nga mga identifier. Gitugotan ka ni Hermit sa pagpadagan sa usa ka programa sa usa ka sudlanan diin kini nga mga hinungdan nagpabilin nga makanunayon sa mga sunod nga pagdagan. Ang gibalikbalik nga pagpatuman, nga hingpit nga nagbag-o sa dili makanunayon nga mga parameter sa kalikopan, mahimong magamit alang sa pagdayagnos sa sayup, pag-debug sa daghang lakang nga adunay balik-balik nga pagdagan, paghimo usa ka pirmi nga palibot alang sa mga pagsulay sa pagbag-o, pagsulay sa stress, pag-ila sa mga problema sa multithreading ug sa mga balik-balik nga sistema sa pagtukod. .

Gipatik sa Facebook ang Hermit, usa ka toolkit alang sa gibalikbalik nga pagpatuman sa programa

Ang usa ka reproducible nga palibot gihimo pinaagi sa pag-intercept sa mga tawag sa sistema, ang uban niini gipulihan sa ilang kaugalingon nga mga tigdumala nga nagpatunghag permanente nga resulta, ug ang uban gi-redirect sa kernel, pagkahuman ang resulta matangtang sa dili makanunayon nga datos. Aron ma-intercept ang mga tawag sa sistema, gigamit ang reverie framework, ang code nga gipatik usab sa Facebook. Aron mapugngan ang mga pagbag-o sa sistema sa file ug mga hangyo sa network nga makaapekto sa pag-uswag sa pagpatuman, ang pagpatuman gihimo gamit ang usa ka pirmi nga imahe sa FS ug adunay access sa mga eksternal nga network nga wala’y mahimo. Kung nag-access sa pseudo-random nga generator sa numero, ang Hermit nagpatunghag usa ka gitakda nang daan nga pagkasunod-sunod nga gisubli sa matag higayon nga kini gilansad.

Usa sa labing komplikado nga variable nga mga impluwensya sa pag-uswag sa pagpatuman mao ang thread scheduler, kansang kinaiya nagdepende sa daghang mga eksternal nga mga hinungdan, sama sa gidaghanon sa mga cores sa CPU ug ang presensya sa uban nga nagpatuman nga mga hilo. Aron maseguro ang balikbalik nga kinaiya sa scheduler, ang tanan nga mga hilo gipatuman sa sunodsunod nga koneksyon sa usa lamang ka CPU core ug pagmintinar sa han-ay diin ang kontrol gibalhin ngadto sa mga hilo. Ang matag hilo gitugotan sa pagpatuman sa usa ka pirmi nga gidaghanon sa mga instruksyon, nga human niana ang pagpatuman mohunong ug ibalhin sa laing hilo (aron limitahan ang CPU PMU (Performance Monitoring Unit), nga mohunong sa pagpatuman human sa usa ka espesipikong gidaghanon sa mga sanga sa kondisyon).

Aron mahibal-an ang mga problema sa mga hilo tungod sa mga kondisyon sa lumba, ang Hermit adunay usa ka paagi sa pag-ila sa mga operasyon kansang mando sa pagpatuman wala sa kahusay ug misangpot sa dili normal nga pagsira. Aron mahibal-an ang ingon nga mga problema, gihimo ang pagtandi sa mga estado diin ang husto nga operasyon ug dili normal nga pagtapos sa pagpatay natala.

Source: opennet.ru

Idugang sa usa ka comment