4 ms·
One place I had issues was rapidly allocating space I needed temporarily but then discarding it. The space I needed was too large to be added to the heap, so I
by OptionOfT 1y ago
One place I had issues was rapidly allocating space I needed temporarily but then discarding it.
The space I needed was too large to be added to the heap, so I used mmap. Because of the nature of the processing (mmap, process, yeet mmap) I put the system under a lot of pressure. Maintaining the set of mapped blocks and reusing them around fixed the issue.
- vlovich123 1y agoFreeing memory to the OS or doing things like munmap involves a TLB shootdown which by definition is a performance bottleneck. Probably what you ended up experiencing.
- OptionOfT 1y agoThanks for that. That was an interesting read! I ended up in this situation like I end up in most, by just learning as I go. With this I learned that the libc allocator has a max amount that it'll add to the heap, and how mmap works, and that doing frequent munmap is slow. Now I learned why it is slow!