Facebook нь Hermit програмыг давтах боломжтой хэрэгсэл болгон нийтлэв

Facebook (ОХУ-д хориглосон) нь "Hermit" хэрэгслийн кодыг нийтэлсэн бөгөөд энэ нь детерминист програмыг хэрэгжүүлэх орчинг бүрдүүлдэг бөгөөд энэ нь ижил үр дүнд хүрч, ижил оролтын өгөгдлийг ашиглан гүйцэтгэлийн явцыг давтах боломжийг олгодог. Төслийн код нь Rust дээр бичигдсэн бөгөөд BSD лицензийн дагуу тараагддаг.

Хэвийн гүйцэтгэлийн явцад одоогийн цаг, урсгалын хуваарь, виртуал санах ойн хаягууд, псевдо санамсаргүй тоо үүсгэгчийн өгөгдөл, төрөл бүрийн өвөрмөц танигч гэх мэт янз бүрийн гадны хүчин зүйлүүд үр дүнд нөлөөлдөг. Hermit нь эдгээр хүчин зүйлс нь дараагийн гүйлтүүдэд тогтмол хэвээр байх саванд програмыг ажиллуулах боломжийг танд олгоно. Дахин тогтворгүй орчны тохиргоог бүрэн хуулбарладаг давтагдах гүйцэтгэлийг алдаа оношлох, олон үе шаттай дибаг хийх, регрессийн тест хийх тогтсон орчинг бий болгох, стресс тест хийх, олон урсгалтай асуудлуудын алдааг олж засварлах, давтагдах бүтээх системд ашиглаж болно.

Facebook нь Hermit програмыг давтах боломжтой хэрэгсэл болгон нийтлэв

Системийн дуудлагыг таслан зогсоосноор заримыг нь тогтмол үр дүн гаргадаг өөрийн зохицуулагчаар сольж, заримыг нь цөм рүү дахин чиглүүлсний дараа үр дүн нь тогтворгүй өгөгдлөөс цэвэрлэгдэх замаар давтагдах орчин бий болдог. Системийн дуудлагыг таслан зогсоохын тулд реверийн хүрээг ашигладаг бөгөөд кодыг нь мөн Facebook нийтэлдэг. Файлын систем болон сүлжээний хүсэлтийн өөрчлөлт нь гүйцэтгэлийн явцд нөлөөлөхөөс урьдчилан сэргийлэхийн тулд гүйцэтгэлийг тогтмол FS дүрс ашиглан гүйцэтгэдэг бөгөөд гадаад сүлжээнд нэвтрэх эрхийг хаасан байна. Псевдо санамсаргүй тоо үүсгэгч рүү хандах үед Hermit түүнийг ажиллуулах бүрт давтагдах урьдчилан тодорхойлсон дарааллыг гаргадаг.

Гүйцэтгэлд үзүүлэх хамгийн төвөгтэй байнгын бус нөлөөллийн нэг бол процессын хуваарь төлөвлөгч бөгөөд түүний зан төлөв нь CPU-ийн цөмийн тоо, ажиллаж байгаа бусад хэлхээнүүд зэрэг гадны олон хүчин зүйлээс хамаардаг. Хуваарьлагчийн давтагдах ажиллагааг хангахын тулд бүх хэлхээг цуваа болгож, зөвхөн нэг CPU-ийн цөмд холбож, удирдлагыг хэлхээнүүд рүү дарааллаар нь дамжуулдаг. Удаан бүрд тодорхой тооны зааврыг гүйцэтгэхийг зөвшөөрдөг бөгөөд үүний дараа гүйцэтгэл нь зогсч, өөр урсгал руу шилждэг (хязгаарлахын тулд тодорхой тооны нөхцөлт салбаруудын дараа гүйцэтгэлийг зогсоодог CPU PMU (Гүйцэтгэлийн хяналтын нэгж) ашигладаг).

Уралдааны нөхцлөөс шалтгаалж утастай холбоотой асуудлыг оношлохын тулд Hermit нь гацсан, эвдрэлд хүргэсэн үйлдлүүдийг илрүүлэх горимтой. Иймэрхүү бэрхшээлийг тодорхойлохын тулд зөв ажиллагаа, гүйцэтгэлийн хэвийн бус гүйцэтгэлийг бүртгэсэн мужуудын харьцуулалтыг хийдэг.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх