Por que as VMs lutam terrivelmente com a E / S quando o host está sob carga pesada?

2

Eu já notei várias vezes que quando o sistema operacional host está sob pesada carga de i / o, todas as VMs começam a lutar incrivelmente com o i / o até o ponto em que ele falha ao inicializar com o systemd dando CPU bloqueada mensagens e outros tempos limite. Ele funciona dessa maneira tanto no VMWare Workstation quanto no VirtualBox no host do Linux. Com qualquer convidado. Basicamente, se o host estiver realizando, por exemplo, verificação de sistema de arquivos ou alguns cálculos de soma de verificação, os sistemas operacionais convidados são meio-funcionais, devido ao fato de não estar funcionando quase totalmente.

Vale a pena mencionar que os processos de host não têm compartilhamento de problemas durante essa carga e quando a segunda soma de verificação é executada, o i / o é dividido de maneira mais ou menos uniforme em dois processos. Por que é que? O que torna a VM tão "especial"? Pode ser ajudado?

    
por Lapsio 27.02.2017 / 10:30

1 resposta

3

Os controladores / discos de grau de consumo não têm a capacidade de executar várias operações pesadas de E / S de forma eficiente; no entanto, como geralmente mais rápido é a tecnologia, o processo irá melhor (em teoria).

Obviamente, se você estiver executando operações intensivas de CPU / E / S, como software RAID (como o OP disse que está fazendo), isso prejudicará o desempenho de toda a configuração, tanto ao compartilhar controladores quanto ao usar recursos de CPU. Eu aconselharia investir em um controlador RAID de hardware, pelo menos.

O hardware de nível de servidor geralmente lidará melhor com situações de acesso pesado paralelo de várias VMs / vários usuários.

No entanto, ir para o hardware de nível de servidor não é toda a história, e existem estratégias de otimização que são úteis quando se lida com hardware de consumidor ou servidor.

O que pode ser feito em VMs que ajudam muito na tributação de E / S, menos o hypervisor é paravirtualizing services.

Paravirtualização significa adicionar drivers especiais, que falarão diretamente com os serviços de virtualização / kernel para transferência de dados em massa (também conhecido como PVSCSI no jargão VMWare) e, portanto, os dispositivos de armazenamento de mídia / NICs reais não precisam ser emulados.

Para todas as soluções VMware, Enterprise ou Workstation, você tem para Linux e FreeBSD, o pacote open-vm-tools .

Sob o Debian, você o instala usando:

apt-get install open-vm-tools

Para o Debian Stretch, não envolve mais compilar nada. Para Jessie, eu recomendo instalar open-vm-tools dos backports, já que os backports instalam open-vm-tools v10.

Depois de instalar o open-vm-tools, é necessário desligar a VM e alterar o controlador de disco para o tipo ParaVirtual e o controlador de rede para vmxnet3 .

Dê uma olhada em Configurando discos para usar o SCSI VMware Paravirtual (PVSCSI) adaptadores (1010398)

Os vmtools também permitem que as VMs realizem balões de memória e, como tal, não precisarão usar a RAM que não estão usando.

Virtual memory ballooning is a computer memory reclamation technique used by a hypervisor to allow the physical host system to retrieve unused memory from certain guest virtual machines (VMs) and share it with others. Memory ballooning allows the total amount of RAM required by guest VMs to exceed the amount of physical RAM available on the host.

O suporte a tecnologias de emulação no nível do processador, como VT e VT-d, também ajuda o processo a ser mais suave. Tecnologia de virtualização Intel para E / S direcionada (VT-d)

É desnecessário dizer que as otimizações no nível do sistema operacional que diminuem a E / S também ajudam; por exemplo, registrando em log em sistemas de log remoto, e não na VM local.

Ou alinhando partições.

Alinhamento de partições no VMware vSphere 5, DeepDrive, Parte 1

Alinhamento de partições no VMware vSphere 5, um DeepDrive, Parte 2

Cuidado também com outras otimizações de E / S, como retirar o espaço de armazenamento do banco de dados da partição / var devido ao daemon de log liberar os arquivos de log para manter a integridade do log em caso de reinicializações súbitas.

Ele também ajuda a seguir a filosofia do Unix de usar os serviços mínimos necessários. Empiricamente a partir do meu uso, VMs menores usarão menos E / S em manutenção / paginação. Obviamente, se você usar mais memória do que você, poderá ter problemas com E / S (também conhecido como lixo).

Você também pode ajustar a prioridade de E / S de uma determinada VM no hypervisor, ou seja, dando-lhe maior ou menor prioridade. Eu sei que isso pode ser feito no VCenter / VMWare ESX, provavelmente não no VMWare Workstation, pois é um hipervisor de nível 2 e, como tal, é o sistema operacional host que lida com o gerenciamento das operações de E / S e das cotas de fatia em).

Também é preciso dizer que, ao usar hipervisores de nível 2, muitas das otimizações que conversamos aqui também devem ser aplicadas ao sistema operacional host, quando possível.

A tecnologia de hypervisor VMware também parece para lidar melhor com E / S de alta carga em várias VMs do que as alternativas.

No entanto, se você está preocupado com o desempenho, pelo menos no domínio VMWare, pelo menos para sistemas de produção , eu aconselho usar o hipervisor tipo 1 / bare-metal (ESX ou ESXi) em vez de usar a estação de trabalho VMware.

De Hypervisor :

Type-1, native or bare-metal hypervisors These hypervisors run directly on the host's hardware to control the hardware and to manage guest operating systems. For this reason, they are sometimes called bare metal hypervisors. The first hypervisors, which IBM developed in the 1960s, were native hypervisors.[4] These included the test software SIMMON and the CP/CMS operating system (the predecessor of IBM's z/VM). Modern equivalents include Xen, Oracle VM Server for SPARC, Oracle VM Server for x86, the Citrix XenServer, Microsoft Hyper-V and VMware ESX/ESXi. Type-2 or hosted hypervisors These hypervisors run on a conventional operating system (OS) just as other computer programs do. A guest operating system runs as a process on the host.

Type-2 hypervisors abstract guest operating systems from the host operating system. VMware Workstation, VMware Player, VirtualBox, Parallels Desktop for Mac and QEMU are examples of type-2 hypervisors.

Por fim, há também a opção de ir para tecnologias de hipervisores nativos ou contêineres que não adicionam uma camada de emulação ao acesso de armazenamento em massa, como Xen para hosts Linux no modo PV, docker ou FreeBSD jails . Essa alternativa também tem suas vantagens e desvantagens, que estão fora do escopo desta resposta.

    
por 27.02.2017 / 11:17