Overview
Syllabus
go tool trace for correct and effective concurrency
A special tool for Go's needs
goroutine scheduling instrumented
Concurrency, and how to manage it
Parallelism, and how to exploit it
A timing-dependent bug
#1: A race condition
go test -race go build -race go install -race
a logical race, not a data race
View trace
Sync blocking profile
Goroutine analysis
It's not a panacea
1. Testing with -trace flag
and large (40GB) heap
The GC is still improving
Go 1.1: GC uses parallel threads
#3A: Stop-The-World pauses
The Go 1.10 compiler should have a general, permanent fix
#3B: Other awkward pauses
User code works against that
Be prepared: practice using the tools
Taught by
Gopher Academy