Popcorn กำลังพัฒนาระบบประมวลผลเธรดแบบกระจายสำหรับเคอร์เนล Linux

เวอร์จิเนียเทค предложил สำหรับการอภิปรายโดยนักพัฒนาเคอร์เนล Linux ซึ่งเป็นชุดแพตช์ที่มีการนำระบบปฏิบัติการเธรดแบบกระจายไปใช้ ข้าวโพดคั่ว (Distributed Thread Execution) ซึ่งช่วยให้คุณสามารถจัดระเบียบการทำงานของแอปพลิเคชันบนคอมพิวเตอร์หลายเครื่องด้วยการกระจายและการโยกย้ายเธรดระหว่างโฮสต์อย่างโปร่งใส ด้วย Popcorn แอปพลิเคชันสามารถเปิดบนโฮสต์หนึ่งแล้วย้ายไปยังโฮสต์อื่นได้โดยไม่หยุดชะงัก ในโปรแกรมแบบมัลติเธรด อนุญาตให้ย้ายแต่ละเธรดไปยังโฮสต์อื่นได้

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

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

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

Popcorn ได้รับการพัฒนามาตั้งแต่ปี 2014 โดยเป็นโครงการวิจัยเพื่อศึกษาความเป็นไปได้ในการสร้างแอปพลิเคชันแบบกระจาย ซึ่งเธรดสามารถดำเนินการบนโหนดต่างๆ ใน ต่างกัน ระบบคอมพิวเตอร์ที่สามารถรวมคอร์ตามสถาปัตยกรรมชุดคำสั่งที่แตกต่างกัน (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA) ชุดแพตช์ที่เสนอให้กับนักพัฒนาเคอร์เนล Linux รองรับเฉพาะการดำเนินการบนโฮสต์ที่มี CPU x86 เท่านั้น แต่ยังมี Popcorn Linux เวอร์ชันที่ใช้งานได้มากกว่า ซึ่งช่วยให้แอปพลิเคชันทำงานบนโฮสต์ที่มีสถาปัตยกรรม CPU ที่แตกต่างกัน (x86 และ ARM) หากต้องการใช้ป๊อปคอร์นในสภาพแวดล้อมที่แตกต่างกัน คุณต้องใช้คุณสมบัติพิเศษ คอมไพเลอร์ ขึ้นอยู่กับ LLVM เมื่อรันแบบกระจายบนโฮสต์ที่มีสถาปัตยกรรมเดียวกัน ไม่จำเป็นต้องสร้างใหม่ด้วยคอมไพเลอร์แยกต่างหาก

Popcorn กำลังพัฒนาระบบประมวลผลเธรดแบบกระจายสำหรับเคอร์เนล Linux

นอกจากนี้ยังสามารถสังเกตได้ ประกาศ โครงการที่ค่อนข้างคล้ายกัน เทเลฟอร์ก ด้วยการนำ API ต้นแบบเริ่มต้นไปใช้สำหรับการเรียกใช้กระบวนการลูกบนคอมพิวเตอร์เครื่องอื่นในคลัสเตอร์ (เช่น fork() แต่ถ่ายโอนกระบวนการที่แยกไปยังคอมพิวเตอร์เครื่องอื่น)
โค้ดนี้เขียนด้วยภาษา Rust และจนถึงขณะนี้อนุญาตให้ทำการโคลนกระบวนการง่ายๆ ที่ไม่ได้ใช้ทรัพยากรระบบ เช่น ไฟล์เท่านั้น เมื่อทำการเรียก Telefork หน่วยความจำและโครงสร้างที่เกี่ยวข้องกับกระบวนการจะถูกโคลนไปยังโฮสต์อื่นที่รันตัวจัดการเซิร์ฟเวอร์ (telepad) การใช้ ptrace การสะท้อนหน่วยความจำของกระบวนการจะถูกทำให้เป็นอนุกรม และพร้อมกับสถานะของกระบวนการและการลงทะเบียน จะถูกถ่ายโอนไปยังโฮสต์อื่น API ยังช่วยให้คุณบันทึกสถานะกระบวนการลงในไฟล์และกู้คืนผ่านไฟล์นั้นได้

ที่มา: opennet.ru

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