crownyc 문자열 GC 마크스코프 실측 + 강제GC 검증 (T171+T172)
개요
집사회 티켓 T171(GC 계측)+T172(강제GC 재검증)을 같은 계측 빌드 묶음으로 실행. 대상: crownyc.c str_gc() (opcode 363문자열GC()), 부하: 의미어라우터_모델.psv
(46,074줄) 벌크로드를 5회 반복하는 gc_harness.한선.정본 crownyc는 건드리지 않음. 모든 빌드/실험은 /tmp/gc_test2/ 에서만 진행.
T171 — GC 마크 스코프 실측
- 계측 빌드:
/tmp/gc_test2/crownyc.c(정본 crownyc.c 복사본)의str_gc()끝에
fprintf(stderr,"[GCLOG] run=%d before=%d after=%d freed_this=%d ...") 1줄 추가.
make crownyc로 /tmp/gc_test2/crownyc 빌드(정본 컴파일러 hanseonc_high는 무수정).
[STR] 조기경고 90% 1회만 발화(캡 도달 반복돼도 static 플래그로 1회 제한)T172 — 강제GC 재검증
의미어라우터_코어.한선을 카피(의미어라우터_코어_forcegc.한선)해 모델로드() 라인루프에
라인카운트 % 2000 == 0 마다 문자열GC()(기존 opcode 363, 이미 hanseonc_high에
문자열GC 빌트인 매핑 존재 — 신규 VM 빌트인 불필요) 호출 삽입.
판정 (VM 수리 필요/불필요)
- VM(str_gc 마크 로직) 수리 불필요. 마크 스코프(스택+변수영역+힙영역 스캔)는
- 운영 권고(수리 아님, 호출측 개선): 대용량 벌크로드 루프(46k줄+ psv/csv 등)는
문자열GC() 명시 호출 권장.
실측상 90% 조기경고 소멸 + 성능 10% 개선 + 정확도 손실 없음 확인.
- 캡 자체(STR_ID_MAX=480000)는 단일 모델로드() 1회 호출로도 도달하는 수준 —
관련 파일
- 계측 빌드(측정용, 정본 아님):
/tmp/gc_test2/crownyc.c,/tmp/gc_test2/crownyc - 부하 하네스:
/tmp/gc_test2/gc_harness.한선(무강제),/tmp/gc_test2/gc_harness_force.한선(강제GC) - 강제GC 적용 로더 사본:
/tmp/gc_test2/의미어라우터_코어_forcegc.한선 - 실측 로그:
/tmp/gc_test2/stderr.log(T171),/tmp/gc_test2/stderr_force.log(T172) - 원본(무수정) 정본:
/Users/ef/CrownyOS/crownyc/crownyc.c,/Users/ef/crowny-butler/libs/의미어라우터_코어.한선
잔여 이슈
의미어라우터_코어.한선라이브 정본에 2000줄 단위문자열GC()강제 호출을
- 강제GC 주기(2000줄) 최적값 튜닝은 미실시(1회 값으로 효과 확인만).