[논문 리뷰] User Mode Memory Page Allocation: A Silver Bullet For Memory Allocation?
이 논문은 커널에서 사용자 공간으로 메모리 페이지 할당을 이동시켜 MMU 페이지 매핑에 직접적인 바이트 메탈 접근을 가능하게 하는 사용자 모드 페이지 할당기의 제안을 한다. 벤치마크 결과 0–8MB 블록에 대해 할당 속도가 최대 10배 빨라지고, 리사이징 속도가 최대 4.5배 빨라지며, 실제 응용 프로그램에서 최대 5.68% 향상되는 것으로 나타나, 전체 운영체제 지원과 새로운 할당기 API를 통한 100배 성능 향상 가능성이 제기된다.
This paper proposes a novel solution: the elimination of paged virtual memory and partial outsourcing of memory page allocation and manipulation from the operating system kernel into the individual process' user space - a user mode page allocator - which allows an application to have direct, bare metal access to the page mappings used by the hardware Memory Management Unit (MMU) for its part of the overall address space. A user mode page allocator based emulation of the mmap() abstraction layer of dlmalloc is then benchmarked against the traditional kernel mode implemented mmap() in a series of synthetic Monte-Carlo and real world application settings. Given the superb synthetic and positive real world results from the profiling conducted, this paper proposes that with proper operating system and API support one could gain a further order higher performance again while keeping allocator performance invariant to the amount of memory being allocated or freed i.e. a 100x performance improvement or more in some common use cases. It is rare that through a simple and easy to implement API and operating system structure change one can gain a Silver Bullet with the potential for a second one.
연구 동기 및 목표
- 메모리 용량이 메모리 속도를 앞서면서 커널 모드 할당으로 인한 성능 저하 문제를 해결한다.
- 사용자 공간으로 페이지 할당을 이동시켜 커널 트랩을 제거하고 할당 오버헤드를 줄일 수 있는지 조사한다.
- 기존 커널 관리 mmap() 호출의 대체로 사용자 모드 페이지 할당기의 실현 가능성과 성능을 평가한다.
- 배치 할당을 지원하고 주소 재할당을 방지하는 스케일 인variant 할당기 API의 잠재력을 탐색한다.
- 사용자 모드 페이지 할당이 현대의 메모리 집약적 워크로드를 위한 새로운 세대 고성능 할당기의 구현을 가능하게 할 수 있는지 판단한다.
제안 방법
- 사용자 공간 메모리 관리 기반으로 mmap() 시스템 호출 인터페이스를 모방하는 사용자 모드 페이지 할당기 설계 및 구현.
- 합성 몬테카를로 워크로드와 실제 응용 프로그램에서 표준 커널 모드 mmap()과 사용자 모드 할당기를 비교 벤치마크 수행.
- 기존 바이너리에 손대지 않은 상태에서 시스템 할당기를 사용자 모드 할당기로 교체하기 위해 바이너리 패치를 사용하여 실제 배포 환경을 시뮬레이션.
- 다양한 블록 크기(0–8MB), 할당 패턴, 메모리 접근 특성에 따라 성능 측정.
- 캐시 동작과 페이지 퍼트 처리 영향을 분석하여 캐시 오염 감소가 성능 향상에 기여하는지 평가.
- 배치 할당 및 효율 향상을 위한 힌트를 지원하는 N1527 C1X malloc API 확장 사양을 제안하고 참조.
실험 결과
연구 질문
- RQ1사용자 모드 페이지 할당이 메모리 할당 중 커널 트랩으로 인한 성능 저하를 제거할 수 있는가?
- RQ2사용자 모드 페이지 할당이 다양한 메모리 블록 크기에서 스케일 인variant 성능을 달성할 수 있는가?
- RQ3페이지 퍼트 핸들러를 피함으로써 감소한 캐시 오염이 할당 성능에 어떤 영향을 미치는가?
- RQ4소스 코드 변경 없이 사용자 모드 페이지 할당이 실제 응용 프로그램 성능을 얼마나 향상시킬 수 있는가?
- RQ5전통적인 커널 관리 할당과 비교했을 때, 제안된 사용자 모드 접근 방식은 분할, 국소성, 확장성 측면에서 어떤가?
주요 결과
- 사용자 모드 할당기는 1MB 이하 블록 크기까지 스케일 인variant 성능을 달성하여 할당 크기에 관계없이 일관된 동작을 보였다.
- 0–8MB 범위의 블록 크기에서 사용자 모드 할당기는 커널 모드 mmap() 호출 대비 최대 10배 빠른 성능 향상을 보였다.
- 블록 리사이징 성능은 사용자 모드 할당기를 통해 최대 4.5배 향상되어 재할당 작업의 오버헤드 감소를 시사했다.
- 비페이징 메모리 환경에서 매우 작은 할당에서는 2배의 성능 향상이 관찰되었으며, 이는 페이지 퍼트 핸들러를 피함으로써 캐시 오염 감소가 기여했을 가능성이 있다.
- 바이너리 패치된 응용 프로그램을 대상으로 한 실제 테스트에서 1개를 제외한 모든 시나리오에서 성능 향상이 관찰되었으며, 평균 1.88% 향상, 중앙값 1.20% 향상되었다.
- 연구 결과는 운영체제 전체 및 API 지원이 완료될 경우, 빈번하거나 큰 할당을 포함한 워크로드에서 추가로 10배에서 100배 성능 향상이 가능할 것으로 제안된다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.