Bare Metal Overview
A maioria das ferramentas de rastreamento de benchmarks só permite executar benchmarks a partir de um único ambiente. Ou você executa seus benchmarks localmente ou os executa no CI. Mesmo que suportem tanto a execução local quanto no CI, você não consegue comparar os resultados entre os dois.
Bencher Bare Metal permite que você tenha o melhor dos dois mundos. Você pode executar benchmarks a partir da sua máquina local e tê-los executados em hardware dedicado, e também pode executar benchmarks a partir do CI e tê-los executados no exato mesmo hardware dedicado. Isso permite que você tenha um ambiente de execução de benchmarks consistente, independentemente de onde os execute.
Bencher Bare Metal é executado em hardware bare metal para eliminar a variabilidade e fornecer resultados de benchmarks mais precisos e confiáveis.
Runner
Um Runner é um executor remoto de benchmarks que é executado em hardware dedicado, bare metal. O Runner consulta o servidor da API do Bencher em busca de Jobs pendentes com base nos seus Specs associados. Uma vez que um Job é reivindicado, o Runner baixa a Image especificada para o Job, descompacta a Image, executa o comando de benchmark e envia os resultados de volta ao servidor da API do Bencher. Apenas um Job é executado por vez para garantir que os benchmarks não sejam afetados por outras cargas de trabalho.
| Runner | Plataforma | Escopo | Gerenciado por | Sandbox | Acesso à rede | Plano |
|---|---|---|---|---|---|---|
| Compartilhado | Bencher Cloud | Servidor | Bencher | Obrigatório | Não | Free, Team, Enterprise |
| Dedicado | Bencher Cloud | Organização | Bencher | Opcional | Não | Enterprise |
| Personalizado | Bencher Cloud | Organização | Usuário | Opcional | Opcional | Enterprise |
| Self-Hosted Servidor | Bencher Self-Hosted | Servidor | Usuário | Opcional | Opcional | Free, Team, Enterprise |
| Self-Hosted Organização | Bencher Self-Hosted | Organização | Usuário | Opcional | Opcional | Enterprise |
Spec
Um Spec é uma especificação de hardware que descreve os recursos disponíveis para um Runner:
- Sistema Operacional (SO)
- Linux
- macOS
- Windows
- Arquitetura de CPU
- x86_64
- ARM64
- Sandbox
- Firecracker microVM
- Sem Sandbox
- Quantidade de CPUs
- Tamanho da memória (RAM)
- Tamanho do disco
- Acesso à rede
Os Specs têm escopo de servidor ou de organização, de modo que o mesmo Spec pode ser compartilhado entre múltiplos Testbeds no mesmo servidor ou dentro da mesma organização, respectivamente.
A ordem de precedência para selecionar o Spec ao usar bencher run é a seguinte:
- A opção
--spec - O Spec atribuído ao Testbed
- O Spec padrão com escopo de organização
- O Spec padrão com escopo de servidor
O Spec selecionado será então atribuído ao Testbed atual.
Sandbox
Um Sandbox é um mecanismo de isolamento que permite a multi-tenância segura em um Runner.
Bencher Bare Metal utiliza microVMs Firecracker como a implementação padrão de Sandbox.
Executar sem um Sandbox requer um Runner Dedicado ou Personalizado no Bencher Cloud (entre em contato com o suporte Bencher Plus para mais informações) ou Bencher Self-Hosted.
Quando um Runner é configurado para usar um Sandbox, cada Job é executado dentro desse Sandbox.
Consulte a documentação do runner para uma visão geral completa.
Job
Um Job rastreia o ciclo de vida de uma solicitação de execução remota de benchmark.
Um timeout personalizado pode ser solicitado por Job com a opção --job-timeout.
No entanto, os seguintes timeouts de Job são sempre aplicados com os limites de concorrência fornecidos:
| Plano | Timeout do Job | Concorrência de Jobs |
|---|---|---|
| Não reivindicado | 1 minuto | 1 por IP de origem |
| Free | 5 minutos | 1 por Organização |
| Team | Ilimitado (padrão: 60 minutos) | Ilimitada |
| Enterprise | Ilimitado (padrão: 60 minutos) | Ilimitada |
Consulte a documentação do Job para uma visão geral completa.
Image
Uma Image é uma imagem de contêiner OCI que contém o seu código de benchmark e suas dependências. Quando um Runner executa um Job, ele baixa a Image, descompacta a Image e executa o comando de benchmark especificado no Job. Consulte a documentação da Image para saber como criar uma Image para o seu próprio projeto.