GO · 성능
트레이싱 (execution trace)
runtime/trace로 고루틴 스케줄링, GC, 시스템 호출을 시각화합니다.
성능고급tracegoroutineschedulingvisualization
핵심 설명
runtime/trace로 고루틴 스케줄링, GC, 시스템 호출을 시각화합니다.
Go code
package main
import (
"fmt"
"os"
"runtime/trace"
"sync"
)
func main() {
f, _ := os.Create("trace.out")
defer f.Close()
trace.Start(f)
defer trace.Stop()
// 트레이싱할 코드
var wg sync.WaitGroup
for i := 0; i < 10; i++ {
wg.Add(1)
go func(id int) {
defer wg.Done()
sum := 0
for j := 0; j < 1000000; j++ {
sum += j
}
_ = sum
}(i)
}
wg.Wait()
fmt.Println("트레이스 분석:")
fmt.Println(" go tool trace trace.out")
fmt.Println()
fmt.Println("확인 항목:")
fmt.Println(" - 고루틴 스케줄링 (Goroutine analysis)")
fmt.Println(" - GC 일시 정지 시간")
fmt.Println(" - 네트워크/시스템 호출 블로킹")
fmt.Println(" - 고루틴 간 동기화 대기 시간")
os.Remove("trace.out")
}학습 팁
go tool trace는 브라우저에서 타임라인을 시각화합니다. 고루틴 스케줄링 병목을 찾는 데 pprof보다 효과적입니다.
주의할 점
트레이싱은 오버헤드가 큽니다. 프로덕션에서는 짧은 시간(<30초)만 활성화하세요.
자주 묻는 질문
트레이싱 (execution trace)란 무엇인가요?
runtime/trace 로 고루틴 스케줄링, GC, 시스템 호출을 시각화합니다.
트레이싱 (execution trace) 학습 시 주의할 점은 무엇인가요?
트레이싱은 오버헤드가 큽니다. 프로덕션에서는 짧은 시간(<30초)만 활성화하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.