When THP always Undoes the Go Scavenger's Work

A fleet of Go services kept getting OOM-killed inside containers whose memory limits were generous — two to three times the live heap the runtime reported. We had GODEBUG=madvdontneed=1 set from years back, so I expected RSS to track the heap closely. Instead RSS climbed in a sawtooth that never came back down, while runtime.MemStats.HeapReleased insisted the memory had been handed back to the kernel. Both were telling the truth. The host had /sys/kernel/mm/transparent_hugepage/enabled set to always. ...

September 3, 2026 · 5 min · Moises Vega

Managing Dotfiles with GNU Stow

Dotfile setups tend to start as a repo full of files plus a shell script that copies them into $HOME. The copies drift from the repo, the script grows special cases, and eventually nobody is sure which version is real. GNU Stow removes the copy step. One directory per tool, and stow <tool> symlinks its contents into the parent directory. Editing the repo edits the live config, because they are the same file. ...

August 13, 2026 · 3 min · Moises Vega