I'm trying out a build of my code under go1.12beta1 and resident memory 
usage is not too dramatically different than under go1.11. The wording on 
this release note made me think the runtime was going to continually gobble 
up memory and not release any until the system had nearly run out, but that 
doesn't appear to be the case. I would still be interested to learn more 
about the details on the new behavior.

The process in question typically uses more memory at start as it has to 
sync a bunch of data with a backend, and then after a few minutes it 
reaches a steady-state where it is only sending updates. Prior to go1.12 I 
would see the memory usage grow to its maximum shortly after start and then 
drop ~10% a few minutes after reaching steady-state. In go1.12 it spends a 
bit more time at the elevated memory usage, but appears to gradually reduce 
memory over time.

Thanks,
Aaron

On Thursday, December 20, 2018 at 11:16:47 AM UTC-8, Aaron Beitch wrote:
>
> Hello,
>
> This caught my eye from the go1.12beta1 release notes:
>
> On Linux, the Go runtime now releases memory back to the operating system 
>> only when the OS is under memory pressure. This is more efficient, but 
>> means a process's RSS (resident set size) won't decrease unless the OS is 
>> running out of memory.
>
>
> I work on Go programs that are deployed on sometimes memory-constrained 
> Linux systems that run many other non-Go processes. At least the optics of 
> a process consuming nearly all system memory is concerning to me. In 
> addition, I'm concerned about how quickly the go runtime will react to a 
> sudden increase in memory pressure.
>
> Can I get a pointer to any documentation or code that discusses what 
> triggers the runtime to release memory and how quickly it will react? Can 
> this behavior be controlled by any flags?
>
> One solution we could implement is to periodically run debug.FreeOSMemory, 
> but that doesn't sound so nice.
>
> Thanks,
> Aaron
>

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to