01 · Punto de partida
Un número no degrada, una curva sí
“ρ = 0.8” no dice si queda margen: la curva Wq(ρ) sí —plana hasta 0.7, codo en 0.85, pared en 0.95. Con S = 2 y c = 1, pasar λ de 0.4 a 0.45 (+12%) duplica Wq de 8 a 18: la curva lo grita, el número lo susurra.
Trazar Wq(ρ), L(ρ) y P(espera) para tu (μ, c) convierte el dimensionamiento en lectura de gráfico: SLA horizontal, punto operativo y λ máxima admisible.
- ¿Cómo trazo Wq(ρ) para mi sistema?
- ¿Dónde está el codo y qué margen dejo?
- ¿Qué λ máxima cumple mi SLA?
- ¿Cómo aplana la curva sumar c?
02 · Definición
Eje, curvas y codo
Eje
Carga 0 → 1 (barriendo λ o S). Cada punto es un régimen distinto del mismo sistema.
Curvas
Wq(ρ), L(ρ), C(ρ): con Erlang exactas en M/M/c; con sim donde no hay fórmula.
Codo
Zona 0.7–0.85 donde la pendiente se dispara. Debajo hay margen; encima, cada décima duele.
| ρ (λ) | Wq | Zona | +0.05 de ρ suma |
|---|---|---|---|
| 0.50 (0.25) | 2 | Plana | +1 min |
| 0.70 (0.35) | 4.7 | Codo | +3 min |
| 0.85 (0.425) | 11.3 | Pared | +9 min |
| 0.95 (0.475) | 38 | No operar | +∞ |
03 · El corazón: leer la pared
SLA horizontal, punto y margen
La línea SLA (ej. Wq ≤ 5) corta la curva en λmáx: todo λ debajo cumple. La distancia del punto operativo a λmáx (o de ρ a 1) es el margen que absorbe picos y crecimiento. Sumar c aplana la curva: el mismo SLA admite más λ.
- 1Fijar (μ, c).
Lo que no cambia en el horizonte: servicio y servidores.
- 2Barrer ρ.
λ de 0 a cμ con Erlang (o sim por punto donde no hay fórmula).
- 3Cortar con el SLA.
λmáx = mayor λ con Wq ≤ objetivo (bisección en código).
- 4Ubicar el punto.
ρ operativa con su Wq; margen = λmáx − λ (o 1 − ρ).
- Hipérbola 1/(1−ρ)
- La forma de toda espera markoviana: derivada 1/(1−ρ)² que explota. De ahí el codo.
- SLA horizontal
- “Wq ≤ 5” es una recta: lo que está debajo cumple. Cambiar el SLA mueve λmáx por la curva.
- Aplanada por c
- Más c baja y aplana Wq(ρ) a igual ρ (economías de escala, Tema 32): el codo se corre a la derecha.
- Curva simulada
- Sin fórmula (G/G/c, prioridades): un punto sim por ρ con warmup y réplicas. Cara pero universal.
Debajo del codo
Margen
Wq crece suave: +10% λ ≈ +10–20% espera. Se opera aquí, con aire para picos.
Pasado el codo
Pared
+10% λ duplica Wq. Solo se opera con SLA laxo, pico breve o fuga aceptada (K).
04 · Ejemplos
Tres lecturas de curva
- 1Banco c = 1, SLA Wq ≤ 5.
λmáx ≈ 0.36 (ρ ≈ 0.72): el codo manda cerrar turnos antes.
- 2Call center c = 8, a = 6.
Opera en ρ = 0.75 bajo el codo aplanado por c: margen para +1 erlang.
- 3Web, latencia ≤ 0.1 s.
La curva latencia-throughput fija el autoscaling: escalar al acercarse al codo, no en la pared.
05 · Representación en Python
Trazar y cortar en dos bloques
Barrer ρ con Erlang y buscar λmáx por bisección: la curva como lista, el SLA como corte.
Python en tu navegador. El primero traza Wq(ρ) c = 1..3; el segundo halla λmáx para tu SLA. Cambiá el objetivo.
# Curva Wq(rho) M/M/1, S=2 (mu=0.5)
mu = 0.5
for rho in [0.5, 0.7, 0.85, 0.95]:
print(f"rho={rho} Wq={rho/(mu*(1-rho)):.1f}")
# λ máx con Wq<=5 (M/M/1, mu=0.5): barrido fino
mu, sla = 0.5, 5.0
lam_max = max(l/100 for l in range(1, 50) if (l/100)/(mu*(mu-l/100)) <= sla)
print(f"lambda_max={lam_max:.2f} (rho={lam_max/mu:.2f})")
06 · Exploración
Laboratorio: la pared dibujada
Curvas Wq(ρ) exactas (Erlang) para c = 1, 2, 3 con S = 2. Elegí tu c y tu λ operativa: el punto marca tu (ρ, Wq); la recta es tu SLA y la cruz es λmáx. Movè el SLA y mirá cómo se corre el corte.
SLA que corta, margen que queda
Wq(ρ) Erlang · S=2
Movè λ hacia la pared.
Eje ρ 0–1, tres curvas por c (c = 1 la más alta). Punto = tu operación; recta = SLA; cruz = λmáx que cumple.
Preguntas para explorar
- Con c=1, SLA=5: ¿λmáx? ¿ρ? ¿Coincide con el codo?
- Con λ=0.7 (a=1.4): ¿Wq con c=1 (ρ=1.4)? ¿Y con c=2 (ρ=0.7)?
- Subí el SLA a 10 con c=1: ¿cuánto se corre λmáx? ¿Y si sumás c=2 con SLA=5?
Ver respuestas sugeridas
- λmáx ≈ 0.36 (ρ ≈ 0.71): el SLA corta justo en el codo. Diseñar ahí es diseñar con margen cero.
- c=1: avalancha (sin punto); c=2: Wq ≈ 1.9. La curva aplanada rescata.
- SLA=10 ⇒ λmáx ≈ 0.41; c=2 con SLA=5 ⇒ λmáx ≈ 0.85: sumar c rinde más que relajar SLA.
07 · Comprensión
Confusiones frecuentes
«La espera crece lineal con λ»
Crece hiperbólica: +0.05 de ρ en la pared suma lo que +0.3 en la plana. Proyectar lineal subestima el pico.
«El codo es siempre ρ = 0.8»
Depende de c, Cs² y SLA: con c = 8 el codo operativo se corre a 0.85+; con gigantes se adelanta.
«Opero en ρ = 0.95 porque la media da»
La media da pero la varianza y el transitorio no: cualquier rafaguita te lleva a 40 min. Pared = apuesta.
«La curva medida con T=30 es la curva»
Es transitorio + ruido dibujado. La curva se traza con fórmula o con sim en régimen por punto.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: tabla de la pared
S=2, ρ=0.5, 0.7, 0.85, 0.95. ¿Wq? ¿Cuánto suma +0.05 en cada zona?
# 2.0, 4.7, 11.3, 38.0: la última fila paga la hipérbola
for rho in [0.5, 0.7, 0.85, 0.95]:
print(rho, round(rho/(0.5*(1-rho)), 1))
Ver solución razonada
La tabla de la sección 02: +0.05 suma 1, 3, 9 e ∞ según la zona. Leer la pendiente es leer el riesgo.
Ejercicio 2: λ máx
M/M/1, μ=0.5, SLA Wq ≤ 5. Hallá λmáx por barrido y reportá ρ.
# lambda_max ≈ 0.36 (rho ≈ 0.71): ver bloque de la sección 05
print("El SLA corta en el codo: margen cero por diseño")
Ver solución
0.36/0.71: si λ crece 10% (0.40), Wq sube a 8 (+60%). Ese es el precio del codo.
Ejercicio 3: aplanar con c
λ=0.7, S=2 (a=1.4): ¿Wq con c=1, 2, 3? (Usá tu mmc del Tema 32.)
Ver una posible respuesta
# c=1: avalancha; c=2 (rho=0.7): ~1.9; c=3 (rho=0.47): ~0.3
print("Cada c aplana la curva: el SLA se compra con servidores")
De ∞ a 1.8 a 0.3: la curva cuenta lo que el promedio esconde.
09 · Síntesis
Ideas para recordar
- Wq(ρ) hiperbólica: plana, codo (0.7–0.85), pared.
- SLA horizontal → λmáx; margen = λmáx − λ.
- Más c aplana: mismo SLA admite más λ.
- En Python: barrer ρ con Erlang + bisección al SLA.
- Curva = régimen: ni T corto, ni percentiles, ni picos.
En el próximo tema buscaremos al culpable con la curva en mano: los cuellos de botella.