Los Erlangs como unidad de medida de la ocupación, es un tema interesantísimo que siempre se ve en cursos de telecomunicaciones, sin embargo, aunque el concepto mismo de erlangs es fácil de comprender, no lo es así las fórmulas de estimación de la ocupación de una red o de estimación de recursos necesarios. Encontré un artículo bastante ilustrativo y me propongo ofrecer mi interpretación al público de éste blog y a algunos de mis estudiantes. Disfrútenlo.
Interpretación del artículo: Resource dimensioning using Erlang-B and Erlang-C.
El dimensionamiento de recursos es un paso importante en el diseño de arquitecturas. El arquitecto de sistemas necesita estudiar los requerimientos de desempeño y proponer una arquitectura que satisfaga o exceda los requerimientos eficientemente (equilibrio costo-beneficio). Por recursos nos referimos a cualquier entidad de hardware o software necesaria para ejecutar transacciones (tareas operativas de cualquier naturaleza) iniciadas por el usuario. Por ejemplo, si ud. está desarrollando un sistema de conmutación telefónico, los recursos podrían ser troncales digitales, ranuras de tiempo (time-slots), detectores de tono, etc..
En éste artículo nos enfocaremos en el dimensionamiento de recursos usando las fórmulas Erlang-B y Erlang-C. Muchas veces el dimensionamiento de recursos es determinado mediante la simulación del sistema a ser desarrollado, pero hacer simulaciones con frecuencia es demasiado difícil, costoso y en la mayoría de los casos se pueden obtener buenos resultados de estimación sólo usando las fórmulas Erlang.
Conceptos clave
- Hora pico (busy hour)
- Erlang
- Probabilidad de bloqueo
- Grado de servicio (Grade of Service o GoS)
- Tiempo de servicio
- Tiempo de espera
Hora pico: La carga que soporta un sistema varía muchísimo con base en la hora del día y el día de la semana. La mayoría de los sistemas tienen fuertes cargas de ocupación durante unas pocas horas en el día. El principal objetivo del dimensionamiento de recursos es asegurar que el sistema se desempeña bien durante las horas de máxima ocupación. Ésto garantiza que el sistema tiene recursos adecuados para manejar la hora pico y por ende cualquier otro tráfico ordinario. Por lo tanto, nuestra discusión se centrará en la atención de la carga durante la hora más ocupada del día.
Erlang: Ésta es una unidad de medida de tráfico (E) que puede ser definida como uso de todos los recursos dividido por el tiempo total de medida.
Un ejemplo aclarará la definición, considere un troncal digital con una capacidad de 31 circuitos de voz, si cada circuito ha estado ocupado por media hora durante un intervalo de medición de una hora, la cantidad de erlangs sería: 930/60, es decir, 31*30=960 minutos de ocupación de todos los recursos, medido sobre 60 minutos (mismas unidades de tiempo), es decir, la ocupación en el ejemplo es de 15.5 E
Probabilidad de bloqueo: Ésta define la probabilidad de que a un cliente se le niegue el servicio por falta de recursos. Por ejemplo, una probabilidad de bloqueo de 0.01 significa que al 1% de los clientes se les niega el servicio. La mayoría de las veces los cálculos de la probabilidad de bloqueo se refieren a la hora pico únicamente. Ésta se puede reducir incrementando recursos en el sistema u ofreciendo incentivos para usar los recursos en horas no pico.
Grado de servicio (G0S): El grado de servicio está directamente relacionado con la probabilidad de bloqueo. Un alto grado de servicio garantiza al cliente una baja probabilidad de bloqueo durante la hora pico. Proveer un alto grado de servicio requiere incrementar el número de recursos en el sistema y al contrario ud. podría disminuir costos disminuyendo recursos pero a costa de desmejorar el grado de servicio.
Tiempo de servicio: El tiempo de ocupación que toma un recurso en satisfacer la solicitud de un usuario.
Tiempo de espera: Aquel que espera el cliente en una cola antes de ser atendido si el servicio no es inmediato.
Cálculos Erlang
Hay un equilibrio entre dimensionamiento de recursos y grado de servicio. En esta sección examinaremos éste equilibrio usando las fórmulas Erlang-B y Erlang-C. La elección de la fórmula que se use depende de cómo se manejen los usuarios cuando todos los recursos están ocupados.
- Erlang-B: debe ser usada cuando la carencia de un recurso libre resulta en que al cliente se le niega el servicio. La solicitud del cliente es rechazada si no hay recursos disponibles.
- Erlang-C: debe ser usada cuando la carencia de un recurso libre resulta en el encolamiento de la solicitud del cliente. Las solicitudes permanecen en cola de espera hasta que se desocupa un recurso.
Erlang-B
Esta fórmula permite calcular la probabilidad de que una solicitud de recurso por parte de un cliente será negada si no hay recursos disponibles. La fórmula es: , donde:
N es la cantidad de recursos del sistema, E es el tráfico total en Erlangs y Pb es la probabilidad de que a un usuario se le niegue la atención por falta de recursos.
Esta fórmula funciona bajo las siguientes condiciones:
- La cantidad de usuarios es mucho mayor que el número de recursos disponibles para atenderlos. En general, la fórmula da resultados aceptables si el número de clientes es por lo menos 10 veces más grande que el número de recursos (N).
- Las solicitudes de cada clientes son independientes entre sí. Esta fórmula no funciona si las solicitudes han sido disparadas por algún evento común como un show de TV o un desastre natural.
- Los servicios son rechazados sólo cuando no hay recursos disponibles.
- Cuando un cliente no se puede atender el recurso simplemente se rechaza, no se intenta encolar las solicitudes.
- Un usuario no vuelve a intentar el servicio cuando éste es rechazado.
- El recurso es asignado sólo a un usuario durante el tiempo de servicio, el recurso no puede ser compartido.
Nota: La fórmula puede ser un poco engorroso, afortunadamente existen numerosas calculadoras de Erlangs en línea.
Ejemplo de uso de Erlang-B
Consideremos un ejemplo en el que ésta fórmula es usada en el análisis de los requerimientos de desempeño. Consideremos el dimensionamiento de los receptores DTMF (Dual-tone Multi-frecuency) en un sistema de conmutación Xenon. Los receptores DTMF son usados para recibir los tonos digitados en un teléfono y reconocer los números correspondientes, por lo tanto, un receptor DTMF es requerido antes de que el tono de marcado es enviado al suscriptor. El receptor puede ser liberado después de que los dígitos son reconocidos.
Requerimientos de desempeño
- Cada procesador XEN debe estar equipado con un receptor DTMF
- Los receptores deberán ser asignados antes de que el tono de marcación se pueda enviar al usuario y puede ser liberado después de reconocidos los dígitos
- La duración promedio del periodo de marcado es 30 segundos
- La probabilidad de que una llamada sea rechazada no debe ser superior a 0.1%
- Un paorcesador XEN debe manejar por lo menos 20000 solicitudes en la hora pico
Análisis de requisitos
Necesitamos calcular la cantidad de receptores DTMF necesarios en un procesador XEN. Decidimos usar la fórmula Erlang-B dado que el sistema rechaza las llamadas si no hay receptores disponibles y las demás condiciones también se satisfacen (la única condición no satisfecha es que los usuarios no reintentan la llamada). Usaremos la calculadora de Erlang.com que usa Erlang-B para computar el resultado, esta calculadora necesita el tráfico en hora pico (BHT por las siglas en inglés) y la probabilidad de bloqueo. En nuestro ejemplo, el BHT puede ser calculado con la primera fórmula vista: BHT=20000*30/3600=167 Erlangs. La probabilidad de bloqueo está dada por los requerimientos (0.1% ó 0.001).
Con estos números la calculadora retorna un número de lineas de 202, por lo tanto necesitamos 202 receptores DTMF por procesador con los requerimientos dados.
Dimensionamiento de recursos
Podemos usar el número de circuitos arrojado por la fórmula para determinar nuestro equipamiento de hardware. Digamos que planeamos usar tarjetas DSP y cada una tiene 4 DSPs en ellas, cada DSP maneja 16 receptores DTMF, por lo tanto cada tarjeta manejaría hasta 64 receptores y tendríamos que instalar 4 tarjetas para satisfacer los requerimientos iniciales con una capacidad de 256 DTMFs (un poco de capacidad de crecimiento o capacidad ociosa).
Erlang-C
Esta fórmula le permite calcula la probabilidad de que un cliente tenga que esperar por un recurso. La fórmula es: , donde E es el tráfico total ofrecido (en Erlangs), N es el número total de recursos y Pc es la probabilidad de que un usuario obtenga un retraso diferente de cero en la consecución de un recurso.
La fórmula es aplicable bajo las siguientes condiciones:
- Las solicitudes son llegadas de Poisson (ver artículo M/M/1 queueing)
- Los tiempos de servicio están exponencialmente distribuidas (ver artículo M/M/1 queueing)
- Los clientes no renuncian a la solicitud durante el tiempo de espera
- Las solicitudes sin independientes entre sí, la fórmula no funciona si las solicitudes son disparadas por un evento como un show de tv o un desastre natural
- El recurso es asignado a un usuario durante el tiempo de servicio. El recurso no puede ser compartido
- El número de clientes es mucho mayor que el número de recursos disponibles para atenderlos. En general la fórmula da buenos resultados si el número de clientes es por lo menos 10 veces el número de recursos
Nota: La fórmula puede ser un poco engorroso, afortunadamente existen numerosas calculadoras de Erlangs en línea.
Ejemplo de Erlang-C
Consideremos la instalación de WebTaxi en un pequeño pueblo. Necesitamos determinar el número de taxis necesarios para ofrecer cierto grado de servicio.
Requerimientos de desempeño
- El sistema debe manejar una carga en hora pico de 200 solicitudes de taxis
- La duración promedio de un viaje en taxi en el pueblo es de 30 minutos
- Durante la hora pico un usuario no debería esperar más de 15 minutos
Análisis de requerimientos
Usaremos la fórmula de Erlang-C dada la existencia de una cola de solicitudes. Este análisis está basado en las siguientes suposiciones:
- Las solicitudes de taxi son llegadas de Poisson (ver artículo M/M/1 queueing)
- La duración del servicio de taxi están distribuidas exponencialmente (ver artículo M/M/1 queueing)
- Los clientes no cancelan el servicio mientras están esperando
- El primer taxi disponible estará listo para atender al próximo cliente (ésta es sólo una suposición que funciona para un pueblo pequeño. En una gran ciudad un cliente podría tener que esperar a que el taxi libre esté en un área cercana)
- La duración de 30 minutos de viaje incluye el tiempo para conducir desde el abandono del último cliente hasta el recibido del próximo.
Usaremos la versión gratuita (freeware) de cc-Modeler (by KoolToolz.com) para este análisis. La terminología de la herramienta está dirigida hacia centros de llamadas (call-center) pero debería funcionar también para nuestro servicio de taxi. La herramienta necesita las siguientes entradas:
- Número de solicitudes en la hora pico: 200
- Duración promedio del viaje: 30 minutos
- No más de 2 clientes deberían esperar por más de 15 minutos. Ésto se traduce en que 99% del tiempo, la espera por el taxi debe tomar menos de 15 minutos.
Dados éstos datos la herramienta arroja lo siguiente:
- Número de taxis en la hora pico: 108
- Porcentaje de taxistas ocupados durante la hora pico: 93%
- Porcentaje de solicitudes servidas sin esperas: 67%
- Espera máxima por un taxi: 15 min 42 seg
- Promedio de clientes en espera durante la hora pico: 4
Adicionalmente a ésta información, la herramienta también ofrece unos resultados gráficos (Ver artículo original).
Dimensionamiento de recursos
Con el análisis anterior, concluimos que se necesitan 108 taxis para atender la hora pico. Los taxis necesarios en otros tiempos del día se pueden calcular mediante cálculos similares.
Buen dia
Leyendo el post hay un problema con la explicación erlang. Usted lo define asi «puede ser definida como uso de todos los recursos dividido por el tiempo total de medida.» pero en el ejericio lo aplica mal deberian ser 16 erlangs