Estou tentando definir os bons valores das minhas VMs (KVM + QEMU). Eu faço isso por:
ps -u libvirt-qemu
# obter pid de qemu-system-x86_64
process. ls /proc/${PID}/task/
# get pid do thread CPU 0/KVM
. renice -n 19 -p ${PID_CPU0}
# altera o valor legal. Suponha que nenhum problema de permissão (eu raíz se necessário) e grupos autônomos estão desabilitados pelo parâmetro de inicialização do kernel noautogroup
. Meu host tem um núcleo lógico de PCPU para o restante desta discussão (pin se necessário).
Eu gero a carga da CPU executando um loop infinito de algum outro lugar. Mas eu ainda vejo que o processo qemu-system-x86_64
obtém no máximo 50% de compartilhamento de CPU, não importa o que eu definir seu valor agradável para. Apenas alterar o código desse programa de loop tem algum efeito no compartilhamento de CPU do qemu.
Isso se torna uma preocupação se eu estiver executando duas VMs (VCPUs) em uma PCPU. Eu não consigo dividir o compartilhamento de CPU arbitrariamente. cpulimit
não funciona para mim, porque não é conservador do trabalho.
Então, agora eu quero descobrir quais são as entidades agendáveis na fila de execução da minha PCPU. E como descobrir a hierarquia para que eu possa renegar a coisa correta?
Tags qemu nice kvm libvirt scheduling