Testes de desempenho para sistemas de alta carga e distribuídos
O Midair corre sempre a mesma carga na mesma bancada. Cada execução regista as suas medições no registo e fica como um registo separado.
Um número de desempenho sozinho diz pouco. Ganha sentido ao lado do mesmo número do build anterior, medido da mesma forma.
- load
- wrk · 4 threads · 256 connections · 60 s
- requests
- 41 230 req/s
- latency
- p50 1.9 ms · p99 9.1 ms
- energy
- 408 J over 60 s · avg 6.8 W · peak 9.4 W
- bench
- lab-2 · 3 hosts · lock 9c41e07
- record
- run 312 · kept with its configuration
O que são testes de desempenho.Números com uma carga conhecida.
Os testes de desempenho medem como um sistema se comporta com carga: o débito, a latência, os pedidos que serve por segundo e a energia que gasta.
Os testes de carga verificam a carga que o sistema deve suportar. Os testes de stress vão além desse ponto para ver onde e como o sistema falha.
Em dispositivos e redes, a bancada conta tanto como o código. O mesmo build dá números diferentes noutra máquina, noutra ligação ou noutra fonte de alimentação.
O que uma execução mede.Escolha um tipo de medição.
Débito
Bits ou pacotes por segundo através de uma ligação, de um dispositivo ou de um serviço. O iperf e o iperf3 têm uma interface comum, por isso o teste pode trocar de ferramenta sem ser reescrito.
- Ferramentas
iperf, iperf3, netperf, TRex- No registo da execução
throughput mean 912 Mbit/s min 884 max 931 iperf3 · TCP · 8 streams · 60 s · Exemplo
Latência
Tempo de ida e volta e latência dos pedidos, registados como mediana e percentis. A cauda costuma mudar antes da mediana.
- Ferramentas
wrk, ping, netperf, sfnt-pingpong- No registo da execução
rtt median 0.41 ms p99 1.90 ms stdev 0.22 ms sfnt-pingpong · UDP · 64 bytes · Exemplo
Pedidos
Pedidos e ligações por segundo contra servidores HTTP, Redis e memcached.
- Ferramentas
wrk, redis-benchmark, memtier, memaslap- No registo da execução
rps 41 230 req/s cps 2 950 conn/s wrk · 256 connections · 60 s · Exemplo
Energia
Energia na janela do teste, em joules e miliwatts-hora, com a potência média e de pico. Funciona com instrumentos de bancada SCPI e com os perfiladores PPK2, Joulescope, Otii e Monsoon.
- Ferramentas
tsf-power- No registo da execução
energy 408 J (113.3 mWh) over 60 s power avg 6.8 W peak 9.4 W tsf-power · Joulescope · Exemplo
O teste escreve cada valor no registo do Test Environment como uma medição, com a unidade e a forma de agregação: mínimo, média, mediana, percentil ou a série completa.
Comparar dois builds.A mesma carga, a mesma bancada, uma alteração.
Um gráfico de exemplo feito a partir de duas execuções registadas do mesmo teste. Mova o cursor ou aponte para o gráfico para ler cada passo de carga.
- Ligações
- 256
- build 2.4.0
- 4,8 ms
- build 2.4.1
- 9,1 ms
- Diferença
- +90%
O Midair não tem um ecrã para comparar duas execuções. Cada execução é um registo separado, com as medições no seu próprio registo. Se publicar as execuções no Bublik, a vista de histórico mostra uma medição ao longo de várias execuções.
Ver os números
| Ligações | build 2.4.0, ms | build 2.4.1, ms | Diferença |
|---|---|---|---|
| 32 | 2,1 | 2,0 | -5% |
| 64 | 2,2 | 2,1 | -5% |
| 96 | 2,4 | 2,3 | -4% |
| 128 | 2,6 | 2,5 | -4% |
| 160 | 2,9 | 2,9 | 0% |
| 192 | 3,3 | 3,6 | +9% |
| 224 | 3,9 | 5,4 | +38% |
| 256 | 4,8 | 9,1 | +90% |
| 288 | 6,2 | 14,8 | +139% |
| 320 | 8,4 | 22,6 | +169% |
O que torna duas execuções comparáveis.Cinco coisas que cada registo fixa.
O código
O builder.conf.lock guarda o commit exato da suite e de cada biblioteca que ela compila.
A bancada
Os ficheiros env e run.conf de cada bancada indicam as máquinas, as interfaces e os instrumentos que a execução usa.
O resultado esperado
O trc.xml guarda o veredicto esperado de cada teste. Um teste falha quando a medição passa o limite que ele verifica.
Várias máquinas, uma execução
O Test Environment coordena geradores de carga e recetores em várias máquinas na mesma execução, com um único registo.
Um registo novo de cada vez
Cada arranque cria um registo novo com a sua configuração. O Midair nunca escreve por cima de uma execução anterior.
Leituras.Do nosso trabalho de engenharia.
Perguntas.Respostas curtas.
O que são testes de desempenho?
Os testes de desempenho medem como um sistema se comporta com carga: o débito, a latência e os recursos que usa à medida que a carga aumenta.
Qual é a diferença entre testes de carga e testes de stress?
Os testes de carga verificam o desempenho com o tráfego que o sistema deve suportar. Os testes de stress vão além desse ponto para ver onde o sistema falha e como se comporta enquanto falha.
Que ferramentas de carga um teste pode controlar?
O Test Environment tem wrappers prontos para iperf, iperf3, netperf, TRex, wrk, redis-benchmark, memtier, memaslap, sfnt-pingpong e stress. O teste arranca-os nas máquinas dos agentes e lê os resultados.
O Midair compara dois builds?
Não num único ecrã. Corre a mesma suite nos dois builds, e cada execução guarda as medições no seu próprio registo. Se publicar as execuções no Bublik, a vista de histórico mostra uma medição ao longo de várias execuções.
Podemos medir o consumo de energia?
Sim. O tsf-power mede a energia que um dispositivo gasta na janela do teste, com instrumentos de bancada SCPI ou perfiladores USB como PPK2, Joulescope, Otii e Monsoon.
Encaixa na nossa CI?
Sim. As execuções começam a partir da sua CI, por exemplo com o plugin para Jenkins. Um assistente de IA pode lançar execuções e ler falhas através de MCP.
Comece por uma carga numa bancada.Depois meça cada build da mesma forma.
Compare os planos na página de preços. Os preços são mensais, em euros.
Iniciar o seu piloto