Facebook เผยแพร่ Hermit ชุดเครื่องมือสำหรับการเรียกใช้โปรแกรมซ้ำ

Facebook (ถูกแบนในสหพันธรัฐรัสเซีย) เผยแพร่โค้ดสำหรับชุดเครื่องมือ Hermit ซึ่งสร้างสภาพแวดล้อมสำหรับการดำเนินการตามที่กำหนดของโปรแกรม ช่วยให้การรันที่แตกต่างกันเพื่อให้ได้ผลลัพธ์เดียวกัน และทำซ้ำการดำเนินการโดยใช้ข้อมูลอินพุตเดียวกัน รหัสโครงการเขียนด้วยภาษา Rust และเผยแพร่ภายใต้ใบอนุญาต BSD

ในระหว่างการดำเนินการตามปกติ ผลลัพธ์จะได้รับอิทธิพลจากปัจจัยภายนอกต่างๆ เช่น เวลาปัจจุบัน การกำหนดเวลาเธรด ที่อยู่หน่วยความจำเสมือน ข้อมูลจากตัวสร้างตัวเลขสุ่มเทียม และตัวระบุเฉพาะต่างๆ Hermit อนุญาตให้คุณรันโปรแกรมในคอนเทนเนอร์ซึ่งปัจจัยเหล่านี้คงที่ในการรันครั้งต่อๆ ไป การดำเนินการที่ทำซ้ำได้ซึ่งสร้างพารามิเตอร์ที่ไม่คงอยู่ของสภาพแวดล้อมได้อย่างสมบูรณ์ สามารถใช้สำหรับการวินิจฉัยข้อผิดพลาด การดีบักหลายขั้นตอนด้วยการรันซ้ำ การสร้างสภาพแวดล้อมคงที่สำหรับการทดสอบการถดถอย การทดสอบความเครียด การระบุปัญหาเกี่ยวกับมัลติเธรดและในระบบบิลด์ที่ทำซ้ำได้ .

Facebook เผยแพร่ Hermit ชุดเครื่องมือสำหรับการเรียกใช้โปรแกรมซ้ำ

สภาพแวดล้อมที่ทำซ้ำได้ถูกสร้างขึ้นโดยการสกัดกั้นการเรียกของระบบ ซึ่งบางส่วนจะถูกแทนที่ด้วยตัวจัดการของตัวเองซึ่งสร้างผลลัพธ์แบบถาวร และบางส่วนจะถูกเปลี่ยนเส้นทางไปยังเคอร์เนล หลังจากนั้นผลลัพธ์จะถูกล้างออกจากข้อมูลที่ไม่ถาวร เพื่อสกัดกั้นการโทรของระบบ จะใช้เฟรมเวิร์กภวังค์ ซึ่งโค้ดดังกล่าวเผยแพร่โดย Facebook เช่นกัน เพื่อป้องกันไม่ให้การเปลี่ยนแปลงในระบบไฟล์และคำขอเครือข่ายส่งผลต่อความคืบหน้าในการดำเนินการ การดำเนินการจะดำเนินการโดยใช้อิมเมจ FS คงที่และปิดใช้งานการเข้าถึงเครือข่ายภายนอก เมื่อเข้าถึงเครื่องกำเนิดตัวเลขสุ่มหลอก Hermit จะสร้างลำดับที่กำหนดไว้ล่วงหน้าซึ่งจะทำซ้ำทุกครั้งที่เปิดตัว

ตัวแปรที่ซับซ้อนที่สุดตัวหนึ่งที่มีอิทธิพลต่อความคืบหน้าในการดำเนินการคือตัวกำหนดเวลาเธรด ซึ่งลักษณะการทำงานขึ้นอยู่กับปัจจัยภายนอกหลายประการ เช่น จำนวนคอร์ของ CPU และการมีอยู่ของเธรดที่กำลังดำเนินการอื่นๆ เพื่อให้แน่ใจว่าตัวกำหนดตารางเวลาจะทำงานซ้ำได้ เธรดทั้งหมดจะถูกดำเนินการแบบอนุกรมโดยเชื่อมต่อกับ CPU คอร์เพียงคอร์เดียว และรักษาลำดับการควบคุมที่ถ่ายโอนไปยังเธรด แต่ละเธรดได้รับอนุญาตให้ดำเนินการตามจำนวนคำสั่งที่กำหนด หลังจากนั้นการดำเนินการจะหยุดและถูกถ่ายโอนไปยังเธรดอื่น (เพื่อจำกัด CPU PMU (Performance Monitoring Unit) ซึ่งจะหยุดการดำเนินการหลังจากจำนวนสาขาตามเงื่อนไขที่ระบุ)

เพื่อวินิจฉัยปัญหาเกี่ยวกับเธรดเนื่องจากสภาพการแข่งขัน Hermit มีโหมดสำหรับระบุการดำเนินการที่มีลำดับการดำเนินการไม่เป็นระเบียบและนำไปสู่การปิดระบบที่ผิดปกติ เพื่อระบุปัญหาดังกล่าว จะมีการเปรียบเทียบสถานะซึ่งมีการบันทึกการดำเนินการที่ถูกต้องและการยุติการดำเนินการที่ผิดปกติ

ที่มา: opennet.ru

เพิ่มความคิดเห็น