I have a question about scavenging arising one of the runtime tests in 
runtime/mpagealloc.go. The test in question is the " AllFree1" test case in 
TestPageAllocAlloc.

According to my understanding, in the runtime, there is a distinction 
between reclaiming memory and scavenging memory.  Reclaiming memory is 
reusing free memory for allocations while scavenging is returning memory 
back to the OS that is no longer needed by the application.

Step 1. the test starts off by setting up some scavenging state by 
scavening one page at index 0, and two pages starting at index two

scav: map[ChunkIdx][]BitRange{
BaseChunkIdx: {{0, 1}, {2, 2}},
},
If you inspect the bitmap, you can see the scavenged pages set starting at 
the appropriate index

0000000000000000000000000000000000000000000000000000000000001101

Step 2. It then allocates 5 pages in succession
for iter, i := range v.5hits {
   address, scav := b.Alloc(i.npages)
}

Step 3. Afterwards, if you print the bits you can see the five allocations 
in the first positions

The 5 allocations

0000000000000000000000000000000000000000000000000000000000011111


The corresponding scavenged bit map is all set to 0, so the allocations 
used the scavenged pages:


0000000000000000000000000000000000000000000000000000000000000000


So my question is....is that "scavenging" or more properly "reclaiming"? 
The allocations occupy the positions that were previously scavenged, so I'm 
guessing the memory has been re-used (in the logic of the test) rather than 
returned to the OS. 


-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/1f889217-2c39-4aef-8fac-5f0cdd9a1176n%40googlegroups.com.

Reply via email to