Eu vou dar uma idéia / explicação muito difícil.
Na situação do OP, além de medir dentro da VM, o host também deve ser analisado.
Nesse caso, podemos supor que os itens a seguir estão corretos
-
Em todo o teste, a largura de banda de E / S do host (disco) não está maximizada. Conforme a VM (
"monitoring"
), a E / S aumenta com mais CPUs alocadas a ela. Se a E / S do host já estiver no máximo, não deverá haver ganho de desempenho de E / S. -
"bla"
não é o fator limitante Como"monitoring"
desempenho de E / S foi aprimorado sem alterações em"bla"
- A CPU é a principal fábrica de ganho de desempenho (no caso do OP) Já que a E / S não é o gargalo, e o OP não menciona nenhuma alteração no tamanho da memória. Mas por que? Ou como?
Fator adicional
- Escreva mais tempo que Read Isso é o mesmo para a VM e para o host. Coloque-o em termos extremamente simples: VM espera que o host termine de ler e escrever.
O que acontece quando mais cpu é atribuída a "monitoring"
?
Quando "monitoring"
é alocado a mais CPUs, ele ganha mais poder de processamento, mas também ganha mais processamento tempo para E / S.
Isso não tem nada a ver com rsync
, pois é um programa de thread único.
É a camada de E / S que utiliza a maior potência da CPU ou, mais precisamente, o maior tempo de processamento.
Se o programa de monitoramento da CPU (por exemplo, top) for usado em "monitoring"
durante o teste, ele não mostrará um, mas todo o uso da CPU aumentará e também% wa. % wa é o tempo de espera gasto em E / S.
Esse aumento de desempenho só acontecerá quando sua E / S do host não for max. fora.
Não consigo encontrar o agendamento da cpu no site do KVM, mas há este blog mencionando que o KVM está usando CFS e cgroups, segue a citação
Within KVM, each vcpu is mapped to a Linux process which in turn utilises hardware assistance to create the necessary 'smoke and mirrors' for virtualisation. As such, a vcpu is just another process to the CFS and also importantly to cgroups which, as a resource manager, allows Linux to manage allocation of resources - typically proportionally in order to set constraint allocations. cgroups also apply to Memory, network and I/O. Groups of processes can be made part of a scheduling group to apply resource allocation requirements to hierarchical groups of processes.
Em poucas palavras, mais cpu = mais tempo de cpu = mais tempo de E / S em um determinado período de tempo.