What the record says
kernel-slab-recovery-rollout.json closed the 2026-08-27 OOM incident as a kernel defect:
What is happening now
Same fleet, still on 6.8.0-138, 25 hours of uptime:
| host |
SUnreclaim |
growth |
| gha-runner-1 |
2156 MiB |
+48 MiB/h |
| gha-runner-2 |
1976 MiB |
+31 MiB/h |
| gha-runner-3 |
2212 MiB |
+28 MiB/h |
| gha-runner-4 |
2066 MiB |
+25 MiB/h |
| gha-services |
112 MiB |
+0 MiB/h |
Rates are from system_memory_usage{state="slab_unreclaimable"} over a 0.5–0.6 h window, not from spot samples.
The kernel upgrade slowed the leak; it did not remove it. On a fixed kernel a fixed defect should not grow at all.
The services host is the control
gha-services runs the same kernel and the same fleet software but no worker containers, and it is flat at 112 MiB. Every host that churns containers grows; the one that does not, does not. That points at container create/destroy rather than at the kernel in isolation.
Ruled out this round: AppArmor profile accumulation. 119 incus profiles are the nested set of the one live container, and only one distinct container name appears across all loaded profiles — profiles are being unloaded correctly.
Also unexplained: /proc/slabinfo accounts ~1020 MiB by pages while Slab: reports 2762 MiB, so most of the growth is not attributable to a named cache.
Urgency
Not an emergency. At the measured rates the fleet re-enters the 10 GiB region in roughly 7 days (runner-1 first). The kernel_slab_unreclaimable ticket fired at 2 GiB exactly as designed, with a week of runway.
The documented remedy still works and is cheap: pressure-close, natural drain, rolling reboot. What is missing is a reason it should be needed weekly on a kernel recorded as carrying the fix.
Suggested next step
Capture slab evidence before the next reboot resets it — slabtop -o, /proc/slabinfo, /sys/kernel/slab/*/objects — so the growing cache can be named. Every reboot so far has destroyed the evidence that would identify it.
https://claude.ai/code/session_01HMPUfMTrzqwrcgDCFvjnFG
What the record says
kernel-slab-recovery-rollout.jsonclosed the 2026-08-27 OOM incident as a kernel defect:6.8.0-1376.8.0-866.8.0-138What is happening now
Same fleet, still on
6.8.0-138, 25 hours of uptime:Rates are from
system_memory_usage{state="slab_unreclaimable"}over a 0.5–0.6 h window, not from spot samples.The kernel upgrade slowed the leak; it did not remove it. On a fixed kernel a fixed defect should not grow at all.
The services host is the control
gha-servicesruns the same kernel and the same fleet software but no worker containers, and it is flat at 112 MiB. Every host that churns containers grows; the one that does not, does not. That points at container create/destroy rather than at the kernel in isolation.Ruled out this round: AppArmor profile accumulation. 119 incus profiles are the nested set of the one live container, and only one distinct container name appears across all loaded profiles — profiles are being unloaded correctly.
Also unexplained:
/proc/slabinfoaccounts ~1020 MiB by pages whileSlab:reports 2762 MiB, so most of the growth is not attributable to a named cache.Urgency
Not an emergency. At the measured rates the fleet re-enters the 10 GiB region in roughly 7 days (runner-1 first). The
kernel_slab_unreclaimableticket fired at 2 GiB exactly as designed, with a week of runway.The documented remedy still works and is cheap: pressure-close, natural drain, rolling reboot. What is missing is a reason it should be needed weekly on a kernel recorded as carrying the fix.
Suggested next step
Capture slab evidence before the next reboot resets it —
slabtop -o,/proc/slabinfo,/sys/kernel/slab/*/objects— so the growing cache can be named. Every reboot so far has destroyed the evidence that would identify it.https://claude.ai/code/session_01HMPUfMTrzqwrcgDCFvjnFG