La ley de Little, y las gallinas que entran por las que van saliendo

John Dutton Conant Little demostró la ley de Little allá por 1961.

Yo creo que es una gran ley, por aquello de que es útil y porque puede aplicarse en una gran variedad de situaciones para calcular cosas útiles.

Uno puede saber, por ejemplo, el tiempo que va a tener que esperar a que le cobren en el supermercado, o estimar cuánto tiempo va a tardar un equipo (informático o humano) en hacer un trabajo, o estimar cuál será el tiempo medio de respuesta de un sistema informático, o de una tarjeta de red.

Y sólo hay que conocer cómo se ha comportado el sistema con anterioridad.

Y saber multiplicar y dividir, claro: cosas que cualquier calculadora sencillita permite hacer fácilmente, para aquellos que (como yo) son muy vagos o torpes para hacerlo mentalmente.

La ley viene a decir algo tal que así:

El número medio de clientes "N" que hay en una tienda (durante un tiempo determinado) es igual a la velocidad media "V" a la que entran en la tienda multiplicada por el tiempo medio "T" que están dentro. O sea, N = V × T.

Puede parecer algo de perogrullo, elemental quizá, pero la verdad es que es sorprendente: no depende (directamente) del mecanismo que usemos para atender a los clientes, por ejemplo, ni tampoco depende (directamente) de si los atendemos en orden de llegada o no.

Además, la ley aplica a cualquier sistema que procese cosas, y en el que estas cosas o bien están esperando a ser procesadas o bien están siendo ya procesadas.

Y, obviamente, es aplicable tanto a sistemas enteros como a sus partes. Esto es, uno puede aplicar la ley a toda la tienda o a la sección de charcutería. O a la sección de charcutería y a la de panadería. O a la tarjeta de red y a las consultas en la base de datos.

Más curiosidades y algunas advertencias

Resumo algunas advertencias y curiosidades que conviene destacar antes de empezar a aplicar la ley de Little a lo loco:

  • Para hacer las multiplicaciones, o las divisiones, los números tienen que estar en unidades acordes entre sí: no vale medir la velocidad en clientes por hora y el tiempo en minutos, o en días. O se usan horas o se usan minutos, o semanas, pero siempre hay que usar las mismas unidades (que no vale juntar la velocidad y el tocino, vamos).

  • La ley puede aplicarse a cualquier sistema en estado estable, no vale aplicarla cuando en regímenes transitorios, por ejemplo: no valdría aplicarla cuando el sistema arranca (si uno está subiendo la persiana de la tienda), o si el sistema está ya tan saturado que no puede atender más peticiones (que no pueden entrar entonces al sistema, es como si cerrásemos la puerta de la tienda). .

  • La ley puede aplicarse también siempre y cuando los "clientes" no desaparezcan por arte de magia. Por ejemplo: no vale usarla si uno tiene un desván en el supermercado y mete allí a los clientes para esconderlos de la ley (la de Little) y sacarlos luego por una salida secreta. Ni se puede aplicar tampoco si voy a calcular el tiempo que tardará en llegar un pedido y resulta que el pedido se pierde por el camino, o lo roban y desaparece.

Para una versión más rigurosa y para definiciones más formales recomiendo el artículo que Little publicó, con Stephen C. Graves, en 2008. El artículo es muy fácil de leer, divertido (habla de botellas de vino en una bodega) y puede consultarse gratuitamente en la web.

Little escribió también otro artículo para celebrar el 50º aniversario de la ley. Está disponible aquí y es también interesante porque, además de un porrón de aplicaciones, repasa los avances e implicaciones de la ley en los últimos 50 años.

Dicho lo dicho nos metemos en harina con las aplicaciones de la ley, en diferentes circunstancias:

Aplicación I: en sistemas informáticos

Para aplicar la ley a sistemas informáticos es útil modificar el enunciado anterior y cambiar "tienda" por un "sistema informático" cualquiera (o una parte de él, podría ser un servidor web, una tienda web, el servidor de base de datos, la CPU o la tarjeta de red, por ejemplo) y cambiar los "clientes" por "peticiones" que se hacen al sistema para su procesamiento (peticiones web, o consultas a la base de datos, o paquetes de red, etcétera). Entonces tendríamos las siguientes cantidades:

  • N: Número medio de peticiones en proceso (unidades: peticiones).
  • V: Velocidad media de llegada de nuevas peticiones al sistema (unidades: peticiones/segundo).
  • T: Tiempo medio de respuesta por petición (unidades: segundos). Es decir, la latencia.

La fórmula sigue siendo la misma: N = V x T, pero es útil despejar T pasando V al denominador, y entonces la fórmula sería: T = N / V y el enunciado sería éste:

La latencia de un sistema informático estable que procesa peticiones es igual al número medio de peticiones en proceso en el sistema dividido por la velocidad media de llegada de nuevas peticiones.

Obsérvese que esto es una ley, y no una definición.

Gráficamente la ley de Little nos dice que si hacemos una gráfica en la que el eje horizontal sea el número de peticiones en curso N y el eje vertical sea el número de peticiones entrantes V entonces tendríamos que tener una recta cuya pendiente sería, precisamente, el inverso de latencia, T = N / V.

