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> wrote:

> Are you certain the number of Go routines is not increasing - each Go
> routine requires stack. See https://tpaschalis.github.io/goroutines-size/
>
> On Mar 24, 2022, at 3:18 PM, Shlomi Amit <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:
>
>
>    1. What stackInUse represents? Is it part of HeapSys?
>    2. What HeapSys represents? (Both it and StackInUse are way more high
>    than heapAlloc)
>    3. 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.
>    4. 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.
>    5. Most importantly, with the below memory stats being increased,
>    what's the approach to investigate?
>    6. 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.
> 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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAAbwE0McE6OULqOyrjHtw6tp493%3DLeDm624_tck71RDfkN%2BOEQ%40mail.gmail.com.

Reply via email to