4 คะแนน โดย xguru 2023-07-11 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • Hocus (ทางเลือกแทน GitPod/GitHub Codespaces ที่โฮสต์เองได้) ได้แทนที่ Firecracker ด้วย QEMU

Firecracker เหมาะที่สุดกับเวิร์กโหลดที่รันช่วงสั้น ๆ แล้วจบลง

  • เป็นไมโครVM hypervisor ที่เบา เร็ว และปลอดภัย ซึ่งถูกใช้ใน AWS Lambda
  • แต่ก็ไม่ได้เบาขนาดนั้น
    • ไม่มี "ความสามารถในการจัดการ RAM แบบไดนามิก" ซึ่งจำเป็นสำหรับเวิร์กโหลดที่รันนาน ๆ เมื่อจัดสรร RAM ไปแล้วจะไม่คืนกลับให้โฮสต์
    • ก็ไม่มีความสามารถในการคืนพื้นที่สตอเรจกลับไปยังโฮสต์เช่นกัน ต่อให้สร้างไฟล์ขนาดใหญ่ใน VM แล้วลบออก ก็จะไม่คืนพื้นที่ว่างให้โฮสต์ และจะยังคงกินพื้นที่อยู่จนกว่าจะลบไดรฟ์ของ VM ทั้งลูก
    • ไม่รองรับ GPU และไม่ได้มี disk IO ประสิทธิภาพสูง

QEMU ก็ไม่ได้สมบูรณ์แบบ

  • มีสิ่งที่ต้องตั้งค่าเยอะเกินไป
  • เพื่อคืน RAM ที่ไม่ได้ใช้งาน โฮสต์ต้องแก้โจทย์ 3 อย่าง
    • ต้องรู้ก่อนว่ามีฟีเจอร์นี้อยู่ (เรียกว่า free page reporting และต้องเปิดใช้งานเอง)
    • ต้องเข้าใจฟีเจอร์ DAMON ของ Linux รู้ว่ามันใช้ทำอะไร ตั้งค่าอย่างไร และต้องคอมไพล์ Linux kernel ที่รองรับมัน
    • ต้องปิดการใช้ Transparent Huge Pages ใน guest ไม่เช่นนั้น VM จะไม่คืนหน่วยความจำจำนวนมาก
  • กว่าจะทดลองใช้งานได้จริงใช้เวลา 2 เดือน
    • อ่านโค้ดของ Firecracker/QEMU
    • แลกอีเมลกับนักพัฒนาเพื่อตั้งค่า DAMON
      → (นักพัฒนา DAMON คือคุณ Park Seongjae ซึ่งเป็นชาวเกาหลี)

บทสรุป

  • QEMU มีฟีเจอร์ที่จำเป็นต่อการรันเวิร์กโหลดทั่วไป
  • แต่การตั้งค่าต้องใช้เวลาและความอดทน
  • สำหรับ Short-lived, Untrusted Workload นั้น Firecracker เป็นตัวเลือกที่ดี
  • แต่ถ้าคุณอยากรันสภาพแวดล้อมสำหรับพัฒนาบน VM ก็ใช้ Hocus ได้เลย (เพราะงานยาก ๆ เราจัดการไว้ให้หมดแล้ว)

3 ความคิดเห็น

 
tujuc 2023-07-13

การแนะนำผลิตภัณฑ์ของตัวเองก็เป็นเรื่องดีนะครับ.. แต่ก็ทำให้นึกเหมือนกันว่าใช้บริการของ AWS ไปตรง ๆ น่าจะดีกว่า..
อย่างที่คุณ ssssut พูด มันเป็นบริการที่ทำงานได้แม้บน Fargate ด้วย ดังนั้นผมคิดว่าคงไม่ได้ถึงขั้นนั้นนะครับ

ผมยังไม่เข้าใจเลยว่าการไม่คืนหน่วยความจำมันมีปัญหาอะไร CPU ต่อให้เกิดการแย่งทรัพยากรกัน อย่างมากแอปพลิเคชันก็แค่ช้าลง แต่เรื่องการแสดงผลไม่มีปัญหา ส่วนหน่วยความจำนี่คือไม่มีทางแก้เลย...

 
ssssut 2023-07-12

เพิ่มเติม: ไม่ได้ใช้ Firecracker แค่ใน AWS Lambda เท่านั้น แต่ยังใช้ใน ECS Fargate ที่รันเป็นเวลานานด้วย

 
GN⁺ 2023-07-11
ความคิดเห็นบน Hacker News
  • Firecracker ถูกใช้โดย CodeSandbox เพื่อโฮสต์สภาพแวดล้อมการพัฒนา แต่คิดว่าน่าจะใช้กับงานที่รันระยะยาวได้เช่นกัน
  • QEMU มีเป้าหมายชื่อ microvm ซึ่งได้รับแรงบันดาลใจจาก Firecracker เป็นประเภทเครื่องแบบมินิมัลที่ไม่มีการรองรับ PCI หรือ ACPI และถูกออกแบบมาสำหรับ guest ที่มีอายุสั้น
  • Cloud-hypervisor เป็นอีกตัวเลือกหนึ่งที่คล้ายกับ Firecracker และรองรับการเรียกคืนหน่วยความจำรวมถึงฟีเจอร์อื่น ๆ
  • Firecracker มีอุปกรณ์ balloon ที่สามารถขยายและหดได้เพื่อเรียกคืนหน่วยความจำจากระบบโฮสต์
  • บทความนี้กล่าวถึงข้อจำกัดของ Firecracker แต่ไม่ได้ให้ข้อมูลเกี่ยวกับ QEMU มากนัก
  • Fly ใช้ Firecracker เพื่อโฮสต์โปรเซสที่รันระยะยาว
  • ต้องการให้ VM ผสานรวมกับโฮสต์ได้อย่างชาญฉลาดมากขึ้น รวมถึงการกำจัดข้อมูลซ้ำของ block cache และการรวมแบบ zero-copy
  • QEMU สามารถ bind mount โวลุ่มได้ต่างจาก Firecracker แต่สิ่งนี้อาจเป็นความเสี่ยงด้านความปลอดภัย