From f4623c853854ea1d89c243a5c926d841894524f4 Mon Sep 17 00:00:00 2001 From: Thomas Pelletier Date: Wed, 31 May 2023 10:50:00 -0400 Subject: [PATCH 1/3] Update go.mod to wzprof 0.1.5 --- go.mod | 4 ++-- go.sum | 8 ++++---- profile.go | 13 +++++++------ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 425e0925..5858983d 100644 --- a/go.mod +++ b/go.mod @@ -5,12 +5,12 @@ go 1.20 require ( github.com/google/flatbuffers v23.5.9+incompatible github.com/google/go-cmp v0.5.9 - github.com/google/pprof v0.0.0-20230406165453-00490a63f317 + github.com/google/pprof v0.0.0-20230510103437-eeec1cb781c3 github.com/google/uuid v1.3.0 github.com/klauspost/compress v1.16.5 github.com/stealthrocket/wasi-go v0.1.1 github.com/stealthrocket/wazergo v0.19.0 - github.com/stealthrocket/wzprof v0.1.5-0.20230526193557-ec6e2ad60848 + github.com/stealthrocket/wzprof v0.1.5 github.com/tetratelabs/wazero v1.1.1-0.20230522055633-256b7a4bf970 golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 gopkg.in/yaml.v3 v3.0.1 diff --git a/go.sum b/go.sum index 2fb5c94a..e8ef793d 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ github.com/google/flatbuffers v23.5.9+incompatible h1:mTPHyMn3/qO7lvBcm5S9p0olWU github.com/google/flatbuffers v23.5.9+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/pprof v0.0.0-20230406165453-00490a63f317 h1:hFhpt7CTmR3DX+b4R19ydQFtofxT0Sv3QsKNMVQYTMQ= -github.com/google/pprof v0.0.0-20230406165453-00490a63f317/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= +github.com/google/pprof v0.0.0-20230510103437-eeec1cb781c3 h1:2XF1Vzq06X+inNqgJ9tRnGuw+ZVCB3FazXODD6JE1R8= +github.com/google/pprof v0.0.0-20230510103437-eeec1cb781c3/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= @@ -12,8 +12,8 @@ github.com/stealthrocket/wasi-go v0.1.1 h1:9Q9zpKWItoObGjNG5kkllzHx1sksiq/MKfuYd github.com/stealthrocket/wasi-go v0.1.1/go.mod h1:LBhZHvAroNNQTejkVTMJZ01ssj3jXF+3Lkbru4cTzGQ= github.com/stealthrocket/wazergo v0.19.0 h1:0ZBya2fBURvV+I2hGl0vcuQ8dgoUvllxQ7aYlZSA5nI= github.com/stealthrocket/wazergo v0.19.0/go.mod h1:riI0hxw4ndZA5e6z7PesHg2BtTftcZaMxRcoiGGipTs= -github.com/stealthrocket/wzprof v0.1.5-0.20230526193557-ec6e2ad60848 h1:gNZnxEbv7OgKkGvRU4PtGDZpzls81FV0IYoUW3I46l0= -github.com/stealthrocket/wzprof v0.1.5-0.20230526193557-ec6e2ad60848/go.mod h1:hqLzj5iDSncc6rlPMhC51O642AkaC+dWVPNNalZdlCY= +github.com/stealthrocket/wzprof v0.1.5 h1:Y3jQHvdGFQMySV2VIjJhBu08OdcqcflfTz7CvrH5MGM= +github.com/stealthrocket/wzprof v0.1.5/go.mod h1:hqLzj5iDSncc6rlPMhC51O642AkaC+dWVPNNalZdlCY= github.com/tetratelabs/wazero v1.1.1-0.20230522055633-256b7a4bf970 h1:X5OOeHRjoLA8XhVc7biEbh1/hnTzpYpPn7HuyarMslQ= github.com/tetratelabs/wazero v1.1.1-0.20230522055633-256b7a4bf970/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc= diff --git a/profile.go b/profile.go index 91f4d66f..d58404a2 100644 --- a/profile.go +++ b/profile.go @@ -141,8 +141,9 @@ func profile(ctx context.Context, args []string) error { endTime: timeRange.End, sampleRate: 1.0, } - records.cpu = wzprof.NewCPUProfiler(wzprof.TimeFunc(records.now)) - records.mem = wzprof.NewMemoryProfiler() + p := wzprof.ProfilingFor(module.Code) + records.cpu = p.CPUProfiler(wzprof.TimeFunc(records.now)) + records.mem = p.MemoryProfiler() ctx = context.WithValue(ctx, experimental.FunctionListenerFactoryKey{}, @@ -160,6 +161,7 @@ func profile(ctx context.Context, args []string) error { return err } defer compiledModule.Close(ctx) + p.Prepare(compiledModule) replay := wasicall.NewReplay(records) defer replay.Close(ctx) @@ -231,7 +233,6 @@ type recordProfiler struct { started bool stopped bool sampleRate float64 - symbols wzprof.Symbolizer } func (r *recordProfiler) Read(records []timemachine.Record) (int, error) { @@ -269,8 +270,8 @@ func (r *recordProfiler) start() { func (r *recordProfiler) stop() { if !r.stopped { r.stopped = true - r.cpuProfile = r.cpu.StopProfile(r.sampleRate, r.symbols) - r.memProfile = r.mem.NewProfile(r.sampleRate, r.symbols) + r.cpuProfile = r.cpu.StopProfile(r.sampleRate) + r.memProfile = r.mem.NewProfile(r.sampleRate) r.cpuProfile.TimeNanos = r.startTime.UnixNano() r.memProfile.TimeNanos = r.startTime.UnixNano() duration := r.lastTimestamp - r.firstTimestamp @@ -302,7 +303,7 @@ func createProfiles(reg *timemachine.Registry, processID format.UUID, profiles . }(p) } - var descriptors = make([]*format.Descriptor, 0, len(profiles)) + descriptors := make([]*format.Descriptor, 0, len(profiles)) var lastErr error for range profiles { d, err := (<-ch).Value() From b5f992e9d77d2e3d31a15eb843b5ca4446e316d2 Mon Sep 17 00:00:00 2001 From: Thomas Pelletier Date: Wed, 31 May 2023 14:57:02 -0400 Subject: [PATCH 2/3] Check err from Profiling.Prepare --- profile.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/profile.go b/profile.go index d58404a2..dca9131c 100644 --- a/profile.go +++ b/profile.go @@ -161,7 +161,10 @@ func profile(ctx context.Context, args []string) error { return err } defer compiledModule.Close(ctx) - p.Prepare(compiledModule) + err = p.Prepare(compiledModule) + if err != nil { + return err + } replay := wasicall.NewReplay(records) defer replay.Close(ctx) From b3f92e2cabf472f0d7406fee02efa2a64aa73678 Mon Sep 17 00:00:00 2001 From: Thomas Pelletier Date: Thu, 1 Jun 2023 11:31:23 -0400 Subject: [PATCH 3/3] Update profile.go Co-authored-by: Achille --- profile.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/profile.go b/profile.go index dca9131c..1d635ae3 100644 --- a/profile.go +++ b/profile.go @@ -161,8 +161,7 @@ func profile(ctx context.Context, args []string) error { return err } defer compiledModule.Close(ctx) - err = p.Prepare(compiledModule) - if err != nil { + if err := p.Prepare(compiledModule); err != nil { return err }