]> Cypherpunks repositories - gostls13.git/commit
internal/trace/v2: support old trace format
authorDominik Honnef <dominik@honnef.co>
Sat, 20 Jan 2024 16:37:50 +0000 (17:37 +0100)
committerGopher Robot <gobot@golang.org>
Thu, 14 Mar 2024 02:20:08 +0000 (02:20 +0000)
commit6133c1e4e202af2b2a6d4873d5a28ea3438e5554
tree40708a7177426584762cba5891d56c0163ab66f9
parent508bb17edd04479622fad263cd702deac1c49157
internal/trace/v2: support old trace format

Add support for traces from Go 1.11–1.19 by converting old traces to the
Go 1.22 format on the fly.

We import Gotraceui's trace parser, which is an optimized parser based
on Go 1.19's internal/trace package, and further modify it for the needs
of the conversion process.

With the optimized parser, loading old traces using the new API is twice
as fast and uses less total memory than 'go tool trace' did in older
versions.

The new parser does not, however, support traces from versions older
than 1.11.

This commit does not update cmd/trace to use the new API for old traces.

Change-Id: If9380aa515e29445ff624274d1760ee945ca4816
Reviewed-on: https://go-review.googlesource.com/c/go/+/557356
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
24 files changed:
src/go/build/deps_test.go
src/internal/trace/v2/event/go122/event.go
src/internal/trace/v2/generation.go
src/internal/trace/v2/internal/oldtrace/order.go [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/parser.go [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/parser_test.go [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/testdata/fmt_1_21_pprof_good [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/testdata/http_1_19_good [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/testdata/http_1_21_good [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/testdata/stress_1_11_good [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/testdata/stress_1_19_good [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/testdata/stress_1_21_good [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/testdata/stress_start_stop_1_11_good [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/testdata/stress_start_stop_1_19_good [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/testdata/stress_start_stop_1_21_good [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/testdata/user_task_region_1_11_good [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/testdata/user_task_region_1_19_good [new file with mode: 0644]
src/internal/trace/v2/internal/oldtrace/testdata/user_task_region_1_21_good [new file with mode: 0644]
src/internal/trace/v2/oldtrace.go [new file with mode: 0644]
src/internal/trace/v2/oldtrace_test.go [new file with mode: 0644]
src/internal/trace/v2/reader.go
src/internal/trace/v2/testdata/fuzz/FuzzReader/4055b17cae1a3443 [new file with mode: 0644]
src/internal/trace/v2/testtrace/validation.go
src/internal/trace/v2/version/version.go