Benchmarking, técnica para medir o desempenho de algum objeto computacional através de diversos testes, e testes de estresse são algumas vezes necessárias para verificar o desempenho do sistema e remover “gargalos” causados pelo hardware. Em um sistema Linux, isso pode ser feito facilmente com algumas ferramentas básicas de linha de comando.
Por quê realizar testes de desempenho?
Benchmarking (informática) e testes de estresse são amplamente usados em ambientes onde a precisão computacional é obrigatória. Ter noção de quanto um determinado hardware, executado sobre determinado sistema, suporta é importante para decidir quais ferramentas usar ou quanto você precisa melhorar, computacionalmente falando, para atingir determinado objetivo.
No cotidiano, é interessante para quem possui um computador disponível para usar diversos sistemas computacionais e comparar o desempenho deles no mesmo hardware (objeto de pesquisa). Ou, apenas, verificar quanto seu sistema, computador e/ou dispositivo de hardware (HD, CPU, GPU ou placa de rede) são capazes de “aguentar” 😉
Saiba como verificar o desempenho da sua distribuição Linux usando o Phoronix Test Suite
Saiba como testar o desempenho dos principais serviços de rede usando o JMeter
Testes simples de desempenho de hardware em sistemas Linux
Concentrando-se em ferramentas de linha de comando iremos testar os seguintes itens listados:
– 1. CPU;
– 2. Teste de leitura/escrita do HD;
– 3. Performance de rede e velocidade de tráfego;
– 4. Testes de velocidade de escritas na RAM;
1. CPU Benchmark
Basicamente, a CPU (unidade central de processamento) é o processador do computador 😉 Então, para saber quanto ele “suporta” é preciso realizar uma carga sobre ela para ver em quanto tempo ela responde.
1.1 Teste de cálculo do número primo dentro de um determinado intervalo
Para realizar esse teste, que calculará todos os números primos dentro do intervalo de 0 a 9999 (altere esse valor como desejar), recomendo usar a ferramenta sysbench – suíte de benchmark que permite obter rapidamente uma impressão sobre o desempenho do sistema.
Instale-a normalmente pelo repositório da sua distro Linux. Depois, execute:
sysbench --test=cpu --num-threads=4 --cpu-max-prime=9999 run
Running the test with following options: Number of threads: 4 Initializing random number generator from current time Prime numbers limit: 9999 Initializing worker threads... Threads started! General statistics: total time: 2.4451s total number of events: 10000 total time taken by event execution: 9.7724s response time: min: 0.96ms avg: 0.98ms max: 13.74ms approx. 95 percentile: 0.98ms Threads fairness: events (avg/stddev): 2500.0000/5.79 execution time (avg/stddev): 2.4431/0.00
1.2 Teste de desempenho do cálculo de inteiros
Isto retorna o tempo necessário para encontrar números inteiros entre 0 a 9999999:
real 0m24,838s user 0m24,592s sys 0m0,020s
1.3 Teste de stress de CPU (Multi threaded)
stress --cpu 4 --timeout 300s
Este comando é para colocar uma carga Multi threaded sobre a CPU durante 5 minutos (300s). De acordo com seu computador, altere o parâmetro –cpu. Por exemplo, se você tiver um processador de 8 núcleos, use –cpu 8 😉
2. Teste de leitura/escrita do HD
O desempenho de leitura/escrita do disco rígido (HD) tem um grande impacto no desempenho do sistema Linux e na experiência do usuário. Simplesmente, quanto mais rápido for o HD melhor desempenho terá o sistema.
2.1 Velocidade de escrita usando o dd
5 ferramentas para monitorar as atividades do disco em tempo real no Linux
Alguns exemplos de que o comando dd pode ser considerado umas das ferramentas mais versáteis do Linux
dd bs=16k count=102400 oflag=direct if=/dev/zero of=arquivo_teste
102400+0 registros de entrada 102400+0 registros de saída 1677721600 bytes (1,7 GB, 1,6 GiB) copiados, 12,1825 s, 138 MB/s
O comando acima criou um arquivo de 1,6 GB contendo apenas zeros, no diretório atual e deu uma visão geral de velocidade de gravação no HD.
2.2 Velocidade de leitura usando o dd
dd bs=16K count=102400 iflag=direct if=arquivo_teste of=/dev/null
102400+0 registros de entrada 102400+0 registros de saída 1677721600 bytes (1,7 GB, 1,6 GiB) copiados, 12,0649 s, 139 MB/s
Por fim, você poderá remover o arquivo arquivo_teste 😉
2.3 Verificar o desempenho do HD
A ferramenta hdparm está presente nativamente na maioria das distros Linux e pode ser usado, dentre outras coisas, para determinar as taxas de transferência de dados que o seu disco consegue alcançar:
sudo hdparm -t /dev/sda
Timing buffered disk reads: 488 MB in 3.01 seconds = 162.08 MB/sec
Este teste retorna a velocidade de leitura do disco temporizado e este resultado pode ser assumido como a velocidade mais rápida de leitura do disco.
3. Performance de rede e velocidade de tráfego
A medição do throughput (“taxa de transferência”) de uma interface de rede é muito comum ser feito em dispositivos de rede, como computadores, roteadores, switches e outros. Assim, para saber quanto de tráfego a placa de rede pode suportar é preciso realizar alguns testes:
10 Ferramentas para monitorar a largura de banda no Linux
speedtest-cli: Teste a velocidade da sua internet pela linha de comando
3.1 Medição da taxa de transferência usando o iperf
Neste teste, para melhor realizar o teste, você precisará ter duas máquinas – um para ser o “servidor” ou o “cliente”; e vice-versa. Caso contrário, inicie o modo servidor e cliente na mesma máquina. Agora, instale o iperf conforme sua distribuição Linux e execute:
+ Servidor
+ Cliente
Esse ambiente , permite verificar a capacidade transferência das placas de rede de ambas as máquinas (servidor e cliente).
Testes de velocidade de escritas na RAM
Geralmente, a velocidade da RAM indica a velocidade de clock dela. Então, para verificar a velocidade com qual a RAM é capaz de escrever informações, vamos usar o tmpfs (Temporary File System) – uma área na memória RAM que simula uma partição do disco. Assim, fazendo um teste de leitura e escrita de velocidade em uma pasta tmpfs montada dará uma ideia, aproximada, sobre a velocidade da RAM:
+ Montar partição tmpfs
+ Realizar os testes na partição montada na RAM usando o dd
dd if=/dev/zero of=arquivo_tmp bs=1M count=512
512+0 registros de entrada 512+0 registros de saída 536870912 bytes (537 MB, 512 MiB) copiados, 0,207328 s, 2,6 GB/s
Foi criado um arquivo de 521 MB na memória RAM. Conforme resultado, a velocidade de escrita foi de 2,6 GB/s num módulo de memória RAM de 1600 MHz DDR3 16GB 😉
512+0 registros de entrada 512+0 registros de saída 536870912 bytes (537 MB, 512 MiB) copiados, 0,162975 s, 3,3 GB/s
Por fim, o arquivo criado foi lido em memória RAM com velocidade de leitura de foi de 3,3 GB/s 😉
Via | FixMyNix