Enterprise Infrastructure Intelligence ● Certified engineers online · Fast response guaranteed
웹서버/DB

Slab Allocation Caching: 메모리 효율성과 객체 캐싱의 원리

Slab Allocation Caching은 커널 메모리에서 자주 할당/해제되는 객체의 재사용 가능성을 활용하여 초기화 비용을 절감하고 외부 단편화를 방지하는 메모리 관리 기법입니다. 객체의 구성된 상태를 캐시에 보존함으로써 할당과 해제를 상수 시간 연산으로 만들어 성능을 획기적으로 개선합니다.

2026.10.05  ·  11회  · 

아키텍처 개요

Slab Allocation은 계층적 구조로 설계되었습니다. 상단의 캐시(Cache) 계층이 클라이언트 인터페이스를 제공하고, 하단의 페이지 할당자(Page Allocator)와 연결되는 2단계 프리리스트 구조를 운영합니다. 각 캐시는 특정 객체 타입에 대해 독립적으로 작동하며, 슬랩(Slab)이라는 1개 이상의 페이지로 이루어진 단위로 메모리를 취급합니다.

객체 캐싱의 핵심 원리

일반적으로 객체 할당/해제 비용보다 생성자/소멸자 호출 비용이 훨씬 큽니다. Slab은 할당된 객체의 "구성된 상태"(mutexes, reference counts, linked lists 등)를 유지하며 캐시하므로, 재사용 시 생성자를 다시 호출하지 않습니다. 이를 통해 Stream Head 객체의 할당/해제 비용을 33μsec에서 5.7μsec로 단축할 수 있습니다.

실무적 주의점과 설계 고려사항

CPU별 활성 슬랩 구조(SLUB의 경우)에서 할당은 락 없이 수행되지만, 부분 채워진 슬랩 목록으로 전환할 때는 느린 경로를 거칩니다. 색상화(Coloring) 기법으로 동일 크기 객체들이 CPU 캐시 라인에 균등 분배되도록 하여 버스 불균형을 43%에서 17%로 감소시킵니다. 내부 단편화는 1/n 이상 초과하지 않도록 슬랩 크기로 제어 가능합니다.

WIKIDATA WORKSTATION
AI·렌더링에 최적화된
전문가용 워크스테이션
NVIDIA RTX GPU · 최대 192GB 메모리 · ECC 지원