Guía técnica para reducir el ruido en benchmarks de rendimiento

Fuentes: Technical guide to reducing noise in performance benchmarks

El artículo técnico 'Tuning a Server for Benchmarking' de David Álvarez Rosa detalla un procedimiento sistemático para minimizar la variabilidad en las mediciones de rendimiento de software. El objetivo principal no es maximizar la velocidad bruta, sino garantizar la reproducibilidad de los resultados, ya que una mejora del 2% es invisible si el ruido de la máquina supera el 5%. El autor utiliza un benchmark de suma de arrays de doble precisión como caso de estudio para ilustrar cómo el ruido puede oscilar entre ejecuciones, afectando la validez de las conclusiones.

El proceso de optimización comienza analizando la topología del hardware mediante herramientas como lstopo para identificar núcleos homogéneos. Se recomienda fijar el proceso en un núcleo específico (pinning) para evitar migraciones que pierdan cachés calientes y para mantener la frecuencia del reloj estable entre ráfagas de trabajo. Posteriormente, se ajusta el gobernador de frecuencia a 'performance' para evitar que el reloj se enfríe entre iteraciones. El artículo también describe la desactivación de la hiperenmbaradura (SMT) y el turbo boost, medidas que eliminan interferencias por el uso compartido de recursos y varías de temperatura, respectivamente.

La guía concluye que, tras aplicar estas configuraciones, el coeficiente de variación (CV) puede reducirse de un 2,72% a un 0,26%, permitiendo detectar diferencias de medio por ciento que antes eran ruido. El autor enfatiza que estas configuraciones son específicas para benchmarks y no deben aplicarse en producción, donde la latencia mínima y la velocidad máxima son prioritarias. Se incluye un script de referencia para aplicar estas configuraciones en máquinas remotas, destacando la importancia de volver a la configuración normal tras las pruebas.