Skip to content

Croft

Read each pod's request rate through eBPF and its CPU pressure from cgroups, and scale on the requests themselves, without waiting for average CPU to climb.

Sees requests before CPU

A web server makes a steady number of syscalls per request, measured for each application. Their rate is the request rate, seen from inside the node, polled every 2 s.

eBPF, /proc and cgroups

eBPF for events no file keeps: syscalls, waits for a CPU, calls into the GPU driver. Files for the counters the kernel already keeps.

Knows what a task runs

Framework from the libraries a process loaded: PyTorch, TensorFlow, JAX, vLLM, Ray, Spark and more, from a JSON catalog.

A dataset per node

One JSON line per process per poll, rotated hourly into zstd segments, joined to experiments by container id.

croft architecture: inside the Linux kernel, eBPF programs and kernel files record syscall rates, bytes moved, CPU wait, connections, socket I/O, GPU use, CPU pressure and processes for your app’s pods. The croft collector reads them every 2 seconds and writes a dataset, serves Prometheus and feeds croft scale, which sets the number of pods.