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.
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"
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