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.