Are you certain your CGo code isn’t creating threads? > On Mar 26, 2022, at 1:10 PM, Shlomi Amit <shlo...@gmail.com> wrote: > > Yes. I already monitoring the runtime stat of number of go routines (Can be > seen in the screenshot as well) and it's not increasing. > > On Sat, Mar 26, 2022, 20:40 robert engels <reng...@ix.netcom.com > <mailto:reng...@ix.netcom.com>> wrote: > Are you certain the number of Go routines is not increasing - each Go routine > requires stack. See https://tpaschalis.github.io/goroutines-size/ > <https://tpaschalis.github.io/goroutines-size/> > >> On Mar 24, 2022, at 3:18 PM, Shlomi Amit <shlo...@gmail.com >> <mailto:shlo...@gmail.com>> wrote: >> >> Hi. >> >> I’m trying to find a memory leak in my application. >> I’ve added some runtime memory stats to the logs (Heap & Stack stats.. go >> routine and heapObject counts). >> I can see that from time to time m.StackInuse is increasing without any >> obvious reason from the application perspective (At least not one that I can >> find yet). >> Here some additional runtime mem stats (Taken at the same time): >> StackInUse 56MB >> HeapSys: 147MB. >> HeapAlloc: 97MB >> >> While StackInUse and HeapSys seems to increase from time to time, HeapAlloc >> stays about the same during 6 hours while the application is running. >> There seems to be a bit of correlation between StackInUse and HeapSys, but >> overtime StackInUse increase more than HeapSys. (Is HeapSize includes >> StackInUse?) >> >> In addition to adding runtime memory logs, I’m also creating periodic heap >> profile dumps. >> My problem is that when analyzing the heap with pprof, it gives me no clue >> why StackInUse is so high. >> The pprof inuse_space shows: >> “Showing nodes accounting for 55.31MB, 93.25% of 59.31MB total” >> What this total MB represent? It doesn’t seem to match HeapAlloc, HeapSys or >> StackInUse. >> Does pprof heap profile even include StackInUse? >> >> I really need to understand where the leak is coming from, but after looking >> in many places, the memory stats are still not clear to me, and neither what >> memory stat pprof heap profile really represent. >> Note that I’m also logging HeapObjects count and I don’t see any leak there… >> It’s just StackInUse increasing from time to time (As it seems, it's always >> double itself... ~8MB->16MB->32), and HeapSys. >> >> Note that I’m also using Cgo, but my understanding is Cgo memory allocations >> will not be reflected by the runtime memory stats. Is this correct and I >> assume if runtime memory stats are increasing this is defiantly because of >> go code and not C code? >> I hope I was clear, but added a screenshot for the different memory stats. >> Marked in red the point in times that stackInUse increase. (My current >> understanding which might be wrong, is that stackInUse is not included in >> HeapSys, this is why they are stacked in the graph). >> >> I know my write is a bit messed up and you might not really be sure what's >> being asked, so in if I'll try to summarize: >> >> >> What stackInUse represents? Is it part of HeapSys? >> What HeapSys represents? (Both it and StackInUse are way more high than >> heapAlloc) >> Why pprof inuse_space doesn't seem to have any notion of stuff which was >> allocated by StackInUse or HeapSys? It seems to pretty much corelate with >> HeapAlloc. >> Since I'm also using Cgo, I do understand C memory allocation will not be >> reflected in pprof, perhaps they are being reflected by StackInUse or >> HeapInUse? >> Considering StackInUse seems to double itself in size when it increase, it >> seems like some kind of memory pre-allocation to have enough headroom than >> needed, not something which I expect to happen by C code. >> Most importantly, with the below memory stats being increased, what's the >> approach to investigate? >> Currently I'm using docker, and sometimes get OOM. What's best memory stats >> which will the most close to describe container RSS memory in use? >> (Specifically, my docker container was limited to 300MiB) >> >> I know these are many question, but I did try and go over the runtime memory >> stats documentation, and I'm still very confused, especially not after the >> actual memory stats I'm seeing. >> BTW, I'm using go 1.17.5 >> >> <Untitled.jpg> >> >> -- >> 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 >> <mailto:golang-nuts+unsubscr...@googlegroups.com>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/e7bedd37-76a2-48e9-82bb-6309c60787bbn%40googlegroups.com >> >> <https://groups.google.com/d/msgid/golang-nuts/e7bedd37-76a2-48e9-82bb-6309c60787bbn%40googlegroups.com?utm_medium=email&utm_source=footer>. >> <Untitled.jpg> > > > -- > 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 > <mailto:golang-nuts+unsubscr...@googlegroups.com>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/CAAbwE0McE6OULqOyrjHtw6tp493%3DLeDm624_tck71RDfkN%2BOEQ%40mail.gmail.com > > <https://groups.google.com/d/msgid/golang-nuts/CAAbwE0McE6OULqOyrjHtw6tp493%3DLeDm624_tck71RDfkN%2BOEQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.
-- 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/A65169CD-326B-431A-8EC7-5DFF9EA56795%40ix.netcom.com.