Facebook, tekrarlanabilir program yürütmeye yönelik bir araç seti olan Hermit'i yayınladı

Facebook (Rusya Federasyonu'nda yasaklanmıştır), programların deterministik olarak yürütülmesi için bir ortam yaratan, aynı sonucu elde etmek için farklı çalıştırmalara izin veren ve aynı girdi verilerini kullanarak yürütmeyi tekrarlayan Hermit araç setinin kodunu yayınladı. Proje kodu Rust'ta yazılmıştır ve BSD lisansı altında dağıtılmaktadır.

Normal yürütme sırasında sonuç, geçerli zaman, iş parçacığı planlaması, sanal bellek adresleri, sözde rastgele sayı üretecinden gelen veriler ve çeşitli benzersiz tanımlayıcılar gibi çeşitli dış faktörlerden etkilenir. Hermit, bu faktörlerin sonraki çalıştırmalarda sabit kaldığı bir kapta bir program çalıştırmanıza olanak tanır. Kalıcı olmayan çevresel parametreleri tamamen yeniden üreten tekrarlanabilir yürütme, hata teşhisi, tekrarlanan çalıştırmalarla çok adımlı hata ayıklama, regresyon testleri için sabit bir ortam oluşturma, stres testi, çoklu iş parçacıklı ve tekrarlanabilir yapı sistemlerinde sorunları tanımlama için kullanılabilir.

Facebook, tekrarlanabilir program yürütmeye yönelik bir araç seti olan Hermit'i yayınladı

Sistem çağrılarının ele geçirilmesiyle yeniden üretilebilir bir ortam yaratılır; bunların bir kısmı, kalıcı bir sonuç üreten kendi işleyicileriyle değiştirilir, bir kısmı da çekirdeğe yönlendirilir ve ardından sonuç, kalıcı olmayan verilerden temizlenir. Sistem çağrılarını engellemek için kodu Facebook tarafından da yayınlanan reverie çerçevesi kullanılır. Dosya sistemindeki ve ağ isteklerindeki değişikliklerin yürütme ilerlemesini etkilemesini önlemek için yürütme, sabit bir FS görüntüsü kullanılarak ve harici ağlara erişim devre dışı bırakılarak gerçekleştirilir. Sözde rastgele sayı üretecine erişirken Hermit, her başlatıldığında tekrarlanan önceden tanımlanmış bir dizi üretir.

Yürütme ilerlemesini etkileyen en karmaşık değişkenlerden biri, davranışı CPU çekirdeği sayısı ve diğer yürütme iş parçacıklarının varlığı gibi birçok dış faktöre bağlı olan iş parçacığı zamanlayıcısıdır. Zamanlayıcının tekrarlanabilir davranışını sağlamak için, tüm iş parçacıkları yalnızca bir CPU çekirdeği ile bağlantılı olarak seri olarak yürütülür ve kontrolün iş parçacıklarına aktarılma sırası korunur. Her iş parçacığının sabit sayıda talimatı yürütmesine izin verilir, bundan sonra yürütme durdurulur ve başka bir iş parçacığına aktarılır (belirli sayıda koşullu dallanmadan sonra yürütmeyi durduran CPU PMU'yu (Performans İzleme Birimi) sınırlamak için).

Yarış koşullarından dolayı iş parçacıklarındaki sorunları teşhis etmek için Hermit'in, yürütme sırası bozuk olan ve anormal bir kapanmaya yol açan işlemleri tanımlamaya yönelik bir modu vardır. Bu tür sorunları tanımlamak için, doğru çalışmanın ve yürütmenin anormal şekilde sonlandırılmasının kaydedildiği durumların bir karşılaştırması yapılır.

Kaynak: opennet.ru

Yorum ekle