책너두 (컴퓨터 밑바닥의 비밀) 18일차 고성능 서버의 메모리 풀 구현

  • 메모리 풀 vs 범용 메모리 할당자
  • 범용 메모리 할당자인 malloc 은 표준 라이브러리의 일부임.
    • 설계 및 구현이 비교적 복잡함.
  • 메모리 풀은 응용 프로그램의 일부임.
    • 설계 및 구현이 비교적 간단함.
    • 특정 상황에서만 메모리 할당 성능을 최적화하기에 범용성이 매우 떨어짐.
  • 메모리 풀 기술의 원리
  • 한 번에 큰 메모리 조각을 요청하고 그 위에서 자체적으로 메모리 할당과 해제를 관리하는 방식임.
    • 표준 라이브러리와 운영 체제를 우회함.
    • 특정 사용 패턴에 따라 최적화도 가능함.
      • ex) 서버에서 사용자 요청을 처리할 때마다 여러 종류의 객체를 생성해야 한다면, 자체 메모리 풀에서 미리 이 객체를 생성해 두는 것이 가능함.
  • 초간단 메모리 풀 구현
  • ex) 서버 프로그래밍
    • 단 한 종류의 객체만 사용한다면, 미리 객체를 메모리로 생성하여 실제 사용할 때마다 하나쌕 꺼냄.
    • 사용이 끝나면 반환함.
      • 특정 객체나 데이터 구조만 할당할 수 있다는 한계가 있음.

댓글

Designed by JB FACTORY