Benchmarking provedores de hospedagem IO com Bonnie

1

Ok, devido a vários projetos em que estou trabalhando, acesso a servidores dedicados em três provedores de hospedagem.

Como experiência e para fins educacionais, decidi ver se eu poderia comparar o quão bom é o IO com cada um.

Um pouco de pesquisa me leva ao Bonnie ++

Então eu instalei no servidor e executei este comando simples

/usr/sbin/bonnie -d /tmp/foo 

As 3 máquinas em diferentes provedores de hospedagem são todas máquinas dedicadas, uma é um VPS, outras duas estão em alguma plataforma de nuvem, por exemplo, VMWare / Xen usando algum tipo de SAN em cluster para armazenamento

Isso pode ser uma coisa ingênua para fazer, mas aqui estão os resultados que encontrei.

    HOST A

    Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-
                        -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
    Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
    xxxxxxxxxxxxxxxx 1G 45081  88 56244  14 19167   4 20965  40 67110   6  67.2   0
                        ------Sequential Create------ --------Random Create--------
                        -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
                  files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                     16 15264  28 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
    xxxxxxxx,1G,45081,88,56244,14,19167,4,20965,40,67110,6,67.2,0,16,15264,28,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++



    HOST B

    Version 1.03d       ------Sequential Output------ --Sequential Input- --Random-
                        -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
    Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
    xxxxxxxxxxxx     4G 43070  91 64510  15 19092   0 29276  47 39169   0 448.2   0
                        ------Sequential Create------ --------Random Create--------
                        -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
                  files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                     16 24799  52 +++++ +++ +++++ +++ 25443  54 +++++ +++ +++++ +++
    xxxxxxx,4G,43070,91,64510,15,19092,0,29276,47,39169,0,448.2,0,16,24799,52,+++++,+++,+++++,+++,25443,54,+++++,+++,+++++,+++



    HOST C

    Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-
                        -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
    Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
    xxxxxxxxxxxxx 1536M 15598  22 85698  13 258969  20 16194  22 723655  21 +++++ +++
                        ------Sequential Create------ --------Random Create--------
                        -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
                  files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                     16 14142  22 +++++ +++ 18621  22 13544  22 +++++ +++ 17363  21
    xxxxxxxx,1536M,15598,22,85698,13,258969,20,16194,22,723655,21,+++++,+++,16,14142,22,+++++,+++,18621,22,13544,22,+++++,+++,17363,21

Ok, então, primeiro, qual é a melhor maneira de ler os números e há algum problema em realmente comparar esses números?

Isso é de alguma forma uma representação verdadeira da velocidade de IO?

Se não há alguma maneira de testar isso?

Nota: estas 3 máquinas estão usando o Ubuntu ou o Debian (eu presumo que isso realmente não importe)

    
por Derek Organ 20.01.2011 / 21:09

1 resposta

5

Estes sites podem ajudá-lo a interpretar os melhores resultados:

link

link

link

Primeiro, gostaria de abordar algumas inconsistências aqui:

Você fez três tamanhos de teste diferentes e não mostrou nenhum outro parâmetro do sistema, por isso é difícil avaliar seus resultados. (Quais são as CPUs aqui? Que tipo de sub sistema de disco? Por que você rodou três tamanhos diferentes? Por que você usou diferentes versões de bonnie? Quais sistemas de arquivos você estava rodando? Você estava fazendo alguma melhoria na opção de montagem do sistema de arquivos?)

Saber quais especificações são importantes para você depende da necessidade de sua aplicação: O streaming de vídeo precisa de um desempenho de leitura rápida (entrada bonnie). A gravação de vídeo precisa de um desempenho rápido de gravação (saída bonnie). etc.

Aqui estão algumas dicas / truques que eu costumo usar:

  • Reduza a RAM do sistema o mais baixo possível Você pode passar parâmetros do kernel na inicialização para fazer isso. mem = 512MB é o que eu uso normalmente. Isso garante que seus efeitos de cache do sistema operacional local tenham impacto mínimo em seu teste de E / S.

  • Use um tamanho de teste decente para enfatizar IO Acho que 5-20G são bons intervalos de teste. Certifique-se de que os resultados são semelhantes para uma variedade ou intervalos e, em seguida, use o mesmo tamanho para todos os seus testes.

  • Não se preocupe com os testes por caractere.
    Eles não refletem o uso do disco no mundo real e demoram para serem executados. (apenas tudo sobre disco i / o vai acontecer com blocos, não personagem)

  • Se você estiver executando em uma SAN, considere zerar nossa camada de bloco antes de executar os testes. Às vezes, há uma penalidade na primeira gravação ao alocar espaço. Se você desmarcar toda a sua unidade antes de executar os testes, pode ter certeza de que não está atingindo isso. (executar várias iterações de um teste no mesmo nó e comparar os resultados também pode ajudar a identificar se isso é um problema)

  • Sempre publique sua linha de comando para ajudar outras pessoas a duplicarem seus testes.

Dica do EC2: Várias pessoas descobriram o uso de faixas de software RAID0 no AWS EBS para melhorar o desempenho de IO.

    
por 20.01.2011 / 23:02