kvm O desempenho do disco virtio é dimensionado incorretamente com a carga de trabalho iozone

2

Estou realizando vários testes para entender por que algumas de nossas cargas de trabalho geram uma "experiência do usuário" muito ruim com atividades relacionadas ao banco de dados .

Temos um servidor dl160g9 com um controlador B140i (4 discos LFF 7.2k rpm). host é centos 7 , o mecanismo de virtualização é kvm , a versão é 105.el7_2.4 (1.5.3 ) de centos virt sig. Discos são espessos volumes de LVM sobre o fake-raid 5 gerado pelo controlador b140i. tuned está definido para performace (a configuração para virt guest não muda muito)

Nós executamos as VMs de win e linux . Em qualquer caso, o armazenamento é local , anexado à VM via virtio com cache = nenhum e io = native .

Como nossos arquivos db são pequenos, estou simulando cargas de trabalho com:

iozone -i 0 -i 8 -s 4m -t X

em que X é 1 (caso simples) ou 25 (base real de usuários) .

Estes são resultados no host :

Children see throughput for 1 mixed workload    = 1768421.25 kB/sec
Parent sees throughput for 1 mixed workload     =  293368.05 kB/sec
Min throughput per process          = 1768421.25 kB/sec 
Max throughput per process          = 1768421.25 kB/sec
Avg throughput per process          = 1768421.25 kB/sec
Min xfer                    =    4096.00 kB

Children see throughput for 25 mixed workload   = 12061204.12 kB/sec
Parent sees throughput for 25 mixed workload    =   39519.61 kB/sec
Min throughput per process          = 1017999.00 kB/sec 
Max throughput per process          = 1237047.00 kB/sec
Avg throughput per process          =  482448.16 kB/sec
Min xfer                    =    2212.00 kB

A VM Linux (Ubuntu 14.04 LTS) mostra:

Children see throughput for 1 mixed workload    = 1901520.62 KB/sec
Parent sees throughput for 1 mixed workload     =  176180.65 KB/sec
Min throughput per process          = 1901520.62 KB/sec 
Max throughput per process          = 1901520.62 KB/sec
Avg throughput per process          = 1901520.62 KB/sec
Min xfer                    =    4096.00 KB

Children see throughput for 25 mixed workload   = 5338608.75 KB/sec
Parent sees throughput for 25 mixed workload    =   15434.67 KB/sec
Min throughput per process          =       0.00 KB/sec 
Max throughput per process          = 2675395.75 KB/sec
Avg throughput per process          =  213544.35 KB/sec
Min xfer                    =       0.00 KB

Resultados do Windows 10 64bit pro VM :

 Children see throughput for 1 mixed workload    =  496220.16 KB/sec
 Parent sees throughput for 1 mixed workload     =  162133.06 KB/sec
 Min throughput per process                      =  496220.16 KB/sec
 Max throughput per process                      =  496220.16 KB/sec
 Avg throughput per process                      =  496220.16 KB/sec
 Min xfer                                        =    4096.00 KB

 Children see throughput for 25 mixed workload   = 1298231.58 KB/sec
 Parent sees throughput for 25 mixed workload    =    7626.09 KB/sec
 Min throughput per process                      =       0.00 KB/sec
 Max throughput per process                      =  285706.31 KB/sec
 Avg throughput per process                      =   51929.26 KB/sec
 Min xfer                                        =       0.00 KB

Eu vejo aqui várias questões:

  • linux perf em threads 1x parece legítimo de acordo com a sobrecarga de virtio , mas acesso simultâneo encadeado parece uma bagunça, especialmente o min a 0 KB / seg é estranho

  • enquanto a VM linux parece estar mal dimensionada, win (e os drivers virtio relacionados) parece uma bagunça total mesmo em 1 thread. Embora esperasse alguma sobrecarga, as pessoas conseguiram melhores resultados aqui

É claro que o win 10 é novo e suportado apenas pelos drivers mais recentes (117), mas o win 8.1 dá resultados parecidos (omitido como este post está indo muito grande).

Estou aberto a qualquer documento ou sugestão que me aponte para a direção certa: meu conhecimento era que cache = nenhum, LVM bruto e ajuste-adm corrigido eram suficientes para obter bons resultados.

Informações atualizadas

kernel (estoque): Linux dl190g9 3.10.0-327.18.2.el7.x86_64 # 1 SMP Qui 12 de maio 11:03:55 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux

qemu-kvm (centos virt sig): 105.el7_2.4 (1.5.3)

libvirtd: 1.2.17

quando digo drivers virtio quero dizer arquivos xml libvirt relatório virtio como barramento.

  • O Win mostra "Dispositivo de disco SCSI virtio da Red Hat"

  • O linux reporta discos como "00: 06.0 Controlador de armazenamento SCSI: Dispositivo de bloqueio Virtio, da Red Hat, Inc"

Atualização 2

  • Eu já disse anteriormente que o desempenho de 1 segmento no Windows era inesperadamente ruim. Ele realmente se encaixa nos resultados postados aqui : uma proporção de 1: 3 entre nativo e Win VM na taxa de transferência.

  • Isso deixa os dois cenários com o problema de dimensionamento incorreto: escalonamento 1: 3 no host vs 1:10 nas VMs

Conforme comentários, espero que em 7.3 melhorias, que, de acordo com os cronogramas de lançamento da Red Hat, devam acontecer na verdade futuro próximo (cerca de 6 meses entre lançamentos).

Obrigado

    
por matteo nunziati 24.05.2016 / 16:45

0 respostas