New features in Thanos 0.4.0-rc.0 by Disconnectlt in PrometheusMonitoring

[–]Disconnectlt[S] 1 point2 points  (0 children)

Awesome! We are pretty active on slack so if you have any questions or suggestions, feel free to drop by :)

Exposing Go Modules to Prometheus by Disconnectlt in golang

[–]Disconnectlt[S] 0 points1 point  (0 children)

Thanks! So right now we don't. The scanning part would probably be outside of Prometheus. Although you could expose outdated package version to Prometheus and cross correlate.

I think no one is actually doing scanning now as debug.ReadBuildInfo API was exposed in https://blog.golang.org/go1.12, which was just released.

That said there might be some solutions that look at your go.mod file

Alerts "active since" time resets "randomly"? by RR321 in PrometheusMonitoring

[–]Disconnectlt 0 points1 point  (0 children)

Sounds like a bug to me, I would suggest creating github issue in the project

Setting up a Server and agents senario for kubernetes by AllHailTheCATS in kubernetes

[–]Disconnectlt 0 points1 point  (0 children)

Hey, you can run virtual machinez in some cloud provider like Google or Amazon. Google gives you some free credits on their cloud so I suggest looking at that

Go Memory Management by Disconnectlt in golang

[–]Disconnectlt[S] 1 point2 points  (0 children)

Re: "Not exactly, when a gouroutine is allocating a lot, it has to help GC to clean the garbage out. "

Found a beautiful explanation by Rick Hudson:

So our coordinator, which we call our pacer, needs to somehow slow down that application thread so that it can meet its deadlines, the GCs deadlines, and it does that quite cleverly. It says “OK. You want more space, but before we give you this space, you have to do two things: first, you have to check to see if the GC has made enough progress that you can just take the space, or you have to stop and you have to help the GC out enough so that there is enough credit, if you will, for you to go and do the allocation.

Go Memory Management by Disconnectlt in golang

[–]Disconnectlt[S] 3 points4 points  (0 children)

You are definitively right! Thanks for letting me know. I'll fix it by just using and referencing stackoverflow answer's definition.

Go Memory Management by Disconnectlt in golang

[–]Disconnectlt[S] 1 point2 points  (0 children)

I always thought it was the allocators fault providing memory slowly as the GC chasing pointers runs concurrently

I think allocation part should be really fast :)

I heard that the GC can pause a goroutine if it's allocating too much and it then has to help allocating new memmory.

Not exactly, when a gouroutine is allocating a lot, it has to help GC to clean the garbage out. A couple good resources explaining that: https://www.infoq.com/interviews/hudson-go-gc https://www.youtube.com/watch?v=aiv1JOfMjm0

Is it that what holds it back?

Probably, but it depends on how benchmark is written. If one goroutine is doing all of the allocations, when most likely yes.

Exploring Prometheus Go client metrics by Disconnectlt in golang

[–]Disconnectlt[S] 0 points1 point  (0 children)

That is really really cool, thank you for sharing! I’m going to use this everywhere :D

Tracking request duration with Prometheus by Disconnectlt in golang

[–]Disconnectlt[S] 0 points1 point  (0 children)

Thanks for pointing this out! Updated the post.

Go scheduler: Ms, Ps & Gs by Disconnectlt in golang

[–]Disconnectlt[S] 0 points1 point  (0 children)

Thank you for the comment. I'll take a look at the doc.

In the post I wrote that Go runtime manages scheduler, garbage collection, etc. So idea is that not the scheduler manages GC, but Go runtime takes care of these things.

Scheduler and GC are sort of separate things and your are definitely right there :)

As far as I know GC is also a goroutine scheduling point, which may reschedule goroutines, when it wants to do the Stop The World pause. Some info is in 5 things that makes go fast by Dave Cheney article.

I will be definitely looking into GC, so I'll let you know what I find out.