cmd: crio: enable remote profiler

This patch also hides the profile under the debug flag as there's
runtime cost to enable the profiler.
This removes the old way of profiling (CPU) as that's not really
needed.

Signed-off-by: Antonio Murdaca <runcom@redhat.com>
This commit is contained in:
Antonio Murdaca 2017-06-17 21:13:32 +02:00
parent b01a7719cb
commit 20e11e3b90
No known key found for this signature in database
GPG key ID: B2BEAD150DE936B9

View file

@ -3,14 +3,14 @@ package main
import (
"fmt"
"net"
"net/http"
_ "net/http/pprof"
"os"
"os/signal"
"sort"
"strings"
"syscall"
"runtime/pprof"
"github.com/Sirupsen/logrus"
"github.com/containers/storage/pkg/reexec"
"github.com/kubernetes-incubator/cri-o/server"
@ -233,9 +233,9 @@ func main() {
Name: "cni-plugin-dir",
Usage: "CNI plugin binaries directory",
},
cli.StringFlag{
Name: "cpu-profile",
Usage: "set the CPU profile file path",
cli.BoolFlag{
Name: "profile",
Usage: "enable pprof remote profiler on localhost:6060",
},
}
@ -285,13 +285,10 @@ func main() {
}
app.Action = func(c *cli.Context) error {
if cp := c.GlobalString("cpu-profile"); cp != "" {
f, err := os.Create(cp)
if err != nil {
return fmt.Errorf("invalid --cpu-profile value %q", err)
}
_ = pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
if c.GlobalBool("profile") {
go func() {
http.ListenAndServe("localhost:6060", nil)
}()
}
config := c.App.Metadata["config"].(*server.Config)