Start at the transport layer. HTTP/2 carried 51.2% of reported web traffic at the close of Q2 2026, more than HTTP/1.x or HTTP/3. One connection may contain many concurrent streams, so connection count alone is too blunt for agent scheduling.
Empecemos por la capa de transporte. HTTP/2 transportó el 51,2% del tráfico web reportado al cierre del segundo trimestre de 2026, más que HTTP/1.x o HTTP/3. Una conexión puede contener muchos streams concurrentes, así que contar conexiones no basta para programar agentes.
These terms mark the layers the scheduler must understand. No single metric spans them all. The central design problem is joining their signals without mistaking reservation, activity, pressure, and recoverability for the same thing.
Estos términos marcan las capas que el scheduler debe entender. Ninguna métrica las cubre todas. El problema central de diseño es unir sus señales sin confundir reserva, actividad, presión y capacidad de recuperación.
Physical infrastructure alone cannot reveal whether agent workloads are computing, waiting, or under runtime pressure.
La infraestructura física por sí sola no revela si las cargas de agentes están computando, esperando o bajo presión del runtime.
Agent Sandbox reports provisioning personal Hermes Agents in about 2 seconds. A separate incident used 45 idle seconds to scale down, then reclaimed an H100 90 seconds later. That decision erased a 180k-token job after 28 minutes, proving that network silence and completed work are not the same state.
Agent Sandbox informa de un aprovisionamiento de agentes Hermes personales en unos 2 segundos. En otro incidente, 45 segundos sin tráfico activaron la reducción y una H100 se recuperó 90 segundos después. La decisión eliminó una tarea de 180 mil tokens tras 28 minutos, lo que demuestra que el silencio de red y el trabajo terminado no son el mismo estado.
Nomad already exposed CPU and memory demand from blocked or unplaced evaluations. Issue #584 reported that the autoscaler plugin did not consume those 2 metrics. A separate issue described missing new-server capacity accounting, reinforcing the same lesson: telemetry must reach the scaling decision.
Nomad ya exponía demanda de CPU y memoria de evaluaciones bloqueadas o sin ubicación. El issue #584 informó que el plugin de autoescalado no consumía esas 2 métricas. Otro issue describió capacidad de servidores nuevos no contabilizada, reforzando la misma lección: la telemetría debe llegar a la decisión de escalado.
The platform moved thousands of nodes to Kubernetes 1.22, then added disk and network throttling. Default scheduling did not capture the I/O pressure causing noisy-neighbor problems. Agent-aware placement needs those pressure signals before it adds density.
La plataforma migró miles de nodos a Kubernetes 1.22 y después añadió límites de disco y red. El scheduling estándar no capturaba la presión de E/S que causaba problemas entre vecinos. La asignación consciente de agentes necesita esas señales antes de aumentar la densidad.
The report described 8 healthy Machines, but all traffic reached one Machine while another stayed idle. The problem was not a lack of capacity. It was a routing decision that could not see enough of the application state.
El reporte describió 8 Machines saludables, pero todo el tráfico llegó a una sola mientras otra permaneció inactiva. El problema no era la falta de capacidad. Era una decisión de routing que no podía ver suficiente estado de la aplicación.
Fly Proxy added WebSocket GoAway frames before stopping or suspending Machines. That gives clients time to reconnect elsewhere. The change handles network lifecycle more safely, but application health still requires deeper telemetry.
Fly Proxy añadió tramas WebSocket GoAway antes de detener o suspender Machines. Eso da tiempo a los clientes para reconectarse en otro lugar. El cambio mejora la seguridad del ciclo de red, pero la salud de la aplicación todavía exige telemetría más profunda.
The service reported only 30% CPU, which looked comfortable. Yet p99 latency reached 200 milliseconds instead of 20. Scheduler run-queue delay was the hidden wait, and ordinary CPU profiling did not expose it.
El servicio reportó solo 30% de CPU, una cifra que parecía cómoda. Sin embargo, la latencia p99 llegó a 200 milisegundos en vez de 20. La espera en la cola del scheduler estaba oculta y el perfilado normal de CPU no la mostró.
The endpoint looked healthy, and GPU utilization reached 95%. Users still waited 11 seconds for the first token. Prefix-cache head-of-line blocking made aggregate accelerator use a poor proxy for user-visible delay.
El endpoint parecía saludable y la utilización de GPU llegó al 95%. Aun así, los usuarios esperaron 11 segundos por el primer token. El bloqueo de cabecera en la caché de prefijos convirtió el uso agregado del acelerador en un mal indicador del retraso visible.
CPython can reclaim unreachable objects without returning equivalent resident memory to the operating system. Go's default GOGC value of 100 is also easy to misread because it targets heap growth, not a fixed ceiling. Placement must use operating-system pressure and runtime behavior together.
CPython puede recuperar objetos inalcanzables sin devolver memoria residente equivalente al sistema operativo. El valor predeterminado de GOGC, 100, también puede confundir porque regula el crecimiento del heap, no un techo fijo. La asignación debe combinar la presión del sistema operativo con el comportamiento del runtime.
Firecracker publishes a startup target below 125 ms. Separately, the architecture distinguishes 2 state layers, durable workflow state and sandbox machine state, which need explicit identity and checkpoint links.
Firecracker publica un objetivo de arranque menor de 125 ms. Por separado, la arquitectura distingue 2 capas de estado, el estado durable del workflow y el estado de la máquina sandbox, que necesitan vínculos explícitos de identidad y checkpoints.
At the assumed 3 GB/s, reading 1 GiB takes about 0.33 seconds. Reading 8 GiB takes about 2.67 seconds. Real restoration can be slower because storage contention, touched pages, lazy loading, and cache rewarming add more work.
Con los 3 GB/s supuestos, leer 1 GiB tarda unos 0,33 segundos. Leer 8 GiB tarda unos 2,67 segundos. La restauración real puede ser más lenta porque la contención, las páginas tocadas, la carga perezosa y el recalentamiento añaden trabajo.
Linux fork initially lets 4 children share copy-on-write pages. The modeled benefit fades as each branch changes different pages. At 90% changed pages, the example adds about 14.4 GiB beyond the shared 4 GiB image.
fork en Linux permite inicialmente que 4 procesos hijos compartan páginas copy-on-write. El beneficio modelado disminuye cuando cada rama cambia páginas distintas. Con 90% de páginas cambiadas, el ejemplo añade unos 14,4 GiB además de la imagen compartida de 4 GiB.
The 2023 vLLM paper reported up to 24 times the throughput of Hugging Face Transformers on selected workloads. That maximum made KV-cache efficiency economically important. It does not promise the same result for every model, workload, release, or deployment.
El artículo de vLLM de 2023 reportó hasta 24 veces el throughput de Hugging Face Transformers en cargas seleccionadas. Ese máximo volvió económicamente importante la eficiencia de la caché KV. No promete el mismo resultado para cada modelo, carga, versión o despliegue.
The scheduler earns its complexity only through a controlled comparison. Replay identical trajectories at 125, 250, 500, 750, and 1,000 agents. Measure completions, tail latency, pressure, failures, isolation, and fully loaded cost, then compare every result with a competently tuned conventional baseline.
El scheduler solo justifica su complejidad mediante una comparación controlada. Reproduce trayectorias idénticas con 125, 250, 500, 750 y 1.000 agentes. Mide terminaciones, latencia de cola, presión, fallos, aislamiento y costo total, y compara cada resultado con una línea base convencional bien ajustada.
Connection count hides the activity and pressure inside each HTTP/2 stream. The scheduler needs signals from networks, runtimes, memory, and model serving.
Key findings
Firecracker published design targets below 125 milliseconds startup and below 5 MiB memory overhead per microVM. github.com
Four branches dirtying 10%, 50%, or 90% of a 4 GiB image would add approximately 1.6, 8.0, or 14.4 GiB.
The 2023 vLLM paper reported up to 24 times higher throughput than Hugging Face Transformers on selected workloads. vllm.ai
After 45 idle seconds, KEDA scaled from one replica to zero; an H100 was reclaimed 90 seconds later, erasing a 180k-token, 28-minute job. tianpan.co
A healthy vLLM endpoint and 95% GPU utilization coincided with an 11-second time to first token caused by prefix-cache head-of-line blocking. ingero.io
Linux PSI reports CPU, memory, and I/O stall pressure experienced by workloads.
At an assumed 3 GB/s, sequentially reading 1, 4, and 8 GiB takes approximately 0.33, 1.33, and 2.67 seconds.
Linux fork initially shares copy-on-write pages, so four children do not immediately require four full physical copies.
A warm-prefix destination can be slower when its queue delay exceeds the prefill computation saved.
Known public sources do not provide a reliable percentage of Devin or Replit agent environments held warm.
Dollars per 1,000 successful agent steps is a defensible unit-economic KPI when success and included costs are defined consistently.
Agents per server is unsafe as a standalone KPI because higher occupancy can coincide with worse completions, latency, or recovery.
The argument
Fast provisioning does not make a short idle timeout safe.
Publishing capacity signals matters only when the autoscaler consumes them.
A large platform added disk and network throttling after moving thousands of nodes to Kubernetes 1.22.
Eight healthy Machines did not prevent traffic from concentrating on one.
On April 9, 2026, Fly Proxy began warning WebSocket clients before stopping Machines.
Low CPU use concealed a 10-fold increase in tail latency.
This research is published in English and Spanish. Ver en español
La investigación detrás de esta presentación
El conteo de conexiones oculta la actividad y presión dentro de cada stream HTTP/2. El scheduler necesita señales de redes, runtimes, memoria y servicio de modelos.
Hallazgos clave
Firecracker publicó objetivos de arranque inferiores a 125 milisegundos y sobrecarga menor a 5 MiB por microVM. github.com
Cuatro ramas que ensucian 10%, 50% o 90% de una imagen de 4 GiB añadirían aproximadamente 1,6, 8,0 o 14,4 GiB.
El artículo de vLLM de 2023 reportó hasta 24 veces más throughput que Hugging Face Transformers en cargas seleccionadas. vllm.ai
Tras 45 segundos sin tráfico, KEDA redujo de una réplica a cero; 90 segundos después se recuperó la H100 y desapareció una tarea de 180 mil tokens y 28 minutos. tianpan.co
Un endpoint saludable de vLLM y una utilización de GPU del 95% coincidieron con 11 segundos hasta el primer token por bloqueo de cabecera en la caché de prefijos. ingero.io
Linux PSI informa presión de bloqueo experimentada por cargas en CPU, memoria y E/S.
Con 3 GB/s supuestos, leer secuencialmente 1, 4 y 8 GiB toma aproximadamente 0,33, 1,33 y 2,67 segundos.
fork en Linux comparte inicialmente páginas copy-on-write, por lo que cuatro hijos no requieren de inmediato cuatro copias físicas completas.
Un destino con prefijo caliente puede ser más lento cuando su cola supera el cómputo de prefill ahorrado.
Las fuentes públicas conocidas no ofrecen un porcentaje confiable de entornos de Devin o Replit mantenidos calientes.
Dólares por 1.000 pasos agénticos exitosos es un KPI defendible cuando éxito y costos incluidos se definen consistentemente.
Agentes por servidor es un KPI inseguro por sí solo porque mayor ocupación puede coincidir con peores terminaciones, latencia o recuperación.
El argumento
El aprovisionamiento rápido no vuelve seguro un timeout corto de inactividad.
Publicar señales de capacidad solo importa cuando el autoescalador las consume.
Una plataforma grande añadió límites de disco y red tras migrar miles de nodos a Kubernetes 1.22.
Ocho Machines saludables no impidieron que el tráfico se concentrara en una.
El 9 de abril de 2026, Fly Proxy empezó a avisar a clientes WebSocket antes de detener Machines.
El bajo uso de CPU ocultó un aumento de 10 veces en la latencia de cola.
Esta investigación se publica en inglés y español. Read in English