ทำไม VM บน Apple Silicon ถึงแตกต่างกันมากขนาดนี้?
(eclecticlight.co)ทำไม VM บน Apple Silicon ถึงแตกต่างกัน?
- การรัน macOS virtual machine (VM) บน Mac ที่ใช้ Apple Silicon อาจดูเหมือนไม่ค่อยได้รับความนิยม แต่เป็นหนึ่งในเป้าหมายสำคัญของ Apple มาอย่างยาวนาน
- เมื่อใช้โปรแกรม virtualization บน Mac ตระกูล M-series จะเห็นได้ว่ามันแตกต่างจากการทำ virtualization ของ macOS และระบบปฏิบัติการอื่น ๆ บน Mac ที่ใช้ Intel มากเพียงใด
- บทความนี้อธิบายว่าทำไม virtualization จึงสำคัญ และมันเปลี่ยนไปมากได้อย่างไร
สามเสาหลักของ Apple Silicon
- ในงาน WWDC เดือนมิถุนายน 2020 Craig Federighi ได้ประกาศสามเสาหลักของ Apple Silicon ได้แก่ Universal Apps ที่รันได้บนทั้งสองสถาปัตยกรรม, Rosetta 2 ที่แปลโค้ด Intel เป็นคำสั่ง Arm และ virtualization
- ก่อนที่ Apple จะเปิดตัว Developer Transition Kit เสียอีก Andreas Wendker ได้สาธิต Parallels Desktop เวอร์ชันก่อนเปิดตัวที่รัน Linux เป็น guest ได้ แต่ไม่มีการกล่าวถึง Windows
จุดเริ่มต้นของ virtualization
- ในยุคแรกของ virtualization มีการแบ่งเป็น hypervisor แบบ Type 1 ที่รันบนฮาร์ดแวร์โดยตรง และแบบ Type 2 (hosted) ที่รันระบบปฏิบัติการหลักบนฮาร์ดแวร์ก่อน แล้วจึงรัน hypervisor ทับลงไปอีกชั้น
- บนคอมพิวเตอร์เดสก์ท็อป ผลิตภัณฑ์ virtualization แบบ Type 2 เช่น VMware Fusion, Parallels Desktop และ Oracle VirtualBox พบได้บ่อยกว่า
การรองรับจากฮาร์ดแวร์และ virtualization
- หากมีการรองรับ hypervisor จากฮาร์ดแวร์ ก็จะรัน guest operating system ที่ไม่ต้องดัดแปลงได้ง่ายขึ้น
- สามารถใช้ชุดความสามารถ VT-x ของ Intel หรือ AArch64 virtualization ของซีพียู Arm ได้
- ปัญหาด้านการรองรับอุปกรณ์อาจถูกแก้ใน virtualization framework หรือให้โปรแกรม virtualization จัดการเองก็ได้
ความพิเศษของชิป Apple Silicon
- อุปกรณ์ฮาร์ดแวร์ทั้งหมดในชิป Apple Silicon แตกต่างจากอุปกรณ์คู่กันบน Mac ที่ใช้ Intel
- ต่อให้ Apple ต้องการจัดทำเอกสารอย่างสมบูรณ์เพื่อให้คนนอกใช้งานได้ ความพยายามทางวิศวกรรมที่จำเป็นสำหรับการรองรับอุปกรณ์แบบเดียวกับบน Mac Intel ก็น่าจะมีต้นทุนสูงเกินไปสำหรับบุคคลที่สาม
- ดังนั้นการคาดหวังว่าจะเริ่มจาก hypervisor แล้วสร้างซอฟต์แวร์ virtualization แบบสมบูรณ์ขึ้นมาเองจึงไม่ใช่แนวทางที่ทำได้จริง และยังยากที่จะให้ได้ประสิทธิภาพสูงตามที่ Apple และผู้ใช้คาดหวัง
ไดรเวอร์ Virtio และ virtualization
- Apple เลือกสร้างไดรเวอร์ Virtio ในลักษณะที่ฝังการรองรับอุปกรณ์ไว้ใน macOS แทน
- Virtio เป็นมาตรฐานที่ให้ชั้น abstraction สำหรับอุปกรณ์ I/O โดยเมื่อ guest operating system พยายามเปิดไฟล์ คำขอนั้นจะถูกส่งไปยัง para-driver ของอุปกรณ์จัดเก็บข้อมูลฝั่ง Virtio frontend แล้วจึงโต้ตอบกับอุปกรณ์จัดเก็บข้อมูลผ่านไดรเวอร์ Virtio backend
- การสร้างแอป virtualization ก็คือการกำหนดค่าและเปิดใช้งานอุปกรณ์ Virtio ที่จำเป็น เพื่อให้ guest, Virtio และ host จัดการงานร่วมกัน
การเลือกใช้ Virtio ของ Apple
- การเลือก Virtio ของ Apple ได้รับอิทธิพลจากการที่ Linux มีการรองรับ Virtio ที่ดีอยู่แล้ว แต่ในเวลานั้น macOS ยังไม่มีการรองรับ Virtio
- วิศวกรของ Apple ใช้เวลาหลายปีก่อนการออก Monterey เพื่อสร้างการรองรับ Virtio ใน macOS
- การติดตั้งใช้งาน Virtio บน macOS มีส่วนขยายที่รองรับคีย์บอร์ดและอุปกรณ์ชี้ตำแหน่ง, shared clipboard ('Spice') รวมถึงกราฟิกประสิทธิภาพสูงผ่านการรองรับ Metal และ GPU
ข้อดีของโมเดล Virtio
- ในโมเดล Virtio ระบบปฏิบัติการเป็นฝ่ายให้การรองรับ ซึ่งช่วยลดต้นทุนการพัฒนาให้กับผู้ขายอย่าง VMware และ Parallels แต่ก็ทำให้มูลค่าทางการค้าของผลิตภัณฑ์ของพวกเขาลดลงด้วย
- Apple เป็นผู้กำหนดว่าฮาร์ดแวร์และความสามารถใดบ้างที่ virtualization บน Apple Silicon จะรองรับ
อนาคตของ virtualization และความยืดหยุ่น
- การรัน macOS เวอร์ชันเก่าใน VM ช่วยให้ผู้ใช้ยังคงรันแอปที่รองรับเฉพาะ Intel ได้ แม้ Rosetta 2 จะถูกยกเลิกการรองรับบน macOS รุ่นปัจจุบันในอนาคต
- สามารถรันซอฟต์แวร์ที่ไม่เข้ากันกับเวอร์ชันขั้นต่ำของ macOS บน Mac Apple Silicon ได้
- นักพัฒนาสามารถแจกจ่ายแพ็กเกจ lightweight VM อย่าง Docker ได้โดยใช้ Linux หรือ macOS
ความเห็นของ GN⁺
- virtualization บน Mac Apple Silicon ใช้แนวทางที่ต่างจาก virtualization แบบเดิมบน Intel และดูเหมือนจะเป็นส่วนหนึ่งของกลยุทธ์ที่ Apple ต้องการเสริมความแน่นแฟ้นของการบูรณาการฮาร์ดแวร์กับซอฟต์แวร์
- virtualization ผ่าน Virtio มอบโซลูชันที่คุ้มค่าต่อผู้พัฒนา และเปิดทางให้ปรับจูนประสิทธิภาพได้ภายใต้การควบคุมของ Apple
- ความก้าวหน้าของเทคโนโลยี virtualization เปิดความเป็นไปได้ให้ผู้ใช้ Mac Apple Silicon มีสภาพแวดล้อมซอฟต์แวร์ที่หลากหลายในระยะยาว โดยเฉพาะในการรองรับแอปพลิเคชันและระบบรุ่นเก่า
2 ความคิดเห็น
ส่วนของอนาคตของการทำ virtualization ดูแปลก ๆ อยู่บ้าง
การที่ทำ virtualization ได้ ไม่ได้หมายความว่าจะสามารถรองรับความเข้ากันได้กับระบบเดิมได้เสมอไป สุดท้ายแล้วที่ไหนสักแห่งก็ต้องมีการแปลงคำสั่ง x86 ให้เป็นคำสั่ง arm
ถ้าไม่มีการรองรับสิ่งนี้จากฝั่ง HW หรือ OS (Rosetta?) สุดท้ายก็ไม่มีทางเลือกนอกจากต้องทำ emulation ในระดับ VM ซึ่งในกรณีนี้ประสิทธิภาพจะตกลงอย่างหนักมาก
แม้ตอนนี้จะสามารถติดตั้ง Linux สำหรับ x86 บน Mac ที่ใช้ Apple Silicon ได้ แต่ประสิทธิภาพก็ช้าจนน่าตกใจ (เหมือนจะเป็นปีที่แล้วที่ผมต้องใช้ไบนารีสำหรับ x86 เลยลองติดตั้งไว้เพื่อใช้ build แต่ก็ยอมแพ้ไปแทบจะทันที)
ความเห็นจาก Hacker News