Bare Metal Overview
La mayoría de las herramientas de seguimiento de benchmarks solo te permiten ejecutar benchmarks desde un único entorno. O ejecutas tus benchmarks localmente o los ejecutas en CI. Incluso si admiten tanto la ejecución local como en CI, no puedes comparar los resultados entre ambos.
Bencher Bare Metal te permite tener lo mejor de ambos mundos. Puedes ejecutar benchmarks desde tu máquina local y que se ejecuten en hardware dedicado, y también puedes ejecutar benchmarks desde CI y que se ejecuten en el exacto mismo hardware dedicado. Esto te permite tener un entorno de ejecución de benchmarks consistente sin importar desde dónde los ejecutes.
Bencher Bare Metal se ejecuta en hardware bare metal para eliminar la variabilidad y proporcionar resultados de benchmarks más precisos y confiables.
Runner
Un Runner es un ejecutor remoto de benchmarks que se ejecuta en hardware dedicado, bare metal. El Runner consulta al servidor de la API de Bencher en busca de Jobs pendientes según sus Specs asociados. Una vez que se reclama un Job, el Runner descarga la Image especificada para el Job, desempaqueta la Image, ejecuta el comando de benchmark y envía los resultados de vuelta al servidor de la API de Bencher. Solo se ejecuta un Job a la vez para asegurar que los benchmarks no se vean afectados por otras cargas de trabajo.
| Runner | Plataforma | Alcance | Gestionado por | Sandbox | Acceso a red | Nivel |
|---|---|---|---|---|---|---|
| Compartido | Bencher Cloud | Servidor | Bencher | Requerido | No | Free, Team, Enterprise |
| Dedicado | Bencher Cloud | Organización | Bencher | Opcional | No | Enterprise |
| Personalizado | Bencher Cloud | Organización | Usuario | Opcional | Opcional | Enterprise |
| Self-Hosted Servidor | Bencher Self-Hosted | Servidor | Usuario | Opcional | Opcional | Free, Team, Enterprise |
| Self-Hosted Organización | Bencher Self-Hosted | Organización | Usuario | Opcional | Opcional | Enterprise |
Spec
Un Spec es una especificación de hardware que describe los recursos disponibles para un Runner:
- Sistema Operativo (SO)
- Linux
- macOS
- Windows
- Arquitectura de CPU
- x86_64
- ARM64
- Sandbox
- Firecracker microVM
- Sin Sandbox
- Cantidad de CPUs
- Tamaño de memoria (RAM)
- Tamaño de disco
- Acceso a red
Los Specs tienen alcance de servidor o de organización, por lo que el mismo Spec puede compartirse entre múltiples Testbeds en el mismo servidor o dentro de la misma organización respectivamente.
El orden de precedencia para seleccionar el Spec al usar bencher run es el siguiente:
- La opción
--spec - El Spec asignado al Testbed
- El Spec predeterminado con alcance de organización
- El Spec predeterminado con alcance de servidor
El Spec seleccionado se asignará entonces al Testbed actual.
Sandbox
Un Sandbox es un mecanismo de aislamiento que permite la multi-tenencia segura en un Runner.
Bencher Bare Metal utiliza microVMs de Firecracker como la implementación predeterminada de Sandbox.
Ejecutar sin un Sandbox requiere un Runner Dedicado o Personalizado en Bencher Cloud (contacta al soporte de Bencher Plus para más información) o Bencher Self-Hosted.
Cuando un Runner está configurado para usar un Sandbox, cada Job se ejecuta dentro de ese Sandbox.
Consulta la documentación del runner para una descripción completa.
Job
Un Job rastrea el ciclo de vida de una solicitud de ejecución remota de benchmark.
Se puede solicitar un tiempo de espera personalizado por Job con la opción --job-timeout.
Sin embargo, los siguientes tiempos de espera de Job siempre se aplican con los límites de concurrencia proporcionados:
| Nivel | Tiempo de espera del Job | Concurrencia de Jobs |
|---|---|---|
| Sin reclamar | 1 minuto | 1 por IP de origen |
| Free | 5 minutos | 1 por Organización |
| Team | Ilimitado (predeterminado: 60 minutos) | Ilimitada |
| Enterprise | Ilimitado (predeterminado: 60 minutos) | Ilimitada |
Consulta la documentación del Job para una descripción completa.
Image
Una Image es una imagen de contenedor OCI que contiene tu código de benchmark y sus dependencias. Cuando un Runner ejecuta un Job, descarga la Image, desempaqueta la Image y ejecuta el comando de benchmark especificado en el Job. Consulta la documentación de Image para saber cómo crear una Image para tu propio proyecto.