12 คะแนน โดย GN⁺ 2023-12-31 | 2 ความคิดเห็น | แชร์ทาง WhatsApp

ทำไม 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 ความคิดเห็น

 
molla 2024-01-02

ส่วนของอนาคตของการทำ virtualization ดูแปลก ๆ อยู่บ้าง
การที่ทำ virtualization ได้ ไม่ได้หมายความว่าจะสามารถรองรับความเข้ากันได้กับระบบเดิมได้เสมอไป สุดท้ายแล้วที่ไหนสักแห่งก็ต้องมีการแปลงคำสั่ง x86 ให้เป็นคำสั่ง arm
ถ้าไม่มีการรองรับสิ่งนี้จากฝั่ง HW หรือ OS (Rosetta?) สุดท้ายก็ไม่มีทางเลือกนอกจากต้องทำ emulation ในระดับ VM ซึ่งในกรณีนี้ประสิทธิภาพจะตกลงอย่างหนักมาก
แม้ตอนนี้จะสามารถติดตั้ง Linux สำหรับ x86 บน Mac ที่ใช้ Apple Silicon ได้ แต่ประสิทธิภาพก็ช้าจนน่าตกใจ (เหมือนจะเป็นปีที่แล้วที่ผมต้องใช้ไบนารีสำหรับ x86 เลยลองติดตั้งไว้เพื่อใช้ build แต่ก็ยอมแพ้ไปแทบจะทันที)

 
GN⁺ 2023-12-31
ความเห็นจาก Hacker News
  • Windows มีฟีเจอร์จำนวนมากที่พึ่งพา Hyper-V และเมื่อเปิดใช้งานแล้ว Windows จะไม่ได้บูตขึ้นมาโดยตรง แต่ Hyper-V จะเริ่มต้นก่อน จากนั้นระบบ Windows หลักจะทำงานอยู่ภายใน VM ที่มีสิทธิพิเศษ
  • มีคนกำลังมองหาข้อมูลเกี่ยวกับสถานะปัจจุบันของการทำ virtualization สำหรับ Windows/Linux แบบ x86-64 บน Apple Silicon และเสียดายที่บทความไม่ได้กล่าวถึงแอปพลิเคชันสำคัญสำหรับประเด็นนี้
  • อยากให้ผู้ใช้ OS ทุกคนล็อกอินเข้าไปใช้งานใน VM ที่แยกออกจากกันของ OS เพื่อให้ผู้ใช้ยังคงมีความเป็นเจ้าของคอมพิวเตอร์ Apple ของตนเองได้
  • macOS สามารถรัน VM ได้พร้อมกันเพียงสองตัวเท่านั้น ดังนั้นหากต้องการใช้ Mac mini เป็น build server ก็ควรซื้อรุ่นที่ถูกที่สุด
  • เคยอยากใช้ MacOS VM ผ่าน Parallels สำหรับงานพัฒนา แต่ไม่สามารถล็อกอินด้วย Apple ID ได้ จึงมีข้อจำกัดในการใช้งาน
  • สับสนว่าทำไม Docker บนแพลตฟอร์ม linux/amd64 ถึงทำงานได้เร็วเกือบเทียบเท่า native ขณะที่ x86 UTM VM กลับช้ากว่ามาก
  • มีคำถามเกี่ยวกับความคืบหน้าของเลเยอร์ virtio สำหรับ Windows ว่าใครเป็นผู้พัฒนา และมีโอกาสที่มันจะใช้งานได้จริงในอนาคตอันใกล้หรือไม่
  • มีการกล่าวถึงไดรเวอร์ที่ Rusty Russell เขียนไว้ โดยเขามักแบ่งปันมุมมองเชิงลึกเกี่ยวกับการพัฒนาซอฟต์แวร์ จึงแนะนำให้ติดตามบน Twitter
  • มีข้อสงสัยว่าเดสก์ท็อป VM เชิงพาณิชย์ทั้งหมด (VMWare Fusion/Parallels/UTM/Vimy) ตอนนี้ใช้โมเดล virtio กันหมดแล้วหรือไม่ และในทางทฤษฎีแล้ว Windows ARM64 ควรทำงานคล้ายกันทั้งหมดหรือไม่
  • พยายามหาวิธีสร้าง Qemu VM บนชิป Apple Silicon M2 ด้วยคำสั่งเดียวมาประมาณ 1 ปีแล้ว แต่ยังประสบปัญหา ขณะที่การรัน Alpine Linux + Sway WM บน Qemu ทั้งใน macOS หรือ AsahiLinux นั้นบน x86-64 กลับทำได้ค่อนข้างง่าย