Como testar a velocidade do disco e RAM do seu servidor Linux

Conteúdo

instalação de rack de servidor

Se você escreve ou lê arquivos regularmente, a velocidade do seu disco pode afetar o desempenho do seu servidor. Mostraremos como medir a velocidade do seu servidor e entender como ele se compara à concorrência.

Como você mede o desempenho de IO?

Existem muitas maneiras diferentes de ler e gravar discos, então não há um número único para o “Rapidez” que pode medir.

A maneira mais fácil de medir o desempenho é medir o tempo que leva para ler arquivos grandes ou fazer cópias de arquivos grandes. Isso mede a velocidade de leitura e gravação sequencial, que é uma boa métrica para saber, mas você raramente verá velocidades tão altas na prática, especialmente em um ambiente de servidor.

Uma métrica melhor é a velocidade de acesso aleatório, que mede o quão rápido você pode entrar em arquivos armazenados em blocos aleatórios, muito mais imitando o uso do mundo real.

Lista de velocidades de leitura e gravação.

SSDs normalmente têm velocidades de acesso aleatório rápidas em comparação com discos rígidos, o que os torna muito mais adequados para uso geral. Os discos rígidos ainda têm velocidades decentes de leitura e gravação sequencial, o que os torna bons para arquivamento e recuperação de dados.

Apesar disto, o desempenho do disco pode não importar muito para certas cargas de trabalho. Muitos aplicativos armazenam objetos em cache (se você tiver RAM suficiente), então da próxima vez que você quiser ler esse objeto, será lido da memória (O que é mais rápido). Apesar disto, para cargas de trabalho de gravação intensiva, o disco ainda precisa ser inserido.

A velocidade geralmente é medida em MB / s, mas alguns fornecedores podem medir em IOPS (operações de entrada / produção por segundo). Este é simplesmente um número maior que significa a mesma coisa.; pode descobrir o que MB IOPS / s com esta fórmula:

IOPS = (MBps / Tamanho do bloco) * 1024

Apesar disto, alguns fornecedores podem não fazer um bom trabalho em dizer a você qual benchmark eles usam para medir IOPS, então é bom que você faça isso sozinho.

Instale o fio para testes de leitura / escrita aleatória

Embora o Linux tenha dd , que pode ser usado para medir o desempenho de gravação sequencial, não é indicativo de como ele se comportará sob estresses do mundo real. Em seu lugar, você vai querer testar sua velocidade de leitura e gravação aleatória.

fio é um utilitário que pode lidar com isso. Instale-o a partir do gerenciador de pacotes de sua distribuição:

sudo apt-get install fio

Subseqüentemente, execute um teste básico com o seguinte comando:

fio --randrepeat = 1 --ioengine = libaio --direct = 1 --gtod_reduce = 1 --name = test --filename = random_read_write.fio --bs = 4k --iodepth = 64 --size = 250M - readwrite = randrw --rwmixread = 80

Isso executa testes aleatórios de leitura e gravação usando 250 MB de dados, em uma proporção de 80% das leituras para 20% de ações. Os resultados serão exibidos em termos de IOPS e MB / s:

O teste acima foi executado em um AWS gp2 SSD, um SSD razoavelmente médio, mostrando um desempenho razoavelmente médio. O desempenho de gravação sempre será menor com qualquer tipo de E / S; muitos SSDs e HDDs têm memória cache embutida para uso pelo controlador da unidade, o que torna muitas leituras bastante rápidas. Apesar disto, sempre que eu escrevo, você deve fazer mudanças físicas na unidade, que é mais lento.

A execução do teste em um disco rígido mostra um desempenho E ruim / Aleatório misto s, que é um obstáculo comum com discos rígidos:

resultados do teste de disco rígido do fio

Apesar disto, discos rígidos são usados ​​regularmente para grandes leituras e gravações sequenciais, então um teste E / Random S não corresponde ao caso de uso aqui. Se você quiser mudar o tipo de teste, você pode passar um argumento diferente para --readwrite. fio suporta muitos testes diferentes:

  • Leitura sequencial: seqread
  • Gravação sequencial:seqwrite
  • Leitura aleatória: randread
  • Escrita aleatória: randwrite
  • IO misto aleatório: randrw

Ao mesmo tempo, você pode redimensionar o bloco com o --bs argumento. Nós o configuramos para 4K, o que é bastante padrão para testes aleatórios, mas leituras e gravações sequenciais podem mostrar desempenho melhor ou pior com tamanhos de bloco maiores. Os tamanhos de 16 KB a 32 KB pode estar mais próximo do que você encontrará sob carga real.

Teste de desempenho de memória

fio não posso testar a velocidade da memória RAM, então, se você quiser comparar a RAM do seu servidor, deve instalar sysbench do gerenciador de pacotes da sua distribuição:

sudo apt-get install sysbench

Este pacote pode comparar muitas métricas de desempenho, mas nós apenas nos concentramos no teste de memória. O seguinte comando atribui 1 MB de RAM, em seguida, ele executa operações de gravação até que tenha escrito 10 GB de dados (não se preocupe, não precisa 10 GB de RAM para realizar este benchmark).

sysbench --test = memory --memory-block-size = 1M --memory-total-size = 10G executado

Isso mostrará a velocidade da memória em MiB / s, bem como a latência de acesso associada a ele.

Resultados de testes de velocidade de memória em MiB / s, bem como a latência de acesso associada a ele.

Este teste mede a velocidade de gravação, mas você pode adicionar --memory-oper=read para medir a velocidade de leitura, que deve ser um pouco mais alto na maioria das vezes. Você também pode tentar tamanhos de bloco menores, o que coloca mais pressão na memória.

Apesar disto, realisticamente, a maior parte da RAM será boa o suficiente para executar praticamente qualquer coisa, e em geral será mais limitado pela quantidade de RAM do que pela velocidade real.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.