Benchmarketing

En computación, una prueba de rendimiento o benchmark es la acción de ejecutar un programa de cómputo, un conjunto de programas u otras operaciones para evaluar el rendimiento relativo de algún componente, normalmente al ejecutar en él una serie de pruebas "estándar". El término “prueba de rendimiento” también se utiliza mucho para referirse a los propios programas de pruebas de rendimiento elaboradamente diseñados. La prueba de rendimiento es usualmente asociada con la evaluación de características de rendimiento de un equipo de cómputo; por ejemplo, el rendimiento de las operaciones de punto decimal en una CPU, aunque existen circunstancias donde tal técnica también se aplica al software. Las pruebas de rendimiento de software son, por ejemplo, ejecutadas en compiladores o sistemas de bases de datos. Otro tipo de prueba, conocida como conjunto de pruebas o conjunto de validaciones, está orientada a validar la precisión del software.

Se dice que las pruebas de rendimiento ofrecen, tentativamente, un método para comparar el rendimiento de diversos subsistemas entre distintas arquitecturas de chip o de sistemas. Sin embargo, las pruebas de rendimiento no ponen realmente en evidencia la real capacidad de uso y respuesta del equipo en sí, sino solo ponen en evidencia qué tan eficiente funciona la prueba de rendimiento en ese equipo.

Y es que todo esto tiene un propósito original bien definido: Conforme avanzan las arquitecturas de cómputo, cada vez se vuelve más complejo comparar el rendimiento de diversos sistemas de cómputo con tan solo ver sus especificaciones técnicas. Es por ello que se han desarrollado "pruebas" tienen la finalidad de permitir la comparación de distintas arquitecturas. Por añadidura, existe el mito de probar y destacar solo las CPU, donde muchos de estos programas de pruebas de rendimiento basan sus resultados en calificaciones dadas únicamente a este pedazo de silicio y ya. En realidad lo importante sería probar todo el equipo de cómputo como tal, porque eso es lo que, al final, se compra, la CPU es parte de ello.

Las pruebas de rendimiento se han diseñado para simular cierta carga de trabajo en algún componente, aunque difícilmente lo hacen en un sistema completo. Las pruebas de rendimiento sintéticas son especialistas en destacar ciertos componentes mediante cargas artificiales. Sin embargo, hay pruebas de rendimiento que se autonombran “prueba de rendimiento de aplicación”, “prueba de rendimiento del sistema” o “prueba de rendimiento del mundo real”, pues ejecutan algunos programas conocidos en el equipo, mismos que pueden ser de productividad, de juegos, de análisis, etcétera.

No obstante, ningún programa de prueba de rendimiento dará una idea clara la capacidad de respuesta final del equipo, pues hay muchos procesos de automatización que no ofrecen realmente una idea del uso del equipo por una persona en sí. Para el caso, las pruebas realizadas por un usuario en particular pueden tener una mejor medida del comportamiento de un sistema, pues las pruebas automatizadas dependen de diversos parámetros, así como del tipo de compilador utilizado y las bibliotecas o ajustes integrados. Lo anterior, refuerza el hecho que una prueba de rendimiento jamás será una evidencia del rendimiento del equipo, sino solo de cómo funciona ese programa de pruebas en el equipo.

En algunos casos, las pruebas de rendimiento utilizan intensivamente detalles de diseño de las CPU, pues los arquitectos de procesadores tienen la habilidad de medir y ajustar decisiones microarquitectónicas. Por ejemplo, si una prueba de rendimiento extrae los algoritmos clave de una aplicación, contendrá los aspectos sensibles de rendimiento de esa aplicación. Al ejecutar esta pequeña sección de algoritmo en un simulador de ciclos exactos podrá dar una idea de cómo mejorar el rendimiento para esa prueba en particular.

Antes del año 2000, los arquitectos de grandes computadoras y procesadores utilizaban SPEC para ello, aunque las pruebas de rendimiento SPEC basadas en Unix eran muy largas y, por ello, vagamente utilizadas sin modificaciones.

Se sabe que los fabricantes de cómputo configuran sus sistemas, o los procesadores, para dar altas puntuaciones irreales en ciertos programas populares de pruebas de rendimiento, mismas que no se replican en el uso real. Por ejemplo, el uso de determinados compiladores de ciertos fabricantes en una prueba de rendimiento, podría detectar cierta secuencia de operaciones matemáticas utilizadas en alguna prueba de rendimiento popular, y reemplazar las operaciones con operaciones matemáticas equivalentes más eficientes. Sin embargo, tal transformación raramente se utilizaría de manera cotidiana. Desde 1990, en las arquitecturas RISC y VLIW se destacó la importancia de la tecnología usada en el compilador y su relación con el rendimiento. Ahora, las pruebas de rendimiento se han usado regularmente por empresas fabricantes de compiladores para mejorar no sólo sus propias marcas de rendimiento, sino algunos aspectos reales de rendimiento de las aplicaciones.

