aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/trace
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2017-04-14 14:53:09 -0400
committerAustin Clements <austin@google.com>2017-04-19 18:31:16 +0000
commit7ca53f2f8b62fc850e1c8ba31afee7ebdff76084 (patch)
tree8690b4cc058a93bbd2037333b2269b2cd831708e /src/cmd/trace
parent22000f54073985958457168e8e19afa19e97821d (diff)
downloadgo-7ca53f2f8b62fc850e1c8ba31afee7ebdff76084.tar.xz
cmd/trace: show swept and reclaimed bytes
This displays the swept and reclaimed bytes for sweep events in the lower panel of the trace viewer. Change-Id: If1665a1c02bbc47700e0d9f515e574f013f3f285 Reviewed-on: https://go-review.googlesource.com/40812 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
Diffstat (limited to 'src/cmd/trace')
-rw-r--r--src/cmd/trace/trace.go16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/cmd/trace/trace.go b/src/cmd/trace/trace.go
index 72cab90de0..7db2188861 100644
--- a/src/cmd/trace/trace.go
+++ b/src/cmd/trace/trace.go
@@ -481,7 +481,13 @@ func generateTrace(params *traceParams) (ViewerData, error) {
}
ctx.emitSlice(&fakeMarkStart, text)
case trace.EvGCSweepStart:
- ctx.emitSlice(ev, "SWEEP")
+ slice := ctx.emitSlice(ev, "SWEEP")
+ if done := ev.Link; done != nil && done.Args[0] != 0 {
+ slice.Arg = struct {
+ Swept uint64 `json:"Swept bytes"`
+ Reclaimed uint64 `json:"Reclaimed bytes"`
+ }{done.Args[0], done.Args[1]}
+ }
case trace.EvGoStart, trace.EvGoStartLabel:
info := getGInfo(ev.G)
if ev.Type == trace.EvGoStartLabel {
@@ -574,8 +580,8 @@ func (ctx *traceContext) proc(ev *trace.Event) uint64 {
}
}
-func (ctx *traceContext) emitSlice(ev *trace.Event, name string) {
- ctx.emit(&ViewerEvent{
+func (ctx *traceContext) emitSlice(ev *trace.Event, name string) *ViewerEvent {
+ sl := &ViewerEvent{
Name: name,
Phase: "X",
Time: ctx.time(ev),
@@ -583,7 +589,9 @@ func (ctx *traceContext) emitSlice(ev *trace.Event, name string) {
Tid: ctx.proc(ev),
Stack: ctx.stack(ev.Stk),
EndStack: ctx.stack(ev.Link.Stk),
- })
+ }
+ ctx.emit(sl)
+ return sl
}
type heapCountersArg struct {