On 08/16/2013 10:05 AM, Janssen dos Reis Lima wrote:
Pessoal,

Não é toda hora que acontece, mas algumas vezes quando eu vou iniciar uma VM, aparece a seguinte mensagem de erro:

Error while executing action: Cannot run VM. Host swap percentage is above the defined threshold.
- Check your configuration parameters for Host Swap Percentage.


A mensagem é clara. Há muita swap sendo usada e para garantir o bom funcionamento do Host, a nova VM não pode ser iniciada.


Estou rodando o oVirt em um micro Core2 Duo, 4 GB RAM.
No momento tenho livre de Swap 3,1 GB de 4 GB disponível.
Estou rodando 2 VM's, uma configurada para 512 MB de RAM e outra com 1GB de RAM, ambas com 1 processador cada. Sei que não é o ambiente ideal para eu fazer um teste deste, mas quero entender tudo quanto que é mensagem de erro

Ok, pra entender temos que ver a implementação dela:


No arquivo backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MemoryPolicyUnit.java:
--------------------------
...
 51     private boolean isVMSwapValueLegal(VDS host) {
 ...
 61         long swap_total = host.getSwapTotal();
 62         long swap_free = host.getSwapFree();
 63         long mem_available = host.getMemAvailable();
 64         long physical_mem_mb = host.getPhysicalMemMb();
 65
 66         return ((swap_total - swap_free - mem_available) * 100 / physical_mem_mb) <= Config
 67                 .<Integer> GetValue(ConfigValues.BlockMigrationOnSwapUsagePercentage);
 68     }
--------------------------

Na linha 66 o cálculo fica claro.
Em outras palavras, se você tiver mais swap sendo usada do que memória RAM livre, uma nova VM não vai rodar.
Deduzo que quem implementou isso queria garantir que havia memória RAM suficiente para alocar toda a swap usada. Caso contrário, uma nova VM não poderá ser iniciada.
Ainda de acordo com o código, você pode mudar esse comportamento usando a config "BlockMigrationOnSwapUsagePercentage" (nome pouco intuitivo pra esse caso :/... ). O padrão pra essa config é 0:

# engine-config -g BlockMigrationOnSwapUsagePercentage
BlockMigrationOnSwapUsagePercentage: 0 version: general

Onde 0 é um valor percentual. Se você mudar pra 10, por exemplo, significa que a relação entre swap usada e RAM livre pode ser até 10% do valor da RAM total. Enrolado? Tb achei ;)






Aproveitando, se eu quiser 8 servidores virtuais, cada um com 4 GB de RAM e 2 processadores, qual seria o hardware necessário para o oVirt?

Não faço ideia. "Depende do workload" seria a melhor resposta... mas deve ter gente aqui na lista com mais experiência em implementações reais e que poderia dar alguns exemplos. Esperemos.

--
Pahim