Skip to content

perf: 대규모 동시 파싱 시 Tree 객체 메모리 사용량 제한 검토 #301

@TransparentDeveloper

Description

@TransparentDeveloper

개요

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 — 세마포어 기반 동시성 제어

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestversion:minorNew feature - minor version bump

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions