CPU-Bound vs IO-Bound

Different optimisations.

Overview

CPU-bound versus IO-bound is the most fundamental performance distinction. CPU-bound workloads spend their time in computation (encoding, ML inference, math); the threads block on cycles, and parallelism (more cores, more processes) helps. IO-bound workloads spend their time in syscalls (network, disk); the threads block waiting for data, and concurrency (async, event loops, more threads) helps. Picking the wrong optimization produces wasted engineering effort that does not move the needle.

The approach

The practical approach is to profile first (CPU profile if you suspect compute, syscall trace if you suspect IO), match the tooling to the bottleneck (parallelism for CPU, concurrency for IO), recognise mixed workloads need hybrid approaches (async for IO with a thread pool for CPU work), and document the per-service bottleneck profile so future optimization targets the right surface.

Why this compounds

The CPU-vs-IO discipline compounds across services. Each correctly-matched optimization produces ongoing performance gains where the bottleneck actually was; each profile teaches the team where the bottleneck hides; the team builds intuition for performance work that pays off on every new service.

The CPU-vs-IO distinction is an engineering discipline that pays off across years. Nova AI Ops integrates with performance telemetry, surfaces bottleneck patterns, and supports the team’s optimization discipline.