-
Notifications
You must be signed in to change notification settings - Fork 15
gc doesnt work for gorump programs #34
Comments
so a couple of things...
|
as for 1) that's correct go heap model is optimized for OSes that support virtual memory (specifically, they use the ability to reserve memory addresses with out allocating them) and should probably be heavily modified for rumprun. as for 2) not sure what you are asking. What I don't understand is why the comment message says 32MB while 21 bits of heap is only 2MB (which is really low for most applications i believe). |
you're running into this issue -- #14 it's confusing - you're right 2**21 is only 2097152 and I could be wrong, but as I recall _MHeapMap_TotalBits doesn't define the actual total memory used, iirc there were other constants defined elsewhere - but maybe I'm completely wrong on that for instance does bumping this up to 24 bits (16M) still work under qemu w/32M? |
when i bumped it to 25 (32M) it did not work with 128M but did work with 256M qemu. |
yeh -- I don't remember where the other dependent constants are but this is why that comment said 32M - maybe @anttikantee remembers? - as for now to let GC do it's thing - does 23 bits work under 32M? |
I scraped my test environment so it's hard for me to do more tests now... :/ |
for sure - I'll try to schedule some time to dive in |
In this commit:
87eaedc
The heap size is supposed to be limited to 32MB. But in-fact 21 bits are only 2MB.
The go GC will run only when the heap reaches 4mb -> hence it wont run soon enough to clean up the heap.
Also note that the implementation of malloc.go relies heavily on virtual memory (which is not available in rumprun), and as a result code paths for 64bit and 32bit get mixed up.
I believe all these combined also caused #26
The text was updated successfully, but these errors were encountered: