ปีที่แล้วเราได้พูดคุยกันในบล็อกนี้เกี่ยวกับข้อเสนอจากByteDance (ผู้สร้าง TikTok)สำหรับยูทิลิตี้ที่ชื่อว่าParker (PARTitioned KERnel) ซึ่งเป็นเทคโนโลยีทดลองที่อนุญาตให้เรียกใช้เคอร์เนล Linux หลายตัวพร้อมกันได้ และตอนนี้ หลังจากผ่านไปกว่าหนึ่งปีครึ่ง ยูทิลิตี้สาธารณะตัวใหม่จากโครงการนี้ "Multikernel Linux (mklinux-v7.0-mk2)" ก็ได้ถูกปล่อยออกมาแล้ว
การพัฒนาครั้งนี้ได้นำเสนอเคอร์เนลลินุกซ์เวอร์ชันพิเศษที่ช่วยให้สามารถเรียกใช้งานอินสแตนซ์เคอร์เนลอิสระหลายตัวพร้อมกันภายในเซิร์ฟเวอร์ทางกายภาพเครื่องเดียวได้ โดยการทำงานโดยตรงบนฮาร์ดแวร์ เทคโนโลยีนี้ช่วยขจัดความจำเป็นในการใช้ไฮเปอร์ไวเซอร์หรือเลเยอร์เวอร์ชวลไลเซชันอย่างสิ้นเชิง ทำให้แต่ละอินสแตนซ์สามารถเข้าถึงหน่วยความจำ ซีพียู และอุปกรณ์ที่จัดสรรไว้ได้โดยตรง
โครงการนี้ใช้เคอร์เนล Linux 7.0 ที่เพิ่งเปิดตัวเป็นพื้นฐาน และอนุญาตให้เปิดใช้งานคุณสมบัตินี้ได้ผ่านพารามิเตอร์การกำหนดค่า CONFIG_MULTIKERNELหากปิดใช้งานตัวเลือกนี้ เคอร์เนลที่ได้จะมีลักษณะเหมือนกันทุกประการและทำงานเหมือนกับ Linux 7.0 มาตรฐาน ปัจจุบันเวอร์ชันแรกนี้ (v7.0-mk2) รองรับเฉพาะสถาปัตยกรรม x86_64และได้รับการออกแบบมาเพื่อลดช่องว่างด้านประสิทธิภาพและความปลอดภัยระหว่างการจำลองเสมือนแบบดั้งเดิมและการแยกคอนเทนเนอร์
การแยกตัวโดยไม่ส่งผลเสียต่อประสิทธิภาพการทำงาน
ปัญหาใหญ่ที่สุดของการจำลองเสมือนคือ "ภาระ" ด้านประสิทธิภาพที่เกิดจากไฮเปอร์ไวเซอร์ ในทางตรงกันข้ามมัลติเคอร์เนลลินุกซ์ช่วยขจัดปัญหาการเปลี่ยนสถานะการออกจากเครื่องเสมือนการแปลงหน่วยความจำระดับที่สอง และค่าใช้จ่ายเพิ่มเติมที่เกิดจากโมเดลอุปกรณ์
จากข้อมูลประสิทธิภาพที่เผยแพร่หลังการทดสอบบนโปรเซสเซอร์ Xeon Gold 5418Y (Sapphire Rapids) ระบบมัลติเคอร์เนลแสดงให้เห็นถึงความเร็วในการประมวลผลที่เพิ่มขึ้นอย่างมากเมื่อเทียบกับระบบปฏิบัติการแขก KVMตัวอย่างเช่น การสลับบริบทระหว่างกระบวนการเร็วขึ้น 2,5 เท่า ความหน่วงของไปป์ลดลงมากกว่าครึ่ง (2,18 เท่า) และการเรียกใช้ระบบพื้นฐาน เช่น การอ่านและการเขียน มีเวลาตอบสนองเร็วขึ้นมากกว่า 25%
เมื่อเปรียบเทียบกับคอนเทนเนอร์ Docker แบบดั้งเดิม Multikernel ให้การปกป้องที่เหนือกว่าเนื่องจากคอนเทนเนอร์ใช้เคอร์เนลของโฮสต์เดียวกัน ดังนั้นช่องโหว่ระดับเคอร์เนล การเกิดข้อผิดพลาดร้ายแรง หรือการล็อกภายในที่มากเกินไป จะส่งผลกระทบต่อผู้ใช้งานทั้งหมดในระบบนิเวศ Multikernel แต่ละสภาพแวดล้อมจะมีเคอร์เนลที่เป็นอิสระของตนเองกล่าวคือ หากอินสแตนซ์หนึ่งเกิดความล้มเหลวอย่างร้ายแรง อินสแตนซ์อื่นๆ จะยังคงทำงานต่อไปได้โดยไม่ได้รับผลกระทบ รับประกันสภาพแวดล้อมที่แยกออกจากกัน ซึ่งเหมาะสำหรับการใช้งานทุกอย่างตั้งแต่เว็บเซิร์ฟเวอร์ไปจนถึงเวิร์กโหลดการฝึกอบรม AI ที่เข้มข้น (แมชชีนเลิร์นนิง) บนฮาร์ดแวร์เดียวกัน
การมอบหมายงานและการจัดการระบบแบบไดนามิกด้วย Kerf
ระบบปฏิบัติการ Linux แบบมัลติเคอร์เนลทำงานโดยใช้เคอร์เนลหลักที่จัดการกลุ่มทรัพยากรขนาดใหญ่ (ซีพียู, แรม และอุปกรณ์ PCI) โดยใช้โครงสร้างทรีอุปกรณ์ที่มีอยู่ (เข้าถึงได้ที่ /sys/fs/multikernel/) เคอร์เนลจะแบ่งกลุ่มทรัพยากรนี้และเรียกใช้ "เคอร์เนลย่อย" ผ่านระบบย่อย kexec_file_load() ดั้งเดิม ด้วยคุณสมบัติ hotplug ของ Linux ทรัพยากรเหล่านี้สามารถย้ายระหว่างอินสแตนซ์ได้อย่างไดนามิกโดยไม่ต้องรีบูตเซิร์ฟเวอร์ ทำให้มั่นใจได้ถึงประสิทธิภาพที่คาดการณ์ได้และปรับเปลี่ยนได้แบบเรียลไทม์
เพื่อควบคุมระบบนิเวศนี้ นักพัฒนาได้แนะนำเครื่องมือบรรทัดคำสั่ง Kerfยูทิลิตีนี้จัดการวงจรชีวิตทั้งหมดของอินสแตนซ์ โดยอาศัยโมดูลโอเพนซอร์สเสริม หนึ่งในนั้นคือ Lazy CMA ซึ่งจัดสรรหน่วยความจำทางกายภาพที่ต่อเนื่องกันในระหว่างการทำงานโดยไม่ต้องกำหนดค่าก่อนบูตใดๆ
อีกเสาหลักหนึ่งคือ DAXFS ซึ่งเป็นโมดูลที่ช่วยให้ระบบไฟล์ในหน่วยความจำสามารถแชร์กันได้โดยตรง ด้วยเหตุนี้ Kerf จึงสามารถบูตเคอร์เนลลูกภายในอิมเมจคอนเทนเนอร์ Docker ได้โดยตรง โดยใช้ประโยชน์จากระบบไฟล์โดยไม่ต้องใช้เลเยอร์จำลอง และใช้ตัวอธิบายในหน่วยความจำสำหรับการเชื่อมต่อเครือข่ายโดยไม่ต้องคัดลอกข้อมูล
เป็นที่น่ากล่าวถึงว่าเวอร์ชันแรกนี้ได้ผ่านการทดสอบความเสถียรอย่างเข้มข้นภายใต้สถาปัตยกรรมเพจจิ้ง 5 ระดับและ KASLR ที่ทำงานอยู่ ซึ่งแสดงให้เห็นว่าการกู้คืนทรัพยากรนั้นปลอดภัยอย่างสมบูรณ์แม้ว่าเคอร์เนลย่อยจะล่มก็ตาม
ด้วยการอนุญาตให้ภาระงานที่ขัดแย้งกันเนื่องจากการล็อกระบบ (เช่น กระบวนการลบลิงก์หรือเปลี่ยนชื่อจำนวนมากบนแคชเดียวกัน) ถูกแบ่งไปยังเคอร์เนลที่แยกต่างหากซึ่งสอดคล้องกับซ็อกเก็ตโปรเซสเซอร์ทางกายภาพ Multikernel Linux แสดงให้เห็นถึงความสามารถในการขยายขนาดเกินขีดจำกัดประสิทธิภาพที่กำหนดโดยเคอร์เนลแบบรวมศูนย์เพียงตัวเดียว เปิดยุคใหม่ในการรวมเซิร์ฟเวอร์และการประมวลผลคลาวด์ประสิทธิภาพสูง
สุดท้ายนี้ หากคุณสนใจเรียนรู้เพิ่มเติม สามารถดูรายละเอียดได้ที่ลิงก์ต่อไปนี้