# Firecracker를 QEMU로 대체한 이유

> Clean Markdown view of GeekNews topic #9740. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=9740](https://news.hada.io/topic?id=9740)
- GeekNews Markdown: [https://news.hada.io/topic/9740.md](https://news.hada.io/topic/9740.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2023-07-11T10:16:08+09:00
- Updated: 2023-07-11T10:16:08+09:00
- Original source: [hocus.dev](https://hocus.dev/blog/qemu-vs-firecracker/)
- Points: 4
- Comments: 3

## Topic Body

- 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를 이용하면 됨(힘든일은 우리가 다 해놓았으니)

## Comments



### Comment 17256

- Author: tujuc
- Created: 2023-07-13T08:22:02+09:00
- Points: 1

자기들 제품을 소개하는 건 좋지만.. aws 서비스를 그냥 쓰는게 낫다라는 생각도 들긴하네요..  
ssssut 님 말씀데로 fargate에서도 동작하는 서비스라서 저정도까지는 아니라고 생각되는데요.  
  
메모리 반환을 안하는게 뭐가 문젠지 아직 모르겠네요. CPU는 경합발생하더라도 어플리케이션이 느려지지 뜨는데는 문제없지만 메모리는 답이없어서...

### Comment 17245

- Author: ssssut
- Created: 2023-07-12T14:02:32+09:00
- Points: 1

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

### Comment 17191

- Author: neo
- Created: 2023-07-11T10:16:08+09:00
- Points: 1

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