피드로 돌아가기
Go 1.25 Green Tea GC: Why the 40% Number Is Real for Some Workloads
Dev.toDev.to
Infrastructure

Go 1.25 Green Tea GC: Page-centric 스캔으로 GC CPU 최대 40% 절감

Go 1.25 Green Tea GC: Why the 40% Number Is Real for Some Workloads

Gabriel Anhaia2026년 4월 28일11advanced

Context

기존 Go의 tri-color mark-sweep 방식은 객체 단위의 무작위 메모리 접근으로 인해 CPU Stall이 빈번히 발생하는 한계 존재. 실제 Mark 시간의 35% 이상이 메인 메모리 대기 시간으로 소모되는 성능 병목 지점 확인.

Technical Solution

  • 작업 단위를 개별 Object에서 8 KiB Page(Small object span) 단위로 변경한 Page-centric 구조 설계
  • 동일 페이지 내 여러 포인터가 누적될 때까지 대기 후 한 번에 스캔하는 방식으로 Memory Access Pattern 최적화
  • CPU Prefetcher가 예측 가능한 순차적 읽기 루프를 통해 메모리 지연 시간 최소화
  • 각 슬롯에 'seen' 및 'scanned' 비트 메타데이터를 배치하여 스캔 상태 관리
  • AVX-512 VGF2P8AFFINEQB 명령어를 활용한 벡터 가속으로 페이지 오버헤드 제거 및 처리 속도 극대화
  • 512 bytes 이하의 Small Object에 최적화된 경로를 통해 캐시 효율성 제고

- 힙 내 512 bytes 이하 Small Object의 비중 및 페이지당 생존 객체 밀도 분석 - gctrace를 통한 Mark phase CPU 사용량의 정량적 변화 측정 - 실제 운영 환경의 Allocation Profile을 반영한 Shadow Traffic 테스트 수행 - Go

1.26 업그레이드 전 GOEXPERIMENT=greenteagc 플래그를 통한 성능 회귀 여부 검증

원문 읽기