Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Another reason 64 bit is shit

Name: Anonymous 2015-07-28 19:56

A bit of background is in order. GHC allocates memory from the operating system in units of aligned megabytes. So it owns a collection of megabytes that might be anywhere in the address space. For every pointer it sees, the GC asks the question “is this a pointer into the heap?”, and the memory manager should return true for any of the memory that GHC has allocated, and false otherwise. This is the job of the HEAP_ALLOCED() macro.

On a 32-bit machine, answering the question is easy: a megabyte is 20 bits, so we only need a 12-bit lookup table, and even using a full byte for each entry, that’s just 4KB.

On a 64-bit machine, it’s much harder. Even taking advantage of the fact that only 48 bits are available address space on x86_64 architecture machines, that still leaves 28 bits, which is a 256MB table (32MB using bits instead of bytes). This is not likely to be an acceptable memory overhead.

https://simonmar.github.io/posts/2015-07-28-optimising-garbage-collection-overhead-in-sigma.html

Name: Anonymous 2015-07-29 13:14

>>13
MEM_RESERVE doesn't prevent overcommit. It doesn't actually allocate any physical memory.

OTOH there should be nothing preventing GHC to use MEM_RESERVE to reserve heap address space in gigabyte chunks, then MEM_COMMIT in megabyte-sized blocks as needed.

>>1 32bit sucks too, compared to 16bit master race. Mo memory mo problems, my african american!

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List