리눅스 커널에 새로운 프로세스 생성 방식 'spawn template' 제안
원제: Moving beyond fork() + exec()
왜 중요한가
기존 프로세스 생성 방식의 성능 병목을 해결하여 시스템 전반의 효율성을 향상시킬 수 있는 혁신적 접근법
Li Chen이 리눅스 커널에 기존 fork() + exec() 방식을 개선하는 'spawn template' 시스템콜을 제안했다. 동일한 실행파일을 반복 실행하는 애플리케이션에서 성능을 최적화하기 위해 템플릿을 미리 생성해 설정 비용을 분산시키는 방식이다.
Unix 초기부터 사용된 fork()와 exec() 시스템콜은 프로세스 생성의 핵심이지만 성능상 한계가 있다. fork()는 부모 프로세스의 전체 상태를 자식 프로세스로 복사하는 비용이 크고, 이어지는 exec()가 복사된 메모리를 버리는 비효율성이 있다. Li Chen의 spawn template 제안은 이 문제를 해결하기 위해 spawn_template_create() 시스템콜로 실행파일에 대한 템플릿을 미리 생성하고, 이를 통해 반복 실행 시 성능을 향상시키는 방식이다. 템플릿은 파일 디스크립터나 절대 경로로 실행파일을 지정할 수 있으며, spawn_template_spawn_args 구조체로 각 실행의 세부사항을 설정한다. Git 같은 프로그램을 반복 실행하는 애플리케이션에서 특히 유용할 것으로 예상된다. 현재 형태로는 커널에 수용되지 않을 것으로 보이지만, 향후 새로운 프로세스 생성 방식의 방향을 제시할 수 있다.