• Brusque/SC
  • (47) 3053-7082
-
-

Blog

25 de janeiro de 2021

VM Guest lenta e com elevado percentual de CPU roubada (steal)

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

 

No dom0 confirme o valor do CPU CAP e ajuste dinamicamente seu valor para 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  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

 

Postado por: Anderson Graf
Fonte: My Oracle Support - Doc ID 1928868.1
204 visualizações

Compartilhe este post

Converse com a equipe Exímio

Encontre a melhor solução para sua empresa
Agende uma conversa com a nossa equipe!

Conteudo

Newsletter

Receba todas as nossas
novidades no seu e-mail