Practical articles on AI, DevOps, Cloud, Linux, and infrastructure engineering.
Load average counts more than CPU demand, so a high number needs a diagnostic path before you reach for a fix.
When a process hits its file descriptor ceiling everything breaks at once; here is how to find the real limit and raise it correctly.
Track down what owns a busy port, decide whether to kill it or rebind, and stop TIME_WAIT from blocking your restart.
A field guide to reclaiming Linux disk space when df reports full but du can't find where the bytes actually went.
We had 140 engineers with 300 static public keys scattered across authorized_keys files nobody could audit. Moving to SSH certificates with short TTLs made access reviewable again.
Our proxy topped out at 40k connections while the CPU sat half-idle. The bottleneck was kernel defaults tuned for 2009, not the hardware.
When a service is slow and every dashboard looks green, bpftrace lets you watch the kernel directly. These one-liners found our tail latency.
A container with a 2-core limit was pegged at 100% CPU yet running slow. The throttling counter told the real story, and it wasn't the number we set.
Free memory is a lie and load average doesn't see memory stalls. How Pressure Stall Information gives you a direct, early signal of memory contention — and how we wired it into alerts and autoscaling.
When the service is slow and the network is suspect, these are the tools we reach for, in this order, with the exact flags that find the answer.
io_uring replaces epoll for new high-throughput services. The patterns that earn their place, the gotchas in older kernels, and where we'd still pick epoll.
cpu.shares vs cpu.cfs_quota_us vs memory.max — the cgroup mechanics behind Kubernetes resource limits, and the surprises that explain the weird symptoms you've seen.