Diferença de desempenho de E / S de disco - Hyper-V / CSV - Guest vs Host

3

Eu tenho dois ambientes diferentes Hyper-V 2012 R2 que usam iSCSI para se conectarem ao armazenamento da máquina virtual. Embora os ambientes sejam diferentes (um é todos os 10 GB enquanto o outro é misturado com 1 GB / 10 GB, um está usando um array SSD no RAID 6, enquanto o outro é o RAID 10 espalhado por dois arrays), o comportamento estranho que estou vendo é o mesmo.

A conclusão é que quando executo um teste de e / s de disco diretamente no host em relação ao CSV, obtenho um valor específico para a média de IOPS. No entanto, quando executo o mesmo teste dentro da máquina virtual em relação ao disco "local" (o arquivo vhdx armazenado no CSV), obtenho um muito valor de IOPS reduzido.

Para colocar as coisas em perspectiva, aqui está o ambiente que estou testando

  • Anfitrião
    • Windows 2012 R2 Datacenter
    • 512 GB
    • 48 processadores lógicos
    • Fibra de 10 GB para tráfego iSCSI
    • Uma (1) máquina virtual em execução
  • Armazenamento
    • EqualLogic PS6210S
    • 24 SSD de 800 GB no RAID 6
    • Um (1) volume de 1 TB contendo uma (1) vm
    • 10 GB de fibra
    • Host e Array são conectados a switches de rede dedicados
  • Máquina virtual
    • Windows 2012 R2 Datcenter
    • disco dinâmico de 127 GB
    • RAM dinâmica
  • Teste de E / S
    • FIO 2.2.10 - Teste de software
    • 70/30 R / W mix com arquivos de teste de 500 MB (veja abaixo o arquivo real de configuração do teste)

Quando executo o teste no CSV do host ( C:\ClusterStorage\VM-Infrastructure ), recebo IOPS de leitura / gravação de aproximadamente 22k / 9k , respectivamente. No entanto, quando executo esse mesmo teste na VM com relação à sua pasta C:\Temp (com o arquivo VHDX da VM sendo armazenado na matriz em C:\ClusterStorage\VM-Infrastructure '), recebo números de 13k / 6k .

Este é um problema conhecido? Existe alguma configuração de host / vm em particular que eu deveria estar olhando para obter o desempenho de vm mais próximo do que recebo no host? Uma queda de 22k para 13k é muito dramática. Eu imaginei que haveria um ligeiro hit dentro da vm mas não tanto assim - tão alto quanto 40% em alguns casos.

[global]
ioengine=windowsaio
directory=C\:\ClusterStorage\VM-Infrastructure
;directory=C\:\Temp
rw=randrw
rwmixread=70
;rwmixwrite=30
direct=1 ; 1 for direct IO, 0 for buffered IO
bs=8k
iodepth=32 ; For async io, allow 'x' ios in flight
invalidate=1 ; Invalidate page cache for file prior to doing io
numjobs=16 ; Create 'x' similar entries for this job
runtime=120
group_reporting ; ?
thread ; Use pthreads instead of forked jobs

[workload]
name=8k7030test
size=500m
    
por Jason 03.11.2015 / 23:44

1 resposta

1

Após mais pesquisas e algumas discussões com especialistas em armazenamento, o culpado foi encontrado.

Embora o host estivesse executando uma máquina virtual única e que vm fosse o cliente somente lendo e gravando a matriz de armazenamento, o incorporado O armazenamento em Hyper-V e o balanceador de carga de rede estavam entrando em ação e acelerando a vm. Quando o balanceador de carga foi desativado, a máquina virtual colocou números de IOPS muito próximos do que vimos diretamente do host.

Para operações de armazenamento, o valor de limite de latência é 83 ms e 2 ms para rede. Da melhor maneira que podemos dizer, os valores de limite padrão são excessivamente agressivos ou simplesmente não adequados para conexões de armazenamento iSCSI. (Conexões iSCSI, naturalmente, adicionarão latência que você não veria com o armazenamento diretamente conectado ou local.) A configuração do registro que controla isso (para armazenamento) é HKLM\System\CurrentControlSet\Services\StorVsp\IOBalance\Enabled . Definir um valor de 0 desativa o balanceador.

Mais informações podem ser encontradas no link

Ainda não decidimos se manteremos o balanceador desativado. Obviamente, está lá e entra em ação por um motivo. Embora, provavelmente, não deva ser ativado por um punhado de máquinas virtuais, quando eu começar a carregar o host, será mais benéfico. Meu principal objetivo era entender por que meus números eram tão diferentes.

    
por 04.11.2015 / 23:07