Host & capability probes — see the machine, not just the node

Host & capability probes — see the machine, not just the node #

Every node now reports what its host actually is and what it can actually do, on GET /_node/_local under host: the OS distribution and kernel, NUMA topology (node count + per-node CPU lists and distances), NIC inventory with negotiated link speeds, the data disk’s bus (NVMe or not) with its I/O scheduler and atime policy, the container and seccomp environment, the DMI platform, transparent-hugepage state — and the resource ceilings: fd limit vs usage, mmap count vs max_map_count, swap, conntrack fill, TCP sysctls, and cgroup CPU/memory quotas with throttle counts. The stats API adds a steal_percent trend — the noisy-neighbor line on shared tenancy.

The headline is host.io_uring. Pizza’s engine runs on a monoio Fusion runtime: it uses io_uring where the kernel allows and silently falls back to the legacy driver where it doesn’t — container seccomp profiles, gVisor and some cloud sandboxes deny the io_uring syscalls. Functionality is identical on the fallback; the performance path is not. The probe reports the driver the process really runs on (io_uring / legacy) plus the reason when it fell back:

curl -s http://127.0.0.1:28000/_node/_local | jq .host
{
  "distribution": "Ubuntu 22.04.4 LTS",
  "kernel_version": "5.15.0-105-generic",
  "container": "docker",
  "seccomp": "filter",
  "numa": { "nodes": 2 },
  "max_link_speed_mbps": 25000,
  "file_descriptors": { "limit_soft": 1048576, "used": 214 },
  "mappings": { "count": 1987, "limit": 65530 },
  "cgroup": { "version": 2, "cpu_quota_cores": 4, "cpu_nr_throttled": 0 },
  "cpu_features": ["avx", "avx2", "fma", "sse4.2"],
  "io_uring": { "driver": "io_uring", "status": "enabled" },
  "storage": { "nvme": true, "bus": "nvme", "media": "ssd", "atime": "noatime" }
}

The console surfaces all of it: Infrastructure → Hosts shows a facts strip per machine (OS/kernel, NUMA ×N, NVMe/SSD/HDD, link ceiling, container, io_uring state) with amber chips for the actionable findings — swap on, a cgroup CPU quota below the engine’s thread count, CPU throttling, fd/mmap/conntrack above 80%, a latency-hostile cpufreq governor, elevated steal. Each node’s Overview tab has Host / Limits / Network / Runtime-capability panels. On an io_uring fallback the panel turns amber, names the likely cause, and hands you the one-command verification:

strace -f -e trace=io_uring_setup,io_uring_enter -p <pid>

io_uring calls under load = the fast path is live. See the deployment guide for the full checklist — including the new host-checks table with the fix for every amber chip.

Calendar September 30, 2026
Edit Edit this page