Hermit เครื่องมือสำหรับการทดสอบควบคุมและการตรวจหาข้อผิดพลาด

ฤาษี

ฤาษีในฐานะคอนเทนเนอร์ที่ทำซ้ำได้ให้แนวคิดว่ามันจะเป็นอย่างไรหากระบบสแต็กให้การทำซ้ำเป็นนามธรรม

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

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

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

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

ฤาษีไม่สามารถแยกโปรแกรมเกสต์ออกจากแหล่งที่มาของการไม่กำหนดได้ เช่น การเปลี่ยนแปลงระบบไฟล์ หรือการตอบสนองจากเครือข่ายภายนอก ผู้ใช้ต้องจัดเตรียมอิมเมจพื้นฐานของระบบไฟล์แบบตายตัวแทน (เช่น กับ Docker) และปิดใช้งานเครือข่ายภายนอก

เกี่ยวกับ ฤาษี

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

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

แหล่งที่มาที่ซับซ้อนที่สุดของ non-determinism อยู่ในตัวกำหนดตารางเวลาของเธรด วิธีที่เคอร์เนลกำหนดเวลาเธรดขึ้นอยู่กับปัจจัยภายนอกหลายอย่าง รวมถึงจำนวนของ CPU จริงหรือเธรดอื่นที่ทำงานบนระบบที่ต้องใช้เวลาของ CPU

จากอิทธิพลที่ไม่ถาวรที่ซับซ้อนมากขึ้นต่อการปฏิบัติงาน ไฮไลท์ตัวจัดกำหนดการเธรดซึ่งลักษณะการทำงานขึ้นอยู่กับปัจจัยภายนอกหลายอย่าง เช่น จำนวนคอร์ของ CPU และการมีอยู่ของเธรดที่กำลังทำงานอยู่อื่นๆ

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

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

สุดท้าย หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ คุณควรรู้ไว้ รหัสโครงการ มันเขียนในสนิมและจัดจำหน่ายภายใต้ใบอนุญาต BSD

สามารถตรวจสอบรายละเอียดได้ใน ลิงค์ต่อไปนี้


เป็นคนแรกที่จะแสดงความคิดเห็น

แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา