핵심 요약
NAVER D2가 Airflow의 멀티프로세싱 PoC를 통해 fork와 spawn의 차이와 메모리 특성을 비교했습니다.
구현 방법
- fork는 부모 실행 환경을 승계하고 Copy-on-Write로 메모리 공유를 활용, spawn은 새 인터프리터를 시작해 모듈 재등록이 필요합니다.
- Linux smaps_rollup으로 RSS/PSS/USS를 측정하고 10개 자식 프로세스로 벤치마크했습니다.
주요 결과
- 생성 시간: fork 4.3 ms, spawn 206.6 ms
- import 시간: fork 거의 0 ms, spawn 2694.8 ms
- 자식 PSS/USS: fork 9.4/1.9 MB, spawn 83.5/81.4 MB
- 총 메모리: fork 120.8 MB, spawn 918.2 MB
의의
fork의 성능 이점은 크지만 부모 자원 승계 위험과 Python의 COW 비효율이 남아 있습니다.
