Kubernetes / cloud workload placement
CloudBalance places your pods across nodes so the busiest node is provably as small as it can be — and returns a certificate that proves it. It answers at a million pods in about 13 milliseconds, at a scale where the free exact solvers run out of memory and return nothing.
What it does
CloudBalance is a placement engine you call over a one-line protocol. It covers the two problems a scheduler actually faces — and for both, it returns the provably minimum busiest node together with a certificate you can check.
Place N identical pods across K interchangeable nodes so every node's load stays
within [min, cap] and inside a balance tolerance, as evenly as
possible.
When a pod may only run on its eligible subset — a GPU pool, a zone, a taint, a license — find the placement whose busiest node is provably minimal, and certify whether every pod can be placed at all.
The certificate
Every answer carries feasible / makespan / lb / gap / exact.
makespan is a proven upper bound on the busiest node;
lb is a proven lower bound; when gap == 0 the
placement is proven optimal, and only then is exact set. The engine
cannot overclaim — on a hard input it reports the gap instead of pretending.
| bound path | makespan | lower bound | gap | verdict |
|---|---|---|---|---|
| cheap global bound | 500 | 58 | 442 | honest, but loose |
| certified bound | 500 | 500 | 0 | proven optimal — same placement, no extra solve |
Same placement in both rows — only the proof got tighter.
Measured, reproducible
Balanced allocation, wall-clock milliseconds, single-threaded. Compared against the default greedy scheduler, naive exact search, and the two free provably-optimal solvers teams rely on — OR-Tools CP-SAT and CBC. Every figure is reproducible from source.
| pods → nodes | bal | CloudBalance | greedy | brute-force | CBC | CP-SAT |
|---|---|---|---|---|---|---|
| 20 → 4 | ±3 | 0.067 | 0.021 | 0.018 | 7.14 | 21.5 |
| 100 → 10 | ±4 | 0.408 | 0.021 | 290.3 | 6.15 | 13.1 |
| 500 → 50 | ±2 | 0.214 | 0.034 | DNF | 7.08 | 36.3 |
| 1,000 → 100 | ±2 | 0.466 | 0.040 | DNF | 11.4 | 181 |
| 5,000 → 500 | ±2 | 13.4 | 0.283 | DNF | 102 | 1,833 |
| 10,000 → 1,000 | ±2 | 65.0 | 1.05 | DNF | 245 | 12,129 |
| 100,000 → 10,000 | ±1 | 1.47 | 12.5 | DNF | 19,685 | 10,350 |
| 1,000,000 → 100,000 | ±1 | 13.1 | 142 | OOM | OOM | OOM |
The headline: at 1,000,000 pods → 100,000 nodes, both provably-optimal solvers the market relies on (CP-SAT and CBC) run out of memory and return nothing. CloudBalance returns the optimal balanced allocation in about 13 ms — and along the way it enumerates every distinct optimal layout (5 to 501 of them per instance above), which the competitors never return.
| pods → nodes | CloudBalance | CP-SAT | CP-SAT result | speedup |
|---|---|---|---|---|
| 1,000 → 100 | 0.44 ms | 386.5 ms | optimal, makespan 10 | ~880× |
| 10,000 → 1,000 | 9.24 ms | 39,380 ms | optimal, makespan 10 | ~4,260× |
| 100,000 → 10,000 | 315.4 ms | 94,042 ms | timed out — returned 11 (worse) | ~298× |
| 1,000,000 → 100,000 | 11,342 ms | — | out of memory, nothing | ∞ |
Real clusters are mostly a handful of deployments repeated many times. On that shape CloudBalance returns the proven optimum in microseconds — and holds that speed as the cluster grows.
| total pods | CloudBalance (ms / makespan) | greedy (ms / makespan) | speed |
|---|---|---|---|
| 500 | 0.004 / 1 | 0.091 / 1 | 23× |
| 5,000 | 0.003 / 10 | 0.914 / 12 | 317× |
| 50,000 | 0.003 / 100 | 6.87 / 122 | 2,492× |
| 500,000 | 0.003 / 1,000 | 71.4 / 1,219 | 29,098× |
| 5,000,000 | 0.003 / 10,000 | 734.5 / 12,188 | 271,947× |
On these instances greedy also runs about 22% over the optimum — so here CloudBalance wins on both speed and quality.
Measured on an 11th-Gen Intel Core i5-1135G7 @ 2.40 GHz, 32 GB, Debian 13, gcc 14.2 -O2, single-threaded — while the competitors (Python 3.13 + OR-Tools 9.15.6755, CP-SAT and CBC) were given all 8 cores and the symmetry-break constraint. Benchmarked against the free solvers and the default greedy scheduler.
Will it work on your load?
Before you commit to a solve, CloudBalance profiles your cluster in a single pass — no
solve — and tells you the placement quality and speed you'll get on your real load.
Feed it a real export (kubectl get pods plus node labels) and it reports
what to expect, for free.
| modeled workload | pods | expected result |
|---|---|---|
| Kubernetes cluster | 9,293 | provably optimal, gap 0, in milliseconds |
| fully random (worst case) | 3,000 | certified answer with a tight bound |
Live engine
These call the real engine over your own gateway — one request in, one result out. Demo sizes are kept small so every call is instant; the million-pod figures above are measured results, served as data, not run live here.
One pass that tells you the placement quality and speed you'll get on your real load, before you spend a solve. This is the free pre-check — it never solves.
Place identical pods across interchangeable nodes as evenly as possible, and enumerate every distinct optimal layout. Runs the full headline instance live — try 1,000,000 pods across 100,000 nodes and it returns in well under a second, the same case OR-Tools and CBC run out of memory on.
Heterogeneous nodes: pods with eligibility to node groups. Returns the provably minimum makespan plus the full certificate, and stays fast even on the largest clusters.
What it does for you
The busiest node is what you pay to provision. CloudBalance makes it provably as small as possible — a measured 6–22% lower peak node than a good greedy packer — so a lower peak lets you provision less.
"Busiest node ≤ X, or the placement is rejected." That is a certificate a heuristic cannot give and CloudBalance can — something you can put in your own SLA to your own customer.
The optimal plan at a million-plus pods, in seconds to milliseconds — where CP-SAT and CBC run out of memory and return nothing at all.
Sub-millisecond on production-shaped load means you can re-optimize continuously inside a scheduling loop, instead of on a rare batch schedule.
Trustworthy in production
Every property below is verified against the shipped binary — for the SRE, platform, finance, and sovereign on-prem buyer who has to defend what runs in the critical path.
ldd shows libc only. Nothing transitive to vendor, audit, or patch.
A single pure-C binary with no third-party code in the trust boundary — your security team can sign off on the whole thing.
Opens an AF_UNIX socket at 0600 only — no network syscalls anywhere, and it writes no files. It cannot phone home.
Integer decision logic, zero floating point anywhere. Same input, same output, on every box — cacheable and sign-off-able.
Pure C, no garbage collector, no JIT, no interpreter. No p99 spike from a GC pause or a cold import.
It answers at scales where CP-SAT and CBC hit their memory ceiling and return nothing.
Every response carries its own optimality certificate. Trust the result without re-solving it.
No session, no handshake, no schema — a single request from any language.
Profile your real load and see the engine and cost you'll get before spending a solve.
Every release ships green across an independent, cross-checked test suite, including randomized fuzzing.
Honest scope
We state the boundary plainly. Provably optimal applies to unit-demand placement — balanced identical pods, and eligibility. Two neighbouring problems are genuinely hard and out of scope.
gap == 0 proves it.exact is never set unless the gap actually closes.vs alternatives
Run a pilot
Export your pods and node labels, and we'll profile the structure and show you the engine and cost you'd get, before any solve. If it fits, we run a pilot on your real load. No accounts, no checkout — a conversation and a measurement.
Start a pilot conversationNous Research Centre · cloudbalance@kairoico.com