Como posso disparar manualmente o driver de balão do virtio em um convidado?

1

Eu gostaria que um determinado convidado Linux rodando no QEMU liberasse memória antes do host estar sob pressão de memória. Como posso disparar manualmente o driver de balão virtio em um convidado para que ele libere tanta memória possível?

    
por Ivan Kozik 28.12.2017 / 16:05

1 resposta

0

Algo parecido com isso parece funcionar: primeiro reduza a quantidade de memória disponível para o convidado e, depois, (opcionalmente) restaure a configuração original.

virsh --connect qemu:///system qemu-monitor-command --domain NAME --hmp 'balloon 512'
# Wait for the balloon driver to release some memory
sleep 2
virsh --connect qemu:///system qemu-monitor-command --domain NAME --hmp 'balloon 4096'

Ou como um script adequado:

#!/bin/bash

set -eu

domain=$1
# How many MB to temporarily reduce the guest memory to; don't set this too
# low or the OOM killer will start killing.
reduced_memory=$2

hmp() {
    virsh --connect qemu:///system qemu-monitor-command --domain "$domain" --hmp "$1"
}

original_memory=$(hmp "info balloon" | grep = | cut -d '=' -f 2)
hmp "balloon $reduced_memory" > /dev/null
# Wait for the balloon driver to release some memory before setting it back
sleep 2
hmp "balloon $original_memory" > /dev/null
    
por 28.12.2017 / 16:28