리눅스 커널 6.11 버전에서 가상 동적 링크 공유 객체(vDSO)에 getrandom() 함수 지원이 성공적으로 통합되었습니다. 이는 사용자 공간 난수 생성 성능 향상을 위한 중요한 개선 사항입니다. 이 작업은 2년 동안 진행되었으며, 이전 구현 방식 대비 최대 15배 성능 향상을 보여주었습니다. 이를 통해 사용자 공간 애플리케이션에서 빠르고 안전하게 난수 바이트를 생성할 수 있게 되었습니다.
이 작업은 WireGuard에 기여한 것으로 알려진 Jason Donenfeld가 주도했으며, 최근 난수 생성기(RNG) 업데이트 풀 요청의 일부로 코드를 제출했습니다. 처음에는 Linus Torvalds로부터 회의적인 반응을 받았지만, 제안이 재검토되어 최종적으로 수락되었으며, 이는 리눅스 커널 발전에 있어 주목할 만한 이정표가 되었습니다.
이 구현에서는 새로운 메모리 매핑 유형인 MAP_DROPPABLE을 도입했습니다. 이를 통해 커널은 메모리 압박 상황에서 페이지를 제로화할 수 있어, 디스크 스왑 없이 메모리 할당이 가능해졌습니다. vDSO의 getrandom() 함수는 일반적으로 구현되어 random.c에 통합되었으며, 초기 구현은 x86 아키텍처를 대상으로 하였고, arm64 버전 작업도 진행 중입니다.
이 발전은 사용자 공간 애플리케이션의 난수 생성 효율성을 크게 향상시킬 것으로 기대되며, 안전한 난수 생성 요구 사항에 대한 강력한 솔루션을 제공할 것입니다.
* 이 글은
phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은
이곳에서 확인하실 수 있습니다.