4P by xguru 2023-07-11 | favorite | 댓글 3개
  • Hocus(셀프 호스팅 가능한 GitPod/GitHub Codespaces 대체제)가 Firecracker를 QEMU로 대체했음

Firecracker는 짧게 실행하고 종료하는 형태의 워크로드에 최적화 되어있음

  • AWS Lambda에서 사용되는 가벼우며 빠르고 안전한 마이크로VM 하이퍼바이저
  • 그렇게 가볍지는 않음
    • 오래 실행되는 워크로드에 필수인 "동적 RAM 관리 기능"을 제공하지 않음. 한번 할당된 RAM을 호스트로 반환하지 않음
    • 스토리지를 호스트로 되돌리는 기능도 없음. VM내에서 큰 파일을 만들었다 삭제하더라고 호스트에 빈 공간을 돌려주지 않음. 전체 VM 드라이브를 삭제하기 전까지 계속 점유함
    • GPU 지원이 없고, 고성능 디스크 IO도 제공되지 않음

QEMU도 완벽하지는 않음

  • 설정할게 너무 많음
  • 미사용 RAM을 돌려주기 위해서 호스트가 3가지 챌린지를 해결해야함
    • 그 기능이 있다는 것 자체를 알기(free page reporting 이라고 불리며, 직접 활성화 해야함)
    • Linux의 DAMON 기능을 이해하고, 용도와 구성방법을 알고, 이를 지원하는 리눅스 커널을 컴파일 해야함
    • 게스트에서 Transparent Huge Pages를 사용하지 않도록 해야하며, 그렇지 않으면 VM이 대량의 메모리를 리턴하지 않음
  • 시험 적용하는데 2달이 걸렸음.
    • Firecracker/QEMU 코드 읽고,
    • DAMON 설정하기위해서 개발자랑 메일도 주고 받음
      → (DAMON 개발자가 한국분인 박성재님입니다.)

결론

  • QEMU는 범용 워크로드 운용에 필요한 기능을 가지고 있음
  • 하지만 설정에는 시간과 인내가 필요함
  • Short-lived, Untrusted Workload를 위해서는 Firecracker가 좋은 선택임
  • 하지만 만약 당신의 개발환경을 VM에서 운영하고 싶다면 Hocus를 이용하면 됨(힘든일은 우리가 다 해놓았으니)

자기들 제품을 소개하는 건 좋지만.. aws 서비스를 그냥 쓰는게 낫다라는 생각도 들긴하네요..
ssssut 님 말씀데로 fargate에서도 동작하는 서비스라서 저정도까지는 아니라고 생각되는데요.

메모리 반환을 안하는게 뭐가 문젠지 아직 모르겠네요. CPU는 경합발생하더라도 어플리케이션이 느려지지 뜨는데는 문제없지만 메모리는 답이없어서...

추가: AWS Lambda 뿐 아니라 오랜 시간 실행되는 ECS Fargate에서도 Firecracker를 사용하고 있습니다.

Hacker News 의견
  • Firecracker는 개발 환경을 호스팅하기 위해 CodeSandbox에서 사용되지만, 장기 실행 작업에도 사용될 수 있다고 생각한다.
  • QEMU는 PCI 또는 ACPI 지원이 없는 최소한의 머신 유형인 microvm이라는 Firecracker에 영감을 받은 대상을 가지고 있으며, 짧은 기간 동안의 게스트를 위해 설계되었다.
  • Cloud-hypervisor는 메모리 회수 및 기타 기능을 지원하는 Firecracker와 유사한 다른 옵션이다.
  • Firecracker에는 호스트 시스템에서 메모리를 회수하기 위해 팽창 및 수축할 수 있는 풍선 장치가 있다.
  • 이 기사는 Firecracker의 제한 사항을 언급하지만 QEMU에 대한 많은 정보를 제공하지 않는다.
  • Fly는 장기 실행 프로세스를 호스팅하기 위해 Firecracker를 사용한다.
  • 블록 캐시의 중복 제거 및 제로-복사 통합을 포함하여 VM이 호스트와 더 스마트하게 통합되기를 원한다.
  • QEMU는 Firecracker와 달리 볼륨을 바인드 마운트할 수 있지만, 이는 보안 위험이 될 수 있다.