Hey Brad! Yes, end users. Generally, we can't make assumptions about what they have installed locally (e.g. Go toolchain) and I would like to provide a way for folks to "click a button" and get a fully symbolized profile to send to us. Doing this inside of an existing Go program would be ideal.
On Sat, Jul 30, 2016 at 1:34 PM, Brad Fitzpatrick <bradf...@golang.org> wrote: > Who is your target audience for this? > > You seem to know how to do it (socat + go tool pprof), which suggests you > want end users to do this or something? > > > On Fri, Jul 29, 2016 at 3:43 PM, nathan.leclaire via golang-nuts < > golang-nuts@googlegroups.com> wrote: > >> Hi all, >> >> I am interested in doing performance profiling on the Docker daemon using >> the existing pprof tools and/or code inside of the internal packages of >> commands, and I was hoping to get some guidance on the challenges I've >> encountered attempting this. >> >> The Docker daemon (a Go program) exposes the pprof endpoints at >> /debug/pprof. However, by default the Docker daemon only listens on a >> Unix domain socket to expose its HTTP API, and exposing it over a >> non-encrypted TCP port is generally inadvisable due to privilege escalation >> concerns. >> >> The current most common method for accessing this pprof information seems >> to be to use socat to temporarily forward requests from the socket to a >> locally listening TCP port, and use go tool pprof to collect profile >> information and analyze it. This works OK for local development, but I >> have a few questions about how we might be able to expand support for >> collecting these pprof dumps and analyzing them more easily: >> >> 1. Would a proposal be considered to add support for collecting this >> information directly through go tool pprof , e.g. go tool pprof >> unix:///var/run/docker.sock, or is it not an area of interest for the Go >> tools? Some possible dilemmas include the unix:// protocol convention, >> which seems to be fairly Docker-unique to me and a little odd to conflate >> (transport layer vs. protocol) with http://. I've looked extensively at >> the code and it doesn't seem to cover this today. >> 2. Is it possible to install and use go tool pprof in a minimal manner, >> i.e. without the rest of the Golang toolchain? If so, how? >> 3. How inadvisable would it be to use the internal code for generating >> *Profile >> and symbolizing the profiles in a 3rd party program? Obviously due to >> the internal it's not meant to be exported but it would be very nice to >> be able to directly embed this type of code in a library-like fashion to be >> able to quickly generate dumps from running daemons that could later be >> loaded with rich semantic information into go tool pprof on another >> computer (without also needing the source binary). Naturally it's >> *possible* to just cp and vendor the code from the stdlib and work >> around this restriction, but is it advisable? >> 4. Any other ideas for getting a easily importable stand-alone *.pb.gz >> pprof output from inside of an exiting Go program (separate from the one >> that is being profiled)? I had an idea to make a minimal Go program (or >> embed in an existing one) which might be quite good at this, but getting >> richly annotated information (including symbols, etc.) via HTTP alone >> without any of the surrounding internal code to process it has proven a lot >> trickier than I naively assumed at first. >> >> Thanks all, and thanks of course for go tool pprof in the first place, >> it's a really excellent tool. >> >> -- >> 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. >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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. For more options, visit https://groups.google.com/d/optout.