
Hybrid Core Allocation: From Overallocation to Reliable Sharing
4/21/2026
This post details the implementation of a hybrid CPU allocation model in Uber's Odin system, combining dedicated and shared cores for stateful containers. It introduces the use of Linux cpusets and cpu.shares for dynamic allocation and fair contention handling, with a specific formula for calculating cpu.shares. The post also discusses NUMA considerations for CPU and memory affinity, the host agent's strategy for balancing shared and dedicated cores across NUMA nodes, and the implementation of in-place vertical scaling. It highlights the need to bridge Kubernetes gaps for hybrid core allocation and identifies limitations such as host-level decision-making and potential CPU allocation fragmentation.