Message ID | 20231203000111.30681-1-me@tobias.gr |
---|---|
State | New |
Headers | show |
Series | [bug#67733,v3] daemon: Sacrifice builders on OOM. | expand |
Hullo! Tobias Geerinckx-Rice <me@tobias.gr> skribis: > * nix/libstore/build.cc (DerivationGoal::runChild): > Maximise our OOM score adjustment. > > Change-Id: I418c763b499ca16e1ffe3c6033319112b9744f51 > --- > > v3: In my defens, I'm on a fone. Nooo, you’re a hero. > + /* Ask the kernel to eagerly kill us & our children if it runs out of > + memory, regardless of blame, to preserve ‘real’ user data & state. */ > + try { > + writeFile("/proc/self/oom_score_adj", "1000"); // 100% > + } catch (...) { ignoreException(); } Sounds like a good idea. LGTM! Ludo’.
diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc index e8259aa4e8..54555b92d7 100644 --- a/nix/libstore/build.cc +++ b/nix/libstore/build.cc @@ -2154,6 +2154,12 @@ void DerivationGoal::runChild() determinism. */ int cur = personality(0xffffffff); if (cur != -1) personality(cur | ADDR_NO_RANDOMIZE); + + /* Ask the kernel to eagerly kill us & our children if it runs out of + memory, regardless of blame, to preserve ‘real’ user data & state. */ + try { + writeFile("/proc/self/oom_score_adj", "1000"); // 100% + } catch (...) { ignoreException(); } #endif /* Fill in the environment. */