운동하는 공대생
[논문] PALLOC: DRAM Bank-Aware Memory Allocatorfor Performance Isolation on Multicore Platforms 본문
[논문] PALLOC: DRAM Bank-Aware Memory Allocatorfor Performance Isolation on Multicore Platforms
운동하는 공대생 2025. 1. 12. 14:46논문
https://ieeexplore.ieee.org/document/6925999
PALLOC: DRAM bank-aware memory allocator for performance isolation on multicore platforms
DRAM consists of multiple resources called banks that can be accessed in parallel and independently maintain state information. In Commercial Off-The-Shelf (COTS) multicore platforms, banks are typically shared among all cores, even though programs running
ieeexplore.ieee.org
Intro
PALLOC는 현대의 운영 체제의 페이지 기반 가상 메모리 시스템을 활용하여 특정 DRAM Bank에 메모리를 할당하는 방법
Dram bank sharing의 문제
- multicore의 데이터가 하나의 bank에 저장될 수 있다.
- bank에 데이터들이 잘 분산되어 있다고 하더라도 같은 bank에 다른 core가 동시에 접근하여 성능 감소가 일어난다. ( 같은 bank 다른 row에 접근하여 pre-charge가 지속적으로 발생)
이것을 해결하기 위해 이전까지는 독자적인 core의 bank를 배정하거나 하드웨어를 직접 분할하는 방식을 사용했다면 이 논문은 소프트웨어적으로 이것을 해결하였다.
PALLOC
예측 불가능한 multicore 시스템의 메모리 할당을 최소화한다.
PALLOC의 주요 방식은 bank bins에 있는데 원래 기존의 방식은 OS에서 freelist를 가지고 free page에 대한 정보를 가지고 있다. 하지만 multicore는 이런 bank 간의 충돌이 발생할 가능성이 있기 때문에 이런 것을 최소화하기 위하여 각각의 bank마다 free page가 어디인지 정보가 담긴 bank bins를 활용한다.
먼저 free page를 찾는다면 bins를 먼저 확인하는데 이는 각 코어마다 할당된 bank의 bank bins를 확인하는 결과라 multicore의 충돌문제를 완화한다. 하지만 bins에도 page가 없다면 그다음으로 freelist를 탐색하면 freepage를 찾는다.
그래서 실시간 메모리 allocation이 아니라 메모리 allocation 이후 실시간 performance를 측정한다.
PALLOC은 기본적으로 리눅스에서 구현을 하였으며 메모리 할당하는 알고리즘인 buddy 방식을 변형하였다. Order 1 (4 KiB) page allocation 방식은 PALLOC을 사용하며 나머지 더 큰 사이즈의 Order 1, Order 2는 기존의 buddy 방식을 사용했다.
Bank 메모리의 분할을 cgourp을 활용해서 분할하며 메모리가 부족해지면 안전을 위해 OOM killer를 사용한다.
PALLOC의 발생 가능한 잠재적인 문제 중 하나는 공유 page 문제이다. 왜냐하면 bash 프로그램을 사용하면 bank에 다시 allocation 하는 게 아니라 공유를 한다. 그래서 이런 문제를 해결하기 위해서 page-migration 방식을 사용한다. ( NUMA page migration과 비슷)