이 기사는 몰드 링커의 개발자가 리눅스 커널에서 식별한 성능 병목 현상에 대해 논의합니다. 특히, exit(2) 함수는 대규모 프로세스의 경우 수백 밀리초가 소요되어 프로세스 종료의 비효율성을 나타냅니다. 또한, 새 파일에 쓰는 성능이 기존 파일에 쓰는 것에 비해 현저히 느려, 커널의 파일 처리 효율성에 대한 우려를 불러일으킵니다.
개발자는 몰드가 기존 파일을 재사용할 경우 약 1.8초 만에 4 GiB LLVM/clang 실행 파일을 링크할 수 있다고 강조합니다. 그러나 출력 파일이 존재하지 않을 경우, 몰드가 파일을 처음부터 생성해야 하므로 이 시간은 약 2.8초로 증가합니다. 디스크 블록을 미리 할당하기 위해 fallocate(2)를 사용하여 성능을 개선하려는 시도는 성과를 내지 못했습니다. 개발자는 이 크기의 파일을 생성하는 데 소요되는 시간이 정말로 1초에 가까워야 하는지 의문을 제기합니다.
이러한 관찰은 리눅스 커널 내에서 최적화가 필요한 잠재적인 영역을 지적하며, 특히 파일 생성 및 프로세스 관리에서의 개선이 개발자와 사용자 모두의 시스템 성능을 향상시킬 수 있음을 시사합니다.
* 이 글은
phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은
이곳에서 확인하실 수 있습니다.