menu_superior

PERCENTILES Y TIEMPOS MEDIOS DE RESPUESTA

percentiles y tiempos medios de respuestaDice el adagio que la estadística es la ciencia que, si tú te comes dos pollos y yo no me como ninguno, resuelve que ambos nos hemos comido un pollo. Esta conclusión, tan alejada de la realidad, es algo muy parecido a lo que hacen algunos politicos cuando manipulan interpretan resultados estadísticos y algo muy diferente de lo que debería hacer un buen tester para analizar adecuadamente los resultados de las pruebas de rendimiento sobre un sistema. Digo adecuadamente, por que de no hacerlo así, los resultados de nuestro análisis serán incosistentes y también estarán alejados de la realidad. Hoy nos fijamos en los percentiles y tiempos medios de respuesta, dejando para próximos posts otros magnitudes a las que hay que prestar atención.

El tiempo medio de respuesta

El tiempo de respuesta de un sistema es la medida más importante para clasificar el rendimiento de un sistema. Si el sistema está absorbiendo la carga de trabajo, los tiempos serán bajos, y si el sistema está superado por la carga de trabajo, los tiempos serán altos. Esta lógica, tan simple, hace que se pierda la perspectiva y se marginen otras magnitudes que enriquecen el informe de las pruebas. Hay que tener en cuenta que existen circunstancias ajenas a la carga de trabajo que pueden impactar en el tiempo de respuesta tanto al alza como a la baja.

Desviaciones al alza

Los tiempos de respuesta, aún siendo buenos y teniendo el sistema una carga de trabajo asumible se pueden desviar del resultado real cuando realizamos las pruebas sobre un sistema en reposo. Normalmente en estas condiciones, el sistema no tiene conexiones abiertas con las bases de datos, tiene servicios internos parados, etc. Al empezar a recibir las peticiones generadas por las pruebas debe restablecer estas conexiones, levantar los servicios, recuperar de disco datos y un conjunto de tareas que, si no arrancara la prueba desde el reposo, no tendría que hacer. Toda esta carga adicional de trabajo tiene como consecuencia que las primeras peticiones servidas tendrán un tiempo alto de respuesta que produce desviaciones en el gráfico y en el tiempo de respuesta medio del sistema.

Cuando un sistema se comporta así podemos utilizar una prueba previa, de la cual no analizaremos los resultados. Este tipo de pruebas de calentamiento o”warm up test” serán las que estimulen al sistema para realizar todas esas tareas, permitiendonos lanzar la prueba que queremos evaluar con el sistema ya en marcha y obtener los tiempos de respuesta más reales.

Desviaciones a la baja

Es cierto que no hay muchas circunstancias que propicien una bajada en los tiempos de respuesta, (*) y la que hay es tan común que conviene tenerlo siempre presente para no equivocarnos a la hora de interpretar los resultados. Me refiero a los cacheos de datos de respuesta. El mecanismo de cacheo es algo que se implementa para reducir los tiempos de respuesta, y es algo que deben contemplar las pruebas. El problema viene cuando las peticiones generadas por las pruebas están cacheadas ya que los tiempos de respuesta se reducen drásticamente, dando la impresión de que el sistema está por debajo de su nivel máximo de carga de trabajo.

Para evitar esta contaminación de los resultados se debe alimentar las pruebas con la mayor cantidad de datos diferentes posibles. En caso de que haya pocos datos disponibles para la prueba, podemos esctructurarlos de manera que la secuencia de peticiones no sea siempre la misma: copiando y pegando bloques en órdenes diferentes, accediendo a ellos como “random”, etc. Es preferible tirar con datos que no cacheen ninguna petición a que cachear todas.

(*) Hacer las pruebas dentro del mismo edificio en el que está fisicamente el sistema también rebaja los tiempos. Hay que tenerlo en mente, hoy no iremos más allá por que hay muchos mecanismos para evitarlo y, generalmente, el impacto no suele ser tan grande como en los cacheos.

El percentil del tiempo de respuesta

Ya hemos visto que hay multitud de circunstancias que pueden impactar en los resultados de una prueba de rendimiento, de ahí la importancia de tener un entorno conocido y controlado. Lo malo es que incluso en estas condiciones podemos encontrarnos desviaciones causadas por eventos que no controlamos, así que además de gestionar los que conocemos también podemos utilizar herramientas como el percentil para analizar los resultados de las pruebas.

El percentil del tiempo de respuesta es una medida que nos permite ubicar en una escala el tiempo de respuesta. Pongamos el ejemplo del Percentil-90: Si el percentil-90 es de 1,59 segundos quiere decir que el 90% de las transacciones tienen un tiempo de respuesta igual o inferior a 1,59 segundos. Esto quiere decir que el 90% de las transacciones se realizan en este tiempo. En condiciones de desviaciones moderadas o altas el dato del percentil aporta mucha más información que una media aritmética. Podéis ver las definiciones de percentil de wikipedia y de curiosoando.

, , , ,

Comments are closed.