01 · Punto de partida
Tu territorio, tu laboratorio
Ciencia (Tema 46) e industria (Tema 47) piden prestado el ciclo del curso. En informática el préstamo es directo: sos programador simulando sistemas de programas. Latencia de un servidor, pérdida de paquetes, peatones de un videojuego, un agente que aprende a esquivar: todo son estados, eventos y azar con el vocabulario de los Temas 1–31.
La ventaja es que medir es barato (logs de sobra) y la trampa es creerse que el simulador es el sistema: verificar (Tema 35) y validar contra tráfico real (Tema 36) valen doble aquí.
- ¿Qué evento y qué estado tiene tu sistema de software?
- ¿Contra qué tráfico o log real se valida?
- ¿Qué escenario de carga o falla se prueba primero?
- ¿El modelo corre más rápido que la realidad que estudia?
02 · Mapa de aplicaciones
Cuatro sistemas de software
Redes
Paquetes, retardos y pérdidas: throughput y cola del enlace antes de tender cable.
Sistemas
Servidores con workers finitos: latencia y errores bajo carga (el banco del Tema 1, en silicio).
Juegos e IA
Mundos y agentes que prueban políticas: peatones, tráfico, recompensas, multitudes.
| Sistema | Pregunta típica | Modelo mínimo |
|---|---|---|
| Red | ¿Aguanta el enlace el pico? | Paquetes contra capacidad con pérdida |
| Servidor | ¿Cuántos workers para p95 < 200 ms? | Cola con atención finita |
| Videojuego | ¿Se atasca la multitud en la puerta? | Agentes con reglas locales |
| IA | ¿Qué política aprende más rápido? | Episodios simulados con recompensa |
03 · Tres patrones
Lo que se repite en software
- 1Carga contra capacidad.
Llegadas versus atención finita: latencia, cola y pérdida. El pico manda, no el promedio.
- 2Falla inyectada.
Caídas, retardos y reintentos que en producción serían incident: aquí son escenarios.
- 3Agentes con reglas.
Muchos actores simples que producen conducta global: tráfico, multitudes, mercados.
Probar en producción
Real y riesgoso
El pico de verdad con usuarios de verdad: mide exacto una vez y factura el incidente.
Simular la carga
Barato y repetible
Miles de picos con iguales semillas: se dimensiona antes y se valida con logs después.
- Throughput
- Pedidos o paquetes atendidos por segundo.
- Latencia p95
- Tiempo que solo el 5% peor supera: el que siente el usuario.
- Pérdida
- Fracción que el sistema descarta por falta de capacidad.
- Episodio
- Corrida de un agente con recompensa acumulada.
04 · Protocolo
El método en cinco pasos
Se miden logs reales, se modela la cola o la red, se simula la carga pico, se inyectan fallas y se dimensiona capacidad. El Tema 49 lo practicará con tráfico y servidores.
05 · En Python
Un servidor en veinte líneas
Llegadas por paso contra workers finitos: lo no atendido espera y la espera se mide.
Python en tu navegador. Colas y percentiles con stdlib puro.
def servidor(llegadas, workers):
cola, espera, h = 0, 0, []
for l in llegadas:
cola += l
atiende = min(cola, workers)
cola -= atiende
espera += cola
h.append(cola)
return h, espera
print(servidor([5, 8, 3, 9, 2], 6))
El p95, no el promedio
El percentil 95 se calcula ordenando: lo que siente el usuario impaciente.
def p95(xs):
s = sorted(xs)
k = min(len(s) - 1, int(0.95 * len(s)))
return s[k]
print(p95([120, 90, 110, 2000, 100, 95, 105]))
06 · Exploración
Laboratorio: ¿cuántos workers?
Un servidor con pico de llegadas ajustable y workers a elección. La curva muestra la cola paso a paso; los números, el pico de cola y el p95 de espera. Dimensioná sin pagar el incidente.
Workers contra pico
cola = llegadas − atención
Con pico 9 y 6 workers, la cola se vacía entre oleadas.
Curva de cola en 24 pasos con dos oleadas de pico. Barras de workers: capacidad por paso.
Preguntas para explorar
- Con pico 9 y 6 workers, ¿la cola se vacía? ¿Y con 4 workers?
- Subí el pico a 14 con 6 workers. ¿El p95 se dispara aunque la media «aguante»?
- ¿Por qué la semilla cambia los números pero no la conclusión dimensionada?
Ver respuestas sugeridas
- Con 6 se vacía entre oleadas; con 4 la cola crece sin cota: el sistema no alcanza el régimen.
- Sí: la media esconde la oleada y el p95 la delata. Dimensionar por media es la trampa del Tema 45.
- Porque el azar mueve réplicas, no capacidad: bien dimensionado aguanta todas las semillas honestas.
07 · Comprensión
Confusiones frecuentes
«El simulador es el sistema»
No: es un modelo del sistema. Se valida contra logs reales o es ficción con sintaxis correcta.
«La media de latencia alcanza»
El usuario siente el p95 y la cola, no la media. Dimensionar por media colapsa en pico.
«Más workers siempre es mejor»
Hasta el cuello real (base de datos, red): después solo suman costo y contención (Tema 40).
«Probar en producción es más real»
Es más real y más caro: el incidente lo pagan usuarios. Simular primero, canary después.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: correr el servidor
Simulá estas llegadas con 6 workers. ¿Queda cola al final?
def servidor(llegadas, workers):
cola = 0
for l in llegadas:
cola = max(0, cola + l - workers)
return cola
print(servidor([5, 8, 3, 9, 2], 6))
Ver solución razonada
Da 0: picos de 8 y 9 generan cola transitoria, pero 6 workers la drenan. Con 4 workers quedaría debiendo.
Ejercicio 2: calcular el p95
Calculá el p95 de estas latencias. ¿Qué dice que la media esconde?
xs = [120, 90, 110, 2000, 100, 95, 105]
print("media:", round(sum(xs) / len(xs)))
s = sorted(xs)
print("p95:", s[int(0.95 * len(s))])
Ver solución
Dan media: 374 y p95: 2000: un pedido en siete arruina la experiencia y la media lo diluye.
Ejercicio 3: dimensionar por pico
Buscá los workers mínimos que vacían este pico sin dejar cola.
Ver una posible respuesta
def resto(workers):
cola = 0
for l in [5, 8, 3, 9, 2]:
cola = max(0, cola + l - workers)
return cola
for w in [4, 5, 6]:
print(w, resto(w))
Dan 7, 2 y 0: recién con 6 la cola se vacía. Dimensionar es buscar ese cruce con p95 aceptable.
09 · Síntesis
Ideas para recordar
- Informática simula eventos, colas y agentes: tu vocabulario de todos los días.
- Se dimensiona por pico y p95, nunca por media cómoda.
- Fallas inyectadas en el modelo evitan incidentes en producción.
- Logs reales validan; semillas fijas hacen repetible la carga.
- En Python: bucles de cola y percentiles ordenados con stdlib.
En el próximo tema, el zoológico completo: ejemplos de sistemas simulables.