4 ms·
I think the significant design decision is that in a 64 bit world, virtual address space is no longer scarce. This allows a simpler implementation, roughly half
by jws 11y ago
I think the significant design decision is that in a 64 bit world, virtual address space is no longer scarce. This allows a simpler implementation, roughly half the code.
The micro benchmarks are great, the whole program level benchmarks show nothing earth shaking. But I'll take ok performance and half the code any day.
- thrownaway2424 11y agoCan you explain? It seems like the address space is getting more scarce, not less. Several years ago when x86-64 adoption really took off, 48 bits was a lot bigger than the actual amount of memory one might put in a system, but now it isn't (48 bits virtual vs. 40 bits physical).
- jws 11y agoThe algorithm sparsely uses 512MB of virtual address space for its allocation and caches. For each of about 40 sizes, it keeps an array of fixed size blocks, plus a bunch of per thread and per CPU caches. In a 32bit world, taking 1/4 to 1/8 of the address space would be impolite. In a 64 (or 48) bit world it doesn't matter.
- binarycrusader 11y agoYes, in the x86 world, things are not as rosy as they could be. SPARC moved to a 64-bit address space a long time ago. 32 terabytes of memory in a single server? Sure, why not. But as the other poster pointed out, this really isn't an issue given the approach they've taken, even on x86.