Las CPU que tienen muchas unidades de ejecución —como una CPU superescalar, una CPU VLIW o una CPU de cómputo reconfigurable— típicamente tienen menores frecuencias de reloj que una CPU secuencial con una o dos unidades de ejecución cuando se fabrica de transistores que sólo son rápidos. Sin embargo, las CPU con muchas unidades de ejecución con frecuencia completan tareas reales y de pruebas de rendimiento en menos tiempo que las CPU supuestamente más rápidas por tener altas frecuencias de reloj.

Con tantos programas de pruebas de rendimiento disponibles, un fabricante generalmente encontrará al menos uno que muestre como su sistema sobrepasa el rendimiento de otro; los otros fabricantes también encontrarán alguno que muestre como superan a la competencia.

Los fabricantes normalmente sólo se basan en las pruebas de rendimiento (o aspectos de las pruebas de rendimiento) que muestran a sus productos como los mejores. También se sabe que tergiversan el significado de las pruebas de rendimiento, nuevamente para mostrar a sus productos como los mejores. Este tipo de prácticas es conocido como benchmarketing.

Una prueba de que los programas de pruebas de rendimiento no necesariamente son imparciales se encuentra en la página de ArsTechnica, donde el PCMark ofrece distintos resultados cuando en el mismo procesador (un VIA Nano) se cambia la cadena de identificación (CPUID) del procesador, tal como se aprecia en la gráfica con la que se corona el inicio de este texto. La barra naranja es un Atom. La verde, la roja y la azul son el VIA Nano. Es el mismo procesador, pero con diferentes cadenas de CPUID (algunos de los procesadores VIA Nano ofrecen esa capacidad, de poder cambiar la firma del procesador). Nótese que el mismo procesador VIA Nano, al cambiarle la cadena a GenuineIntel, supera, incluso, al propio Atom. Sin embargo, al dejar la cadena como AuthenticAMD o CentaurHauls, el rendimiento parece cambiar sensiblemente. Puede verse toda la prueba en el siguiente hipervínculo:

http://arstechnica.com/hardware/reviews/2008/07/atom-nano-review.ars/6

En una parte del texto, se traduce a la letra:

"...He oído rumores por años de que el resultado de rendimiento en PCMark 2005 podría cambiar de acuerdo con el CPUID que se maneje en la prueba de rendimiento, y ésta es la primera oportunidad que tengo para probar esa teoría. El término CPUID se refiere a una cadena de caracteres específica que almacena información del fabricante del chip, características disponibles, marca y modelo. Los distintos fabricantes usan distintos CPUID, como GenuineIntel, AuthenticAMD, CentaurHauls y el ahora obsoleto, CyrixInstead. Tanto Intel como AMD bloquean sus CPUID para evitar que sean cambiados, pero VIA no los bloquea, y ello nos da una oportunidad para explorar una cuestión que normalmente no puede ser explorada.


Al cambiar el CPUID del Nano, podemos cambiar el valor que es manejado por Futuremark, y poner en evidencia cualquier irregularidad en los resultados de las pruebas de rendimiento. Si todo es igual, no debería mostrarse ningún cambio significativo en el rendimiento.[...] Al cambiar CentaurHauls por AuthenticAMD, el rendimiento del Nano mágicamente aumenta un 10%. Pero al cambiarlo a GenuineIntel, el rendimiento de la memoria aumenta no menos de 47.4%. [...]"

Aunque el artículo anterior data de 2008, pone en perspectiva que los resultados obtenidos por una prueba que está modificada por el marketing, con la única finalidad de poner en perspectiva un mejor rendimiento artificial, y no necesariamente un mejor rendimiento per se.

Idealmente, las pruebas de rendimiento sólo deberían sustituir a la aplicación solo si la aplicación no está disponible, o es muy difícil o costoso transportarla a un determinado procesador o sistema de cómputo. Si el rendimiento es crítico, la única prueba de rendimiento que importará sería la propia que realizara el usuario con su conjunto de aplicaciones como tal, y que ofrezca la mejor relación de precio/rendimiento/TCO.

Evite caer en las garras del benchmarketing, que ahora tiene asolado al ámbito del cómputo. Lo mejor es probar de primera mano qué tal se comporta la computadora, así como evaluar sus características y su relación precio/rendimiento/consumo de energía. Podría obtener mejores resultados que solo basarse en pruebas de benchmarketing. ¡Nos seguimos leyendo!

Comentarios

Hola, Jaime. Mil gracias por sus comentarios. Ciertamente, planteo este sitio como un área para escribir de cómputo de una forma sencilla y compartir vivencias en ese tenor. Algo de ello puede ser útil a las personas. Que tenga un gran día.

Entradas más populares de este blog

Toshiba Satellite T215-SP1004M

Consecuencias de la falta de mantenimiento en el equipo de cómputo

Normalización de bases de datos (Parte 6 y última): Quinta y sexta formas de normalización (5NF) (6NF)