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: Cudder !cXCudderUE 2015-07-29 13:41

>>14
If you "reserve" something, anyone sane will implicitly understand that you intend to use it in the future. How does attempting to reserve more memory than is available both in RAM and the pagefile combined on a typical system even make sense? It's impossible to ever satisfy such a request, so the OS rightly refuses to do it. This isn't overcommit where the (horrible) assumption is that there might be more memory in the future freed up; there will never be enough.

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