4 điểm bởi xguru 2023-07-11 | 3 bình luận | Chia sẻ qua WhatsApp
  • 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

 
tujuc 2023-07-13

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...

 
ssssut 2023-07-12

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.

 
GN⁺ 2023-07-11
Ý kiến trên Hacker News
  • Firecracker được CodeSandbox օգտագործելու để lưu trữ môi trường phát triển, nhưng tôi nghĩ nó cũng có thể được dùng cho các tác vụ chạy dài hạn.
  • QEMU có một mục tiêu lấy cảm hứng từ Firecracker là 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.
  • Cloud-hypervisor là một lựa chọn khác tương tự Firecracker, hỗ trợ thu hồi bộ nhớ và các tính năng khác.
  • Firecracker có một thiết bị balloon có thể phình ra và co lại để thu hồi bộ nhớ từ hệ thống host.
  • Bài viết này có đề cập đến các giới hạn của Firecracker nhưng không cung cấp nhiều thông tin về QEMU.
  • Fly sử dụng Firecracker để lưu trữ các tiến trình chạy dài hạn.
  • Tôi muốn VM tích hợp thông minh hơn với host, bao gồm khử trùng lặp bộ nhớ đệm khối và tích hợp zero-copy.
  • Không giống Firecracker, QEMU có thể bind mount volume, nhưng điều này có thể trở thành rủi ro bảo mật.