Skip to the content.

vLLM Xeon CPU Tuning Matrix

Full reference for environment variables and CLI flags relevant to vLLM CPU serving on Intel Xeon, with guard rails. Use alongside SKILL.md Procedure 3.

Environment Variables

Variable Recommended Guidance Why it matters
VLLM_CPU_KVCACHE_SPACE 2040 (GiB) Per NUMA node. Increase for more concurrency / longer context; must fit in node-local memory. Halve if the server OOMs or pages. KV cache is the dominant CPU memory consumer; under-sizing throttles batching, over-sizing causes paging or OOM.
VLLM_CPU_OMP_THREADS_BIND auto Binds OpenMP workers to NUMA-local cores. Manual ranges look like 0-31\|32-63 (one range per NUMA node). Verify with numastat -p <server_pid>. Cross-NUMA memory traffic kills decode throughput.
VLLM_CPU_NUM_OF_RESERVED_CPU 1 Reserves cores for the API server, tokenization, networking, logging, and OS work. Raise on noisy hosts. Prevents OS / serving overhead from preempting OMP workers.
VLLM_CPU_SGL_KERNEL 0 (try 1 for low-latency SLM) Experimental x86 small-batch kernels. Requires AMX, BF16 weights, and compatible shapes. Can reduce latency for small-batch serving, but is shape-sensitive.
HF_TOKEN (secret) Required for gated Hugging Face models. Authentication.

CLI Flags (vllm serve / Docker CMD)

Flag Recommended Guidance Why it matters
--dtype=bfloat16 always on AMX-capable Xeon Enables AMX BF16 kernels — the preferred CPU dtype. Largest single performance lever on 4th Gen+ Xeon.
--tensor-parallel-size default for single NUMA; N for N NUMA nodes Keeps shards local to NUMA memory. 6 is currently unsupported on CPU. Wrong value forces cross-NUMA traffic or fails to start.
--max-num-batched-tokens 2048 online / 4096 offline Cap on batched tokens per iteration. Higher → better prefill throughput, worse TTFT. Tradeoff between TTFT and prefill throughput.
--max-num-seqs 128 online / 256 offline Cap on concurrent sequences. Higher → better decode throughput, worse ITL. Tradeoff between ITL and decode throughput.
--block-size leave default until baseline is recorded Tune only after KV cache / OMP / batched-tokens are stable. Interacts with KV cache layout; change last.

Guard Rails