- O Hocus (uma alternativa self-hosted ao GitPod/GitHub Codespaces) substituiu o Firecracker pelo QEMU
O Firecracker é otimizado para workloads que rodam por pouco tempo e depois terminam
- Um hipervisor de microVM leve, rápido e seguro usado no AWS Lambda
- Não é tão leve assim
- Não oferece o "recurso de gerenciamento dinâmico de RAM", essencial para workloads de longa duração. A RAM alocada uma vez não é devolvida ao host
- Também não há recurso para devolver armazenamento ao host. Mesmo que você crie e depois apague arquivos grandes dentro da VM, o espaço livre não volta para o host. Ele continua ocupado até que o disco inteiro da VM seja apagado
- Não tem suporte a GPU e também não oferece IO de disco de alto desempenho
O QEMU também não é perfeito
- Há coisa demais para configurar
- Para devolver a RAM não utilizada, o host precisa resolver 3 desafios
- Saber que esse recurso existe (ele é chamado de free page reporting e precisa ser ativado manualmente)
- Entender o recurso DAMON do Linux, saber para que ele serve e como configurá-lo, além de compilar um kernel Linux que o suporte
- É preciso impedir o uso de Transparent Huge Pages no guest; caso contrário, a VM não devolve grandes quantidades de memória
- Levou 2 meses para testar e aplicar
- Ler o código do Firecracker/QEMU
- E também trocar e-mails com desenvolvedores para configurar o DAMON
→ (O desenvolvedor do DAMON é o coreano SeongJae Park.)
Conclusão
- O QEMU tem os recursos necessários para operar workloads de uso geral
- Mas a configuração exige tempo e paciência
- Para Short-lived, Untrusted Workload, o Firecracker é uma boa escolha
- Mas se você quiser rodar seu ambiente de desenvolvimento em VMs, pode usar o Hocus (porque nós já fizemos toda a parte difícil)
3 comentários
É bom apresentar o próprio produto, mas também fico pensando que talvez seja melhor simplesmente usar os serviços da AWS..
Como o ssssut comentou, é um serviço que também roda no Fargate, então não acho que chegue a esse ponto.
Ainda não entendi qual é exatamente o problema de não devolver memória. CPU, mesmo que haja contenção, no máximo deixa a aplicação mais lenta, mas não impede que ela suba; já com memória não tem saída...
Adendo: a AWS usa Firecracker não só no Lambda, mas também no ECS Fargate para cargas de trabalho de longa duração.
Comentários do Hacker News
microvm, um tipo mínimo de máquina sem suporte a PCI ou ACPI, projetado para guests de curta duração.