Runnable companions to the tutorial.
Every claim made in the tutorial body has a demo behind it.
Each demo is a self-contained Podman project with its own
./demo.sh, its own Containerfile(s), and the
CMake / Conan plumbing to build hermetically. Read the
matching tutorial section for context, then run the demo
from its directory.
Demos
Each card links to the demo's page on this site (a rendering of the README with cross-references), and each page links to the source on GitHub. Each demo also stands alone — run it without reading the tutorial first if you'd rather poke at it directly.
Image strategy & PGO
UBI multi-stage vs UBI-micro vs single-stage-naive, plus a two-pass PGO build. hey drives load against each variant; the demo prints a p50/p95/p99 table side by side.
STL & layout
unordered_map vs map vs flat_map vs vector with a linear scan; Google Benchmark median timings under a baseline and a 128 MB cgroup memory cap, side-by-side.
io_uring & async gRPC
Direct liburing, an Asio io_uring executor, and an async gRPC server — three servers in one binary. Wired into the LGTM observability stack; ghz drives load and the demo writes results to disk.
Observability stack
A C++ HTTP service instrumented with OpenTelemetry grafana/otel-lgtm. Optional bpftrace probes add the kernel-side dimension above the application telemetry.
Noisy neighbor isolation
Twin-tenant scenario: a latency-sensitive HTTP service next to a CPU/memory-bound noisy neighbor. Compares baseline, unisolated, cpu.weight, and cpuset.cpus pinning.
Memory & allocators
Side-by-side latency comparison of std::allocator, std::pmr::synchronized_pool_resource, and mimalloc on an allocator-stressful workload. Layered with MAP_HUGETLB and cgroup memory.high pressure. OTel-instrumented; histograms reach the LGTM stack.
Quality & ABI pipeline
cppcheck and clang-tidy as build stages, gtest+gmock suite, abidiff against a checked-in ABI reference, plus a gdbserver sidecar for live debugging. Hermetic Conan 2 lockfile + CMake presets throughout.
Running every demo
Clone the repo and invoke each demo.sh from its
directory. The scripts assume Podman 5.x rootless and a
handful of host tools (hey, jq,
curl) — see §1
Prerequisites for the full list.
git clone https://github.com/patterncatalyst/cpp-container-optimization-tutorial.git
cd cpp-container-optimization-tutorial/examples/demo-01-image-strategy
./demo.sh
# ... or run them all in sequence:
cd cpp-container-optimization-tutorial
./scripts/test-all-demos.sh
If a demo fails
Most failures are kernel-feature gaps (io_uring
multishot needs ≥ 5.19) or rootless cgroup limits. The
reconciliation plan
tracks every demo's verification state per host class. If
your host isn't covered, an entry there is the right
contribution.