É geralmente aceito que a AWS não exagera na RAM ou na CPU, embora eu tenha lido que as microinstâncias podem estar um pouco vendidas às vezes. No entanto, o ballooning de RAM é um recurso amplamente utilizado do XEN e notei que o driver do kernel e o daemon de balão estão sendo executados em máquinas EC2, o que impede que a Amazon amplifique a RAM para otimizar o uso de recursos?
Eu gostaria de investigar isso ainda mais porque me deparei com uma situação em que um 8GB EC2 Unbuntu não conseguiu alocar memória RAM para reiniciar o Tomcat embora houvesse quase 1,8 GB de memória livre de acordo com o cache livre e superior e cerca de 4GB em disco foi recuperável. Eu adicionei o RSS de todos os processos e estava faltando cerca de 4GB do valor livre que mais ou menos correspondia ao tamanho do cache de disco. No entanto, o sistema continuava dizendo OOM para um aplicativo do Tomcat que tinha heap limitado na linha de comando.
Portanto, a AWS está efetivamente expandindo ou não foi possível recuperar o cache de disco por algum motivo (talvez não seja rápido o suficiente para evitar a OOM?) Talvez a troca ajudasse, mas há algum tipo de guerra religiosa sobre a troca na AWS e eu não sou o administrador, então não posso fazer nada sobre isso.
Então, novamente para a pergunta inicial: se o driver de balão XEN está carregado e os daemons em execução, o que impede o uso de balões de ar? IMO seria estúpido para a Amazon NÃO cobrir os picos transientes na alocação de recursos. Além disso, é uma característica tão básica do XEN que eu acho que as pessoas que insistem que a Amazon não o usa, nunca configuraram ou executaram seu próprio env XEN.