I ever also found this problem: global ballast doesn't work.
So I always use local ballast instead now.

On Sunday, November 6, 2022 at 8:37:55 PM UTC+8 hit.zh...@gmail.com wrote:

> Before, I think the memory is allocated by mmap anon, which Linux OS 
> guarantees reading will return zero value and no physical pages allocated. 
> When writing happens, the physical pages will be allocated. Then I think 
> the create a byte slice maybe the same.
>
> Your idea is clear. I agree with it. 
>
> Just now, I use gdb to dump the ballast anon memory and use hexdump to 
> check its dirty content, all data is zero (Maybe zeroing happens).
> But after turning GC off, it works as expected (no RSS is taken, no 
> DIRTY). 
> I think there must be something I didn't get it.
>
> On Sunday, November 6, 2022 at 8:11:51 PM UTC+8 Jan Mercl wrote:
>
>> On Sun, Nov 6, 2022 at 12:54 PM Kn (Kn) <hit.zh...@gmail.com> wrote: 
>>
>> > Now the problem begins. I expect the ballast like `ballast := 
>> make([]byte, 1<<30)` shouldn't take up any physical memory because there's 
>> no any writing to it. 
>>
>> The backing array is specified to be zeroed, so we cannot say there's 
>> no writing to it. Depending on the size of the backing array and the 
>> operating system it may not get written as an optimization if backed 
>> by memory the OS can guarantee to be zero filled. Only then it may 
>> remain not yet bound to physical memory. 
>>
>> A simple implementation will just zero it, meaning the opposite 
>> happens - every byte of the backing array gets written and backing 
>> pages for it get allocated. 
>>
>

-- 
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/68ef4bf7-3463-4e14-9e02-657636b66bd7n%40googlegroups.com.

Reply via email to