I am trying to find details about how the scalable allocator works. I found some material at:
but this is a little outdated (2007). It would be good to have some updated resource which explains the data structures used and the memory size bins used in the current (or rather recent) implementation of the allocator. For memory allocations >8KB, does TBB request directly the OS virtual memory or has this been changed?
Unfortunately such text has not been written yet, while things are changed since 2007. Sources are here, but they are bad replacement to high-level overview.
As for objects >8KB, they are split from big “regions” (if less than 1 MB) or received directly from OS via mmap/VirtualAlloc, later they are subject to per-thread caching (up to 4 MB) at first, and then to global large object caching (up to 129 MB).