- Hocus (giải pháp thay thế GitPod/GitHub Codespaces có thể tự host) đã thay Firecracker bằng QEMU
Firecracker được tối ưu cho các workload chạy ngắn rồi kết thúc
- Đây là hypervisor microVM nhẹ, nhanh và an toàn, được dùng trong AWS Lambda
- Nhưng thực ra nó không nhẹ đến vậy
- Không cung cấp "tính năng quản lý RAM động", vốn thiết yếu cho các workload chạy lâu. RAM đã cấp phát một lần sẽ không được trả lại cho host
- Cũng không có khả năng trả dung lượng lưu trữ về host. Dù có tạo rồi xóa tệp lớn trong VM thì cũng không hoàn lại chỗ trống cho host. Nó sẽ tiếp tục chiếm dụng cho đến khi toàn bộ ổ đĩa VM bị xóa
- Không hỗ trợ GPU và cũng không cung cấp disk IO hiệu năng cao
QEMU cũng không hoàn hảo
- Có quá nhiều thứ phải cấu hình
- Để trả lại RAM không sử dụng, host phải giải quyết 3 thách thức
- Biết rằng tính năng đó tồn tại (được gọi là free page reporting và phải tự kích hoạt)
- Hiểu tính năng DAMON của Linux, biết mục đích sử dụng và cách cấu hình, đồng thời phải biên dịch kernel Linux có hỗ trợ tính năng này
- Phải ngăn guest sử dụng Transparent Huge Pages, nếu không VM sẽ không trả lại được lượng lớn bộ nhớ
- Mất 2 tháng để thử nghiệm áp dụng
- Đọc mã nguồn Firecracker/QEMU
- Còn trao đổi email với nhà phát triển để cấu hình DAMON
→ (Nhà phát triển DAMON là ông Park Seongjae, người Hàn Quốc.)
Kết luận
- QEMU có các tính năng cần thiết để vận hành workload đa dụng
- Nhưng việc cấu hình đòi hỏi thời gian và sự kiên nhẫn
- Với Short-lived, Untrusted Workload thì Firecracker là lựa chọn tốt
- Nhưng nếu bạn muốn vận hành môi trường phát triển của mình trên VM thì có thể dùng Hocus (vì phần việc khó chúng tôi đã xử lý hết rồi)
3 bình luận
Giới thiệu sản phẩm của mình thì cũng tốt, nhưng cũng khiến tôi nghĩ rằng cứ dùng thẳng dịch vụ của AWS có khi lại tốt hơn..
Đúng như bạn ssssut nói, vì đây là dịch vụ chạy được cả trên fargate nên tôi nghĩ cũng chưa đến mức đó đâu.
Tôi vẫn chưa hiểu việc không trả lại bộ nhớ thì có vấn đề gì. CPU dù có xảy ra tranh chấp thì ứng dụng chỉ chậm đi chứ không đến mức không chạy được, nhưng bộ nhớ thì hết cách...
Bổ sung: Không chỉ AWS Lambda mà cả ECS Fargate chạy trong thời gian dài cũng đang sử dụng Firecracker.
Ý kiến trên Hacker News
microvm, một kiểu máy tối giản không hỗ trợ PCI hoặc ACPI và được thiết kế cho các guest tồn tại trong thời gian ngắn.