WIP: DecayRange
Implemenation of a range that gradually releases memory back to the OS. It quickly pulls memory, but the dealloc_range locally caches the memory and uses Pal timers to release it back to the next level range when sufficient time has passed.
- [x] codify that parent range needs to be concurrency safe.
- [x] Remove unused code
So the perf of this is okay, but it increases memory footprint for some examples too much. I have factored out the primary changes to enable this into #491, so that can be landed, and the perf of this can be fixed and landed at a later point.
This paper has a really interesting approach to work stealing of chunks between threads: https://dl.acm.org/doi/10.1145/3533724
I think we could use some of the ideas in this paper, to make the decay range perform better.