Como obter mais desempenho de I / O do Citrix XenServer?

2

Eu tenho um Citrix XenServer 6.1 instalado em um servidor HP (1x Intel Xeon E5630 @ 2.53GHz (4 núcleos, 8 threads, RAM: 752MB para dom0 e 55286MB para os convidados). O servidor tem 2 discos espelhados scsi e é usado para dev / testing.

O host executa 5 convidados que eu liguei ou desliguei durante os testes. A maioria dos testes perf deu maus resultados. Mas eu gostaria de ajustar o Xen: por exemplo, um "dd if = / dev / zero ..." dá 130MB / s no host, mas apenas 75MB / s em um convidado solitário.

Se eu executar um "dd if = / dev / urandom" em um convidado, a CPU está saturada e recebo 7MB / s.

Via 'tune-vcpus', consegui dar 8 vCPUs ao dom0 e obtive menos perfs. O padrão é de 4 vCPUs e eu gostaria de dar ao dom0 apenas 1 vCPU, mas não funciona. Aqui está o que eu tentei:

  • Editar "/ etc / sysconfig / tunes-vcpus" > NR_DOMAIN0_VCPUS = 1 e MAX_NR_DOMAIN0_VCPUS = 1
  • /etc/init.d/tune-vcpus start min
  • reinicialize o host

Eu também tentei "/ opt / xensource / libexec / xen-cmdline-set-dom0 blkbk.reqs = 256" para obter mais desempenho do armazenamento, isso não muda nada.

E eu habilitei o Qos nos VBDs e dei a prioridade mais alta àquele em que faço meus testes.

Depois de tudo isso, não ganho nenhum ganho em desempenho de I / O. Existe mais alguma coisa para fazer?

Obrigado,

Greg.

    
por Icu 24.04.2013 / 09:46

3 respostas

1

Você pode tentar encontrar um bom valor para max_sectors_kb. Por padrão, ele é definido como 512 ou 1024. Por exemplo, você pode configurá-lo para 128 e testar novamente (dom0 e também domU).

echo 128 > /sys/block/[your blockdevice]/queue/max_sectors_kb 

Esta configuração não é persistente. Coloque uma entrada em /etc/rc.local para configurá-lo na inicialização.

Por favor, poste seus resultados.

    
por 24.04.2013 / 10:21
1

Parece que você está se referindo especificamente ao throughput de armazenamento de um convidado. Essa é apenas uma entre muitas métricas de desempenho. A taxa de transferência de E / S é uma função da largura de banda e da latência . Isso significa que, para obter um alto throughput, você precisa minimizar a latência e maximizar a largura de banda (ou seja, ter muitos dados voando a qualquer momento e ter as solicitações para que os dados sejam exibidos o mais rápido possível).

Quando você está em um ambiente virtualizado, inevitavelmente terá adicionado latência para atender às suas solicitações. Isso significa que será muito difícil para um domU corresponder ao throughput que você vê no dom0. Espero que esse impacto seja minimizado, permitindo que mais dados voem a qualquer momento (seja tendo muitas VMs fazendo E / S ou tendo solicitações grandes o suficiente).

Dado seu hardware e as taxas que você está se referindo (~ 150 MB / s), eu ficaria muito surpreso se você não puder ver uma taxa de transferência semelhante de um convidado, dado que seu dd tem os parâmetros corretos.

Dê isto a partir do seu "dom0" e do seu "domU" (o comando abaixo irá escrever 500MB de dados para dest , por isso tome cuidado para não sobrescrever dados importantes):

dd if=/dev/zero of=dest bs=1M count=500 oflag=direct

O oflag=direct garante que essas gravações ignorem os caches de buffer das VMs (dom0 e domU).

Além disso, consulte o documento a seguir para entender melhor como o XenServer 6.1.0 implementa o armazenamento virtualizado e qualquer uma de suas implicações de desempenho (incluindo o conselho de ajuste para o número de vCPUs e pinagem):

link

Atenciosamente,

Felipe

    
por 26.07.2013 / 19:59
1

Uma coisa que você pode tentar adicionar é mudar o programador io na vm para o prazo final e, na verdade, desabilitar o io mescla lá. Isso deve reduzir a latência do io em geral e pode funcionar melhor com a estrutura do anel de E / S do Xen.

echo    1       >       /sys/block/$dev/queue/nomerges 

Meu raciocínio e experiência é que o código de bloco do Linux não é muito inteligente, mas pensa que sim. Portanto, ele tentará mesclar todas as solicitações de E / S em um antes de passá-las ao driver de disco. No caso de Xen, a próxima ação será separá-los para que eles se encaixem no buffer de anel. Então eles estão no dom0 e o driver de disco está em muito, muito melhor posição para descobrir o que precisa ser mesclado, já que ele não precisa ter um único conhecimento de VMs solitário para o alinhamento.

Se isso não ajudar, desfaça a alteração, mas é onde eu ficaria quando todo o resto já tivesse sido tentado.

Talvez seu servidor tenha sido abandonado há muito tempo, mas isso ainda ajudará outra pessoa.

    
por 21.03.2016 / 11:00