PhilippTheServer

performance

Finding the actual bottleneck rather than the one you assumed.

  1. fsGroupChangePolicy: OnRootMismatch and the setgid Invariant That Makes It Sound

    Pod stuck in ContainerCreating from fsGroup recursive chown: fsGroupChangePolicy: OnRootMismatch, and why the setgid bit on the volume root makes it safe.

  2. Merging Concurrent Polls Without Ever Serving a Half-Built Graph

    atomic.Pointer swap of a fully merged snapshot so concurrent polls never serve a torn read, a bug go test -race cannot see. errgroup with timeouts.

  3. fsGroup Recursive chown Hangs on Large Volumes

    fsGroupChangePolicy: OnRootMismatch stops kubelet re-chowning every file on each mount. Why fsGroup pods restart slowly, and when fsGroupPolicy None applies.

  4. Rootless BuildKit: What fuse-overlayfs Costs on a Cold Cache

    Rootless BuildKit with --oci-worker-snapshotter=fuse-overlayfs needs no --privileged, but cold-cache builds pay a FUSE round-trip per file. Measuring it.

  5. Running Ceph on Commodity Hardware: Failure Domains and the Four Things That Bite

    ceph osd df --format json: alert on the fullest OSD, not the mean, because one full OSD stops writes. Plus CRUSH failure domains and monitor quorum.

  6. Serving Several Local Models on One GPU with On-Demand Loading

    llama-swap config.yaml with cmd, ttl and healthCheckTimeout: loading llama-server models on demand and unloading idle ones on a single GPU.

  7. Sizing One GPU for Local LLM Inference: VRAM, Quantisation and KV Cache

    llama-bench -ctk q8_0 -ctv q8_0 vs f16: estimating VRAM for GGUF weights plus a KV cache that grows with context, and catching slow KV cache types.

  8. Preventing Overselling with a Database CHECK Constraint

    violates check constraint "stock_not_negative": why check-then-decrement oversells under READ COMMITTED, and a single conditional UPDATE that cannot.

  9. A Shared Multi-Stage Base Image for a C++ Service Fleet

    vcpkg install pistache rebuilt in every service Dockerfile: a shared, versioned multi-stage base image that compiles C++ dependencies once for the fleet.

  10. Migrating Redis Consumers from Python to C++ on Constrained Hardware

    redis-plus-plus xreadgroup times out before its block timeout: set socket_timeout to 0. Replacing idle Python Redis stream consumers with C++.

  11. Sizing Redis maxmemory Against a Stream Trim Threshold

    OOM command not allowed when used memory exceeds maxmemory on XADD MAXLEN: why the stream never trims itself, and why a standalone XTRIM still works.

  12. Tuning Ceph Recovery: The Trade Between Degraded Time and Client Latency

    osd_max_backfills does nothing under mClock unless osd_mclock_override_recovery_settings is set. Choosing and measuring osd_mclock_profile for recovery.

  13. Capacity Planning Against the Fullest OSD, Not the Average

    Ceph full_ratio applies per OSD: one OSD at 95% stops writes while ceph df shows 70%. Alerting on the fullest OSD in ceph osd df, plus the upmap balancer.

  14. CRUSH Hybrid Rules: Pinning the Read Primary to SSD Without Rebalancing

    step take default class ssd, chooseleaf firstn 1, then class hdd firstn 0: a CRUSH rule with an SSD primary and HDD replicas, tested with crushtool.

  15. A Layered Storage Benchmark: Isolating Device, Network and Protocol Bottlenecks

    fio, iperf3, rados bench, then fio on RBD: benchmarking device, network, Ceph protocol and full stack separately to find which layer caps throughput.

  16. Multi-Stage Docker Builds: Shipping a Runtime Without the Toolchain

    COPY --from=build with CGO_ENABLED=0 and distroless/static: a multi-stage Dockerfile taking a Go image from 812MB to 24MB, and the no-shell trade-off.

All topics · All writing