데브허브 | DEVHUB | Go just got a massive speed upgrade...Go just got a massive speed upgrade...
- 가비지 컬렉션(GC)은 예측 불가능하며, 특히 프로덕션 환경에서 CPU 사용량 급증 및 중요한 워크로드 중단을 야기할 수 있는 복잡한 문제였습니다. ⚠️
- Go의 기존 GC는 '트라이-컬러 마킹' 알고리즘을 사용했으나, 메모리 레이아웃이나 접근 패턴을 고려하지 않아 현대 다중 코어 아키텍처에서 캐시 미스 및 CPU 대기 시간 증가의 주범이었습니다. 📉
- 내부 프로파일링 결과, Go GC 시간의 85%가 마킹 단계의 스캔 루프에서 발생하며, 이 중 35% 이상의 CPU 사이클이 메모리 접근 대기에서 낭비되는 것으로 나타났습니다. 📊
- Go 팀은 이러한 비효율성을 해결하기 위해 '그린 티(Green Tea)'라는 새로운 메모리 인식형 GC를 도입했습니다. 🍵
- 그린 티는 개별 객체 대신 8KB 크기의 메모리 블록(스팬) 전체를 스캔하여 메모리 공간 지역성을 개선하고 캐시 미스를 줄이는 방식으로 작동합니다. 🧠
- 초기 벤치마크 결과, 그린 티는 GC 오버헤드를 35% 감소시키고, 지연 시간을 줄이며, 처리량을 향상시키고, CPU 캐시 미스를 절반으로 줄이는 인상적인 성능 향상을 보였습니다. 🚀
- 하지만 그린 티는 현재 소형 객체에 중점을 두고 있으며, 특정 워크로드(낮은 지역성, 빠르게 변하는 트리 구조)에서는 GC 속도 향상이 다른 프로그램 부분의 병목 현상을 유발하여 성능이 저하될 수도 있습니다. 🚧