Com o libvirt + KVM no RHEL6 (e presumivelmente outros), você pode fazer isso com os comandos virsh setmem
e setvcpus
.
O truque é que você tem que definir os valores máximos possíveis na configuração permanente antes de inicializar o convidado. Há um sinalizador para isso em setvcpus
; para memória, você precisa dizer setmaxmem
(ótima interface de usuário). Então você pode escalá-los para cima e para baixo on-the-fly dentro do intervalo na configuração.
Para convidados linux, ele liga os recursos de / para o convidado. Para os convidados do windows, para a memória informa ao windows que ele tem o tamanho máximo total sempre. No entanto, ele usará o driver de balão para segurar qualquer memória que você tirar. Não tenho certeza sobre VCPU em convidados do Windows.