피드로 돌아가기
I Built malloc() from Scratch in C — Here’s What Went Wrong
Dev.toDev.to
Infrastructure

Batch 처리 효율 극대화 및 Memory Allocator 설계 최적화 분석

I Built malloc() from Scratch in C — Here’s What Went Wrong

Prajwal zore2026년 4월 26일2advanced

Context

메모리 할당자의 내부 동작 원리 및 Fragmentation, Concurrency 제어 메커니즘 분석을 위한 맞춤형 구현 사례임. 일반 목적의 glibc malloc 대비 특정 시나리오에서의 성능 우위 확보 및 설계상 한계점 도출을 목표로 함.

Technical Solution

  • Thread-local cache 도입을 통한 스레드 간 경합 감소 및 할당 속도 향상 설계
  • 요청 크기별 Free lists(bins) 구조를 통한 메모리 재사용 효율 최적화
  • 대규모 메모리 요청 시 시스템 콜 오버헤드 감소를 위한 Direct mmap 방식 채택
  • new_size <= old_size 조건 시 In-place shrink 로직을 적용한 realloc() 메모리 오염 방지
  • Fast path 로직 단순화를 통한 Batch allocation/free 연산의 오버헤드 최소화

Impact

  • Batch alloc/free 성능: 구현체(1.46ms/0.50ms)가 glibc(3.40ms/0.95ms) 대비 우위 확보
  • Single-threaded Mixed sizes 성능: glibc(~2.5ms) 대비 구현체(~126ms)의 성능 저하 확인

1. Mixed Allocation Size 대응을 위해 정밀한 Size Class 설계 검토

2. Thread-local Cache 도입 시에도 잔존하는 Global State 경합 지점 식별

3. 메모리 오염 방지를 위한 realloc() 시 크기 변화 조건별 분기 처리 검증

4. 저수준 메모리 버그 추적을 위한 gdb 등 디버깅 툴셋 활용 체계 구축

원문 읽기