SSD + MDRAID + LVM + KVM resulta em desempenho inferior ao esperado

1

Usamos o kvm para virtualização, as imagens do disco são armazenadas como volumes lógicos. Os volumes lógicos são armazenados em um conjunto de matrizes RAID1 (mdadm) de software compostas de SSDs Intel DCS3500 (cada matriz é um volume físico no grupo de volumes).

Se eu criar um volume lógico dentro desse grupo de volumes e usar fio para determinar a IOPS, obtenho cerca de 40 mil IOPS para blocos de gravação aleatória de 4KB. Ótimo. iostat mostra ambos os SSDs utilizados para cerca de 100%. Se eu criar uma máquina virtual que use o mesmo volume lógico para armazenamento e executar o mesmo comando fio, recebo inicialmente 20K IOPS (ótimo), mas depois de 30s ou mais ele cai para 7-8K. O estranho é que o iostat agora mostra um SSD usado em 100%, enquanto o outro está apenas em 45%.

Aqui estão os gráficos ao longo do tempo (feitos por iostat -x 2 no hypervisor)

Como você pode ver, no início o gargalo parece ser sdn, mas o sdm começa a fazer algo que arrasta o array e agora o sdn está apenas meio ocupado.

No entanto, por alguma razão, isso só acontece se o teste for executado dentro da VM. Se eu executar o hipervisor, tudo está OK e o desempenho não cai por pelo menos 2 minutos. A escolha do driver de disco virtual, ide ou virtio não afeta o resultado.

Alguém já encontrou um problema desses? Qual é a causa subjacente? Como faço para aumentar o desempenho?

EDIT: Mais informações, conforme solicitado (por qualquer motivo eu não pensei nisso em primeiro lugar)

OS: CentOS 6.4
Kernel: 2.6.32-358.el6.x86_64

mdadm --detail / dev / md104

/dev/md104:
        Version : 1.2
  Creation Time : Mon Feb  3 20:02:02 2014
     Raid Level : raid1
     Array Size : 468720320 (447.01 GiB 479.97 GB)
  Used Dev Size : 468720320 (447.01 GiB 479.97 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Wed Feb 26 14:50:36 2014
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : xxx:104  (local to host xxx)
           UUID : aaaaaaaa:bbbbbbbb:cccccccc:dddddddd
         Events : 28

    Number   Major   Minor   RaidDevice State
       0       8      192        0      active sync   /dev/sdm
       1       8      208        1      active sync   /dev/sdn

Eu apaguei o uid e o nome do host.

    
por Pentium100 26.02.2014 / 10:18

0 respostas