PHpullh
학습 라이브러리/Go/트레이싱 (execution trace)

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초)만 활성화하세요.