위키득계정 ↗
기술

snmalloc

snmalloc기술
주요 역할
동시 메모리 할당과 해제
핵심 방식
메시지 전달 기반 원격 해제
사용 형태
C++ 라이브러리와 할당기 대체
추가 구성
강화된 보호 기능
snmalloc은 여러 스레드의 메모리 할당과 해제를 처리하는 할당기다. 다른 스레드에서 해제한 공간을 메시지 전달로 원래 할당기에 돌려보내 재사용하며 대량 해제와 스레드 간 해제를 주요 설계 대상으로 삼는다.

할당한 스레드와 해제하는 스레드

같은 스레드가 할당하고 해제하는 경우 동기화 작업을 피하는 경로를 사용한다. 다른 스레드에서 해제하면 잠금 대신 메시지 전달 체계로 원래 할당기에 공간을 반환한다. 이 차이를 명시적으로 다루는 것이 핵심 설계다.

해제를 모아 전달하는 구조

여러 원격 해제를 묶어 원자적 작업의 비용을 나눌 수 있도록 한다. 큰 페이지 범위를 이용해 필요한 메타데이터를 줄이는 설계도 사용한다. 한 스레드가 할당한 객체를 다른 스레드가 대량으로 해제하는 상황을 주요 사용 조건으로 고려한다.

연결 방식과 보호 기능

헤더 기반 C++ 라이브러리로 포함하거나 지원 환경에서 기본 할당기를 대체하는 방식으로 사용할 수 있다. Rust용 연결 구성도 있다. 강화된 구성은 할당 위치 무작위화와 메타데이터 분리 및 손상 탐지와 가드 페이지 등의 보호 기능을 제공한다.

관련 문서

mimalloc / jemalloc / gperftools / 메모리 관리 / Rust / 프로세스