5 ms·
You can probably use a pool allocator that won't go back to the OS for more when it's exhausted. I wouldn't be surprised if the popular allocators - jemalloc/t
by wyldfire 5y ago
You can probably use a pool allocator that won't go back to the OS for more when it's exhausted.
I wouldn't be surprised if the popular allocators - jemalloc/tcmalloc/scudo or even the defaults in glibc/musl support a setting like this.
- remram 5y agoI suppose I could use a custom allocator that calls mlock() on each page. I will look whether the ones you mention have Rust integrations and whether they expose a setting like that.
- eqvinox 5y agoI understood wyldfire's post to mean counting & imposing your own artificial memory limit, no mlock involved. But I wouldn't know how to pick that limit :/.
- wyldfire 5y agoYes that is what I meant. And it would avoid the latency hit of a system call to satisfy an allocation. However doing an mlock would avoid the latency hit of paging, so that's good too.
- remram 5y agoOh I see. Well I'm not trying to add a limit to my RSS, I just want to be notified when allocation fail in my process on my machine where overcommit is enabled. Maybe what I'm asking for makes no sense though, because even if my process handles out of memory errors gracefully, it might still get OOM-killed when another process allocates some more.