Hay infinidad de gráficas de este tipo por Internet adelante. Podemos, por ejemplo, coger prestada esta gráfica de rendimiento de esta página de IBM (una página interesante, por cierto, por eso la pongo, pero cualquier otra gráfica sería igualmente válida):

Como se aprecia en la gráfica efectivamente obtenemos una línea recta al principio, y la latencia del sistema sería precisamente el inverso de la pendiente de la recta.

Esta línea recta se vuelve horizontal cuando el número de peticiones rebasa un valor determinado. Este valor se llama "punto de saturación", e indica que el sistema ya no es capaz de continuar recibiendo peticiones entrantes porque está muy lleno: es como si cerrásemos la puerta y no dejásemos entrar a más clientes a la tienda. En esta situación de saturación la ley de Little no se puede cumplir ya (porque el sistema no está en un estado "estable"), y por eso la gráfica deja de ser recta y pasa a ser horizontal (con pendiente cero, inversa de la pendiente infinita y latencia, también, infinita) o, en los peores casos, a bajar a cero si el sistema "se funde" y deja ya de funcionar.

El punto de saturación es importante cuando realizamos pruebas de un sistema porque permite diferenciar entre lo que es una prueba de carga de un sistema informático (allí donde la ley de Little puede aplicarse, en la zona de la línea recta, a la izquierda) de una prueba de estrés de un sistema (consistente en llevar la carga del sistema precisamente a la zona de saturación, donde la ley no aplica, a la derecha).

Por cierto: las pruebas de carga sirven, entonces, para medir la latencia del sistema en funcionamiento normal.

Y las pruebas de estrés son útiles para detectar qué elementos del sistema están saturados (las conexiones a las bases de datos, o el garbage collector, o lo que sea) e intentar optimizarlos para conseguir modificar el punto de saturación y mejorar la capacidad en el sistema.

Aplicación II: estimación de plazos de entrega de trabajos o pedidos

Otra de las aplicaciones útiles de la ley de Little es cuando se usa para estimar los plazos de entrega de un equipo de trabajo (o los plazos de entrega de pedidos de una tienda). En este caso la ley se puede enunciar así:

El plazo medio de entrega T de trabajos (o pedidos) de un equipo (o tienda) en régimen estable es igual al número medio de trabajos (pedidos) en curso, N, dividido por la velocidad media de llegada de nuevos trabajos (pedidos), V. O sea, de nuevo, T = N / V.

Por ejemplo, si un equipo de desarrollo está construyendo de media N=30 requisitos y recibe una media de V = 3 requisitos/semana entonces sabemos que el plazo medio de entrega de un requisito será de T = N / V = 30 / 3 = 10 semanas.

O, por ejemplo, si un departamento de una empresa está realizando una media de N=3 trabajos y recibe una media de V=1 trabajo/mes entonces sabremos que el plazo medio de terminación de los trabajos será de T = N / V = 3 / 1 = 3 meses.

Si una tienda está procesando una media de N = 1000 pedidos (empaquetando 200 y otros 800 en tránsito pendientes de entregar, o al revés: da igual si la media son 1000) y recibe una media de 500 pedidos diarios entonces podemos calcular que el plazo medio de entrega de pedidos será de T = N / V = 1000 / 500 = 2 días.

Y, efectivamente, estos plazos no dependen de cuánta gente haya en estos equipos de trabajo (aunque el punto de saturación si depende de esto: cuanta menos gente más rápido llegaremos a la saturación, y entonces la ley dejará de ser válida). Ni tampoco depende de si estamos empaquetando los pedidos o si éstos están en tránsito: todos cuentan como "pendientes de entrega".

Y los plazos calculados serán válidos siempre y cuando los equipos de gente estén en régimen estable, y no se haya pasado el "punto de saturación" (cuando están hasta el moño, vamos, con la lengua fuera), que haría que los plazos fuesen mucho mayores.

Finalmente: observemos que estos tiempos que nos ofrece la ley de Little son también útiles para saber si un equipo de trabajo está o no en régimen de saturación: si se cumple la ley de Little entonces no estarán saturados (y habrá "hueco" para darles más trabajos), pero si la ley no se cumple significa que el equipo estará saturado, y entonces rendirá peor que en régimen de funcionamiento estable. Ojito con pasarse con el personal.

Para los interesados: la ley de Little se usa por estas razones en la mejora de procesos. A modo de ejemplo: se usa en Lean Six Sigma.

Por cierto, para saber cómo "frenar" la velocidad de trabajos entrantes para evitar entrar en régimen de saturación puede resultar útil esta entrada anterior en el blog sobre la técnica de "throttling" (y que ahora explica también porqué el "Get Things Done" funciona).

Para ir terminado

Para ir terminando un poco de humor: he aquí un vídeo en el que José Mota explica el origen de su famoso lema "las gallinas que entran por las que van saliendo".

El lema no tiene mucho que ver con la ley de Little: es más bien una ley de conservación de las gallinas, pero lo cierto es que es divertido.

A propósito: en el lema de José Mota (como en la ley de Little) hay, efectivamente, "mucha filosofía".