summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAyush Ranjan <ayushranjan@google.com>2021-05-05 00:00:52 -0700
committergVisor bot <gvisor-bot@google.com>2021-05-05 00:02:37 -0700
commitd924515b0991a3a14e0b0d7d21268eaed6fafb5b (patch)
treea39b2e2250a0ccdaccfe46bb8488b2320940a17d
parentd384378077f29c05c99820042f7cd677e8bf1efa (diff)
[perf] Fix profiling in benchmarking jobs.
Due to https://github.com/moby/moby/issues/42345, the docker daemon is passing the incorrect `--root` flag to runsc. So our profiler is not able to find the container stat files where it expects them to be. PiperOrigin-RevId: 372067954
-rw-r--r--pkg/test/dockerutil/profile.go11
1 files changed, 8 insertions, 3 deletions
diff --git a/pkg/test/dockerutil/profile.go b/pkg/test/dockerutil/profile.go
index 4855a52fc..12fe98b16 100644
--- a/pkg/test/dockerutil/profile.go
+++ b/pkg/test/dockerutil/profile.go
@@ -82,10 +82,15 @@ func (p *profile) createProcess(c *Container) error {
}
// The root directory of this container's runtime.
- root := fmt.Sprintf("--root=/var/run/docker/runtime-%s/moby", c.runtime)
+ rootDir := fmt.Sprintf("/var/run/docker/runtime-%s/moby", c.runtime)
+ if _, err := os.Stat(rootDir); os.IsNotExist(err) {
+ // In docker v20+, due to https://github.com/moby/moby/issues/42345 the
+ // rootDir seems to always be the following.
+ rootDir = "/var/run/docker/runtime-runc/moby"
+ }
- // Format is `runsc --root=rootdir debug --profile-*=file --duration=24h containerID`.
- args := []string{root, "debug"}
+ // Format is `runsc --root=rootDir debug --profile-*=file --duration=24h containerID`.
+ args := []string{fmt.Sprintf("--root=%s", rootDir), "debug"}
for _, profileArg := range p.Types {
outputPath := filepath.Join(p.BasePath, fmt.Sprintf("%s.pprof", profileArg))
args = append(args, fmt.Sprintf("--profile-%s=%s", profileArg, outputPath))