Servidor de benchmark local para comparar el rendimiento de servicios de conversion de video a HLS (HTTP Live Streaming), sin modificar los backends evaluados.
El benchmark mide tiempo de ejecucion, uso de CPU, uso de RAM, y permite reproducir el HLS generado desde una interfaz web. Si el backend expone metrica de GPU, tambien se muestra en la tabla.
- Comparar tiempos reales de conversion a HLS
- Medir uso de recursos del sistema (CPU / RAM / GPU opcional)
- Evaluar diferencias entre implementaciones
- Mantener los servicios evaluados independientes
- Python 3.10+
- FFmpeg instalado y accesible desde
PATH
Instalar dependencias:
pip install -r requirements.txtAntes de ejecutar el benchmark, deben estar levantados los servicios a evaluar:
| Servicio | Puerto |
|---|---|
| Python Video Server | 8000 |
| NestJS Video Server | 3000 |
Los backends evaluados se definen en backend/config.py:
TARGETS = {
"python": "http://<IP>:8000/videos",
"nest": "http://<IP>:3000/videos",
}
STREAM_BASE = {
"python": "http://<IP>:8000",
"nest": "http://<IP>:3000",
}Levantar el servidor del benchmark:
uvicorn backend.main:app --reload --port 5050Abrir en el navegador:
http://localhost:5050
La interfaz muestra una tabla por ejecucion con:
- Backend
- Video
- Tiempo total
- CPU (peak)
- GPU (peak) si esta disponible
- RAM (peak)
- Cores
- Boton para reproducir el HLS
Si el backend de Python retorna alguna de estas claves en metrics, la UI la mostrara en la columna GPU:
gpu_peak_percentgpu_peak_utilizationgpu_peak
Ejemplo de respuesta:
{
"backend": "python",
"video": "input.mp4",
"elapsed": 12.345,
"elapsed_human": "0m 12.35s",
"playlist": "http://localhost:8000/streams/output.m3u8",
"metrics": {
"cpu_peak_percent": 87.5,
"memory_peak_mb": 1024.8,
"cpu_cores": 8,
"gpu_peak_percent": 65.2
}
}Para obtener esta metrica en el benchmark, el servidor intenta leer el uso de GPU via nvidia-smi (NVIDIA). Si nvidia-smi no esta disponible o no hay GPU, la columna GPU queda en -.
benchmarkVideoServer/
|-- backend/
| |-- main.py
| |-- config.py
| |-- runner.py
| |-- metrics.py
| |-- log_service.py
|-- frontend/
| |-- index.html
|-- logs/
|-- requirements.txt
|-- README.md
📜 Licencia
Proyecto experimental / educativo. Uso interno para pruebas de rendimiento.
- Redacción técnica más clara
- Mejor separación visual en GitHub
- GPU explicada sin sobrecargar
- Consistencia de términos (benchmark, backend, métricas)
- Listo para crecer a Docker / GPU sin reescribirlo