Little’s law y Earlang aplicados a performance testing

No recuerdo si fue en Probabilidad y Estadística, o en Investigación Operativa, en Facultad, que estudié alguna vez esta ley llamada Little’s law, que básicamente (y de forma simplificada y resumida) dice que el número promedio de clientes en un sistema es igual al promedio de arribos multiplicado por el tiempo promedio que estos están en el sistema. Una forma de entender esta ley es como lo explica este artículo con esta imagen:

Lo que veo ahora es que tiene mucho que ver con lo que solemos analizar temas relacionados a la performance. Básicamente, guiándonos con esa ley, sabiendo cuál es el throughput (requests por segundo) y el tiempo de respuesta promedio (ambas cosas son observables al simular una carga con herramientas como JMeter o Gatling) podemos calcular cuántas sesiones activas (procesando simultáneamente) habrá en un servidor.
Veamos con un ejemplo. Si tenemos 20 req/sec, y en promedio el time-taken es de 500ms, podríamos decir que en régimen habrán 10 sesiones trabajando en el servidor. Es simple, y muy útil, más que nada porque esto nos puede hacer pensar sobre las necesidades en distintos puntos de la infraestructura, en cuanto a configuraciones de distintos pools, workers, threads.

El amigo Andrei Guchín luego aportó (desde sus estudios de ingeniería en telecomunicaciones, en particular en una asignatura llamada Núcleo de Red) que existen otras cosas a considerar, como lo descrito en este artículo sobre la unidad Erlang. Si bien se usan directamente en telefonía (para calcular tráfico, colas de espera, tiempos, etc.) se puede llegar a aplicar a lo que hacemos en performance de sistemas. Andrei comentaba que, entre otras cosas, con estos modelos se enteró que en los supermercados el número de cajas y cajeros está calculado para que se formen colas intencionalmente, así la gente queda más tiempo frente a las góndolas que están al lado cajas (tentándose así con las golosinas y otros artículos que desde ahí se pueden ver) y así consuman más.

Acá hay una explicación un poco más detallada de la distribución Erlang, también relacionada con el comentario anterior.

Leave a Reply

Your email address will not be published. Required fields are marked *