Acompanhando a performance de algumas máquinas virtualizadas em um ODA X7-2 HA foi observado durante o período alto percentual de CPU steal (%st) que mostra a porcentagem de tempo gasto (roubado) em esperas involuntárias da CPU enquanto o hypervisor está atendendo outro processador virtual.
Para dar ênfase ao problema e posteriormente demonstrar a mudança de comportamento junto aos ajustes em uma VM com 8 vCPU, forcei a utilização de CPU disparando comandos "yes" em nohup onde dentro de alguns segundos o percentual de CPU roubada já atingiu 68%
[root@vm04 ~]# cat /proc/cpuinfo | egrep 'processor' | wc -l 8 [root@vm04 ~]# [root@vm04 ~]# yes > /dev/null & [1] 26080 [root@vm04 ~]# yes > /dev/null & [2] 26135 [root@vm04 ~]# yes > /dev/null & [3] 26137 [root@vm04 ~]# yes > /dev/null & [4] 26138 [root@vm04 ~]#
Tratando-se de um Oracle engineered systems, busquei como referência o MOS (My Oracle Support) onde encontrei a Doc ID 1928868.1 falando exatamente sobre este comportamento destacando em seu título "Guest VM Running Slow and is not Able to Use All the CPUs Assigned to it on ODA"
Este comportamento ocorre devido ao parâmetro CPU_CAP estar definido como 100 que independente da quantidade de CPUs associados a máquina virtual ela utilizará apenas 1 CPU.
Cancelando o stress de CPU na VM
[root@vm04 ~]# pkill yes [1] Terminated yes > /dev/null [2]- Terminated yes > /dev/null [3]- Terminated yes > /dev/null [4]+ Terminated yes > /dev/null
[root@dom0 ~]# xm sched-credit
Name ID Weight Cap
Domain-0 0 65535 0
oakDom1 1 256 0
vm03 3 256 100
vm04 4 256 100
[root@dom0 ~]# xm sched-credit -d vm04 -c 0
[root@dom0 ~]# xm sched-credit
Name ID Weight Cap
Domain-0 0 65535 0
oakDom1 1 256 0
vm03 3 256 100
vm04 4 256 0
[root@dom0 ~]#
Ao ser criado uma VM, o valor padrão para o parâmetro é 100%. Esse valor é então convertido em um limite de utilização da CPU no arquivo vm.cfg para a máquina virtual.
O valor definido no arquivo vm.cfg limita a quantidade de CPU que um convidado (VM Guest) pode consumir. Se o Processor Cap for definido como 100% no Oracle VM, o valor definido em vm.cfg será 0, o que significa que não há limite para a utilização da CPU.
Retornando a VM vou proceder com um novo teste forçando a utilização das CPUs da mesma forma que a anterior
[root@vm04 ~]# yes > /dev/null & [1] 31926 [root@vm04 ~]# yes > /dev/null & [2] 31928 [root@vm04 ~]# yes > /dev/null & [3] 31929 [root@vm04 ~]# yes > /dev/null & [4] 31976
Com alguns segundos já foi perceptível que o percentual de CPU roubada não sofria oscilações, estava de forma constante em 0%
Comparando o antes e depois do ajuste
Referência:
Guest VM Running Slow and is not Able to Use All the CPUs Assigned to it on ODA (Doc ID 1928868.1)
0 comentários:
Postar um comentário