페이지 테이블이 잡아먹는 메모리, 얼마나 될까

“2003년 리누스 토발즈는 해시 페이지 테이블을 비판하며 트리 구조는 인접 페이지 항목이 한 캐시라인에 담겨 일반 인텔 CPU가 한 번에 TLB 8개 항목을 채울 수 있다고 주장했다. 2020년 셰이킬 버트는 제로카피 사용자 공간 네트워크 드라이버에서 페이지 테이블 메모리 사용이 큰 사례를 발견했고, 512개 프로세스가 같은 페이지를 매핑하면 PTE 512개(512×8바이트=4KiB)로 데이터 페이지와 맞먹는다. 2002년 안드레아 아르칸젤리는 64GiB x86에서 수백 프로세스가 1GiB 공유 메모리를 매핑해 PAE 기준 약 2MiB 페이지 테이블이 lowmem 약 896MiB를 소진해 메모리 부족이 발생한 사례를 보고했다.”

AI 요약

페이지 테이블이 실제로 얼마나 많은 메모리를 소비하는지에 대한 분석 글이다. 2003년 Linus Torvalds가 해시 페이지 테이블을 비판하며 트리 구조의 캐시 효율성을 강조한 논쟁에서 출발한다. 2020년 Shakeel Butt은 페이지 테이블 메트릭을 memory.stat에 추가하는 패치를 제안했고, Roman Gushchin은 페이지 테이블이 매핑된 메모리의 약 1/512(1% 미만)에 불과하다고 반박했다. 그러나 동일 페이지를 다수 프로세스가 매핑하면 각 프로세스마다 PTE가 필요해 페이지 테이블 비용이 N/512로 증가한다.

핵심 포인트

  • 페이지 테이블은 일반적으로 매핑 메모리의 약 1/512(1% 미만) 차지
  • 512개 프로세스가 동일 PTE를 매핑하면 페이지 테이블 비용이 데이터 페이지와 동일해짐(PTE 8바이트 × 512 = 4KiB)
  • 2002년 Andrea Arcangeli는 64GiB x86 머신에서 수백 프로세스가 1GiB 공유 메모리를 매핑해 메모리 부족 발생 사례 발견
  • 32비트 x86에서 페이지 테이블은 lowmem 영역(~896MiB)에 위치

향후 전망

  • 제로카피 네트워킹, 대규모 공유 메모리 워크로드에서 페이지 테이블 메모리 관리가 더 중요해질 전망
  • 커널 메모리 통계 및 cgroup 관리에서 페이지 테이블 메트릭 활용이 확대될 가능성
출처:hackernews
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...