Personally, for a long time I disabled swap and made sure that I had an OOM killer running.
This was always in a setup where I'd have ample RAM for my everyday tasks, and was doing numerics. Running OOM would invariably mean two things:
1. I had a bug in my scripts, which typically meant I'd accidentally materialized a huge sparse matrix or some such, and thus
2. The system wouldn't go "just a little" OOM but rather consume memory an order of magnitude over the actual system's capacity. And it would not recover.
In that scenario, the system would typically start swath-thrashing so hard that I'd just cold reboot. An OOM daemon fixed that and let me iron out my bugs.
This was always in a setup where I'd have ample RAM for my everyday tasks, and was doing numerics. Running OOM would invariably mean two things:
1. I had a bug in my scripts, which typically meant I'd accidentally materialized a huge sparse matrix or some such, and thus
2. The system wouldn't go "just a little" OOM but rather consume memory an order of magnitude over the actual system's capacity. And it would not recover.
In that scenario, the system would typically start swath-thrashing so hard that I'd just cold reboot. An OOM daemon fixed that and let me iron out my bugs.