리눅스(Linux) 커널이 유닉스(Unix) 시대부터 이어져 온 프로세스 생성 방식인 fork()와 exec()의 비효율성을 개선하기 위한 논의를 활발히 진행하고 있습니다. fork()는 부모 프로세스의 전체 상태를 복사하여 자식 프로세스를 생성하고, 이어지는 exec()는 이 복사된 메모리를 대부분 폐기하고 새 프로그램을 로드하는 방식인데, 이 과정에서 상당한 오버헤드가 발생합니다. 특히 Git처럼 동일한 실행 파일을 반복적으로 호출하는 애플리케이션에서 이러한 비효율성이 두드러집니다.
최근 Li Chen이 제안한 ‘스폰 템플릿(spawn templates)’은 이러한 문제를 해결하기 위한 시도 중 하나입니다. 이 제안은 `spawn_template_create()` 시스템 호출을 통해 실행 파일 정보를 커널에 캐시하여 템플릿을 만들고, `spawn_template_spawn()`으로 이 템플릿을 활용해 프로세스 시작을 가속화하는 방식입니다. 벤치마크에서는 약 2%의 성능 개선을 보였지만, Mateusz Guzik과 Christian Brauner 같은 다른 개발자들은 fork() 자체의 비효율성을 완전히 해결하지 못한다는 점을 지적하며, ‘깨끗한(pristine) 프로세스’를 생성하는 새로운 빌더(builder) API 방식이 더 근본적인 해결책이라고 주장했습니다. 이들은 pidfd 기반의 빈 프로세스 생성과 `pidfd_config()`를 통한 설정을 통해 사용자 공간의 `posix_spawn()`을 효율적으로 지원하는 방향을 선호합니다.
이러한 논의는 단순히 성능 개선을 넘어 현대 컴퓨팅 환경에서 프로세스 생성 모델의 근본적인 변화를 시사합니다. Redis와 같이 대량의 메모리를 사용하는 애플리케이션에서는 fork() 호출 시 페이지 테이블 복사만으로도 수 초의 지연이 발생할 수 있어, 이는 서비스의 응답성에 치명적인 영향을 미칩니다. 새로운 프로세스 생성 원시 연산이 도입된다면, 이러한 애플리케이션의 성능을 획기적으로 개선하고, 개발자들이 더욱 효율적인 방식으로 프로그램을 설계할 수 있는 기반을 마련할 수 있습니다. 비록 스폰 템플릿 제안이 현재 형태로 리눅스 커널에 수용되지는 않겠지만, 이 논의는 미래의 리눅스가 더욱 강력하고 유연한 프로세스 관리 기능을 갖추게 될 중요한 전환점이 될 것입니다.