개요
Tree-sitter 파싱 시 동시성이 runtime.NumCPU()로 제한되지만, 고코어 머신에서 대규모 파일 동시 파싱 시 Tree 객체 메모리 누적 가능.
현재 상태
parser.go:195-200에서 tree := pp.parser.Parse(content, nil) 후 defer tree.Close()
- 동시성은 extractor 세마포어(
NumCPU())로 제한
- MaxFileSize=500KB 제한 존재
영향
- 64-core 머신에서 최악 경우 64 * 500KB = 32MB 수준 (현재는 예측 가능)
- 향후 MaxFileSize 증가 또는 대규모 프로젝트에서 메모리 압박 가능
개선 방안
- 파일 크기 기반 동적 concurrency 조절
- 또는 동시 파싱 중인 총 소스 크기에 대한 상한 설정
runtime.MemStats 모니터링으로 메모리 압박 감지
관련 파일
pkg/parser/treesitter/parser.go:195-201 — Tree 생성 및 해제
pkg/extractor/extractor.go:159-177 — 세마포어 기반 동시성 제어
개요
Tree-sitter 파싱 시 동시성이
runtime.NumCPU()로 제한되지만, 고코어 머신에서 대규모 파일 동시 파싱 시 Tree 객체 메모리 누적 가능.현재 상태
parser.go:195-200에서tree := pp.parser.Parse(content, nil)후defer tree.Close()NumCPU())로 제한영향
개선 방안
runtime.MemStats모니터링으로 메모리 압박 감지관련 파일
pkg/parser/treesitter/parser.go:195-201 — Tree 생성 및 해제pkg/extractor/extractor.go:159-177 — 세마포어 기반 동시성 제어