Go doesn't know about memory pressure, but rather it informs the OS about pages it no longer needs, and the OS deals with memory pressure. See the madvise(2) <https://man7.org/linux/man-pages/man2/madvise.2.html> manpage and the go1.12 release notes <https://go.dev/doc/go1.12#runtime>.
If I understand correctly, MADV_DONTNEED tells the OS to discard immediately. Between go1.12 and go1.15 it used MADV_FREE, where the expected OS behaviour is that "the freeing could be delayed until memory pressure occurs" On Saturday, 29 January 2022 at 17:03:24 UTC eric.h...@gmail.com wrote: > How does go know about memory pressure? maybe that aspect is broken in my > environment... within a cgroup..etc.. > > On Saturday, 29 January 2022 at 02:16:56 UTC-8 Brian Candler wrote: > >> What go version are you compiling with? >> >> go prior to 1.16 would hold onto memory such that the OS would only >> reclaim it when under memory pressure; it could be made to free memory >> eagerly using GODEBUG=madvdontneed=1. This was made the default in go 1.16. >> >> >> https://discuss.dgraph.io/t/benchmarks-using-godebug-madvdontneed-environment-variable/7322 >> https://go.dev/doc/go1.16#runtime >> >> On Saturday, 29 January 2022 at 01:02:18 UTC eric.h...@gmail.com wrote: >> >>> I've been trying to root cause an OOM condition. My process is running >>> within a cgroup with a 4gb limit. Occasionally that limit gets hit. I >>> added a cgroup listener to watch for memory usage and create a pprof and >>> core dump. >>> >>> The pprof shows just a few hundred megs of "in-use" memory, however when >>> I open the core dump with viewcore I'm seeing around 3.3gb of free spans >>> that are being retained. "kept for reuse by Go".. >>> >>> I've got GOGC set to 50 -- but my understanding is that just controls >>> when a GC kicks off -- not when memory will be returned to the OS. >>> >>> Is there some sort of behavior a program can do to create this type of >>> situation? or a way to give a hint to the GC .. "hey... give it back!" >>> :) >>> >>> Thanks for any ideas or thoughts! >>> >> -- 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/917becdc-0ead-4a87-a718-50d5c5c7de73n%40googlegroups.com.