Abstract
PM의 필요성
-PM(Persistent Memory)는 시스템 업그레이드를 위한 이상적인 후보
-현재의 Enterprise System에 PM을 사용하는 것은 호환성 및 대규모 수정 측면에 큰 장벽
-DRAM과 같은 방식으로 사용할 수 있도록 Transparent하게 설계
문제점
-Big Data Application이 In Memory Computing을 수행하려면 대용량 메모리 필요
-하지만, 현재 DRAM을 계속 확장하는 것은 비용, 공간, 소모 전력의 벽에 부딪힌다.
-ReRAM, STT-RAM 및 3D Xpoint 와 같은 PM모듈의 등장으로 DRAM과 유사한 성능을 제공할 수 있다. (Table 1)
-Persistent적 특징을 사용하려면 Memory management, Swap, Page faults등 기존 메커니즘을 수정해야하며, OS 부팅 및 종료 때에도 보안적 문제가 발생 가능하다.
제안
-해당 논문에서는 Persistent적인 특징을 사용하지 않고, 더 큰 용량의 이점만 사용한다. 용량 이점을 최대한 활용하는 동시에 application 및 OS에 대한 불필요한 변경을 최소화 하도록 한다.
-DRAM과 같이 PM Management 하는 방식을 제안한다.
-Agile 체계를 사용해 필요한 PM 리소스만 할당하여 Metadata를 최소화 하며, I/O작업을 줄이며 PM에 대한 빠른 액세스를 제공한다.
-User level에서의 PM 공간을 직접 사용할 수 있도록 Programming interface 제공
Background
Benefits of Tapping into PM
-PCM, ReRAM, STT-RAM등의 새로운 PM장치들은 DRAM과 가까운 액세스 시간을 제공한다.
-새로운 PM장치들은 DRAM에 비해 몇배의 용량의 이점을 가지고 있다.
-메모리 집약적 응용프로그램의 경우 용량을 위해 약간의 메모리 대역폭 성능의 희생을 할 수 있다.
Issues with PM Integration
-Persistent 특징으로 인한 시스템 주요 기능들의 수정들이 필요로 한다. 하지만 이러한 대규모 수정들은 PM을 DRAM의 대안으로 빠르게 수정하는 것에 대한 장벽이 된다.
-PD(Page Descriptor)는 페이지 관리 정보를 담고있으며 56Byte를 차지한다. 만약 1TB PM에서 4KB의 Page를 관리하려면 14GB(1TB/4KB * 56B)이 필요로 한다.
-사용중인 메모리 용량의 영향으로 에너지 소비량이 증가한다. (Fig1, 2)
Main Goal of This Paper
-기존 DRAM Sub System에 PM과의 상생을 빠르게 촉진하는 것
-최소한의 비용으로 메모리 용량을 확장하고 In Memory Computing을 향상시키는 가볍고 호환성 높은 시스템
-성능/에너지 오버헤드를 줄이기 위한 전략
Analysis
Architecture Analysis
-PM을 NUMA 의 주 메모리의 Sub system에 통합하기 위한 여러가지 옵션이 존재
-A1: PM 미사용, A2: PM이 Disk로 사용, A3: PM이 주 메모리로 사용, A4: DRAM을 PM을 위한 버퍼로 사용, A5: Flat address space로 사용
-A6: PM, DRAM을 모두 사용(A5와 유사), PM으로만 구성된 다른 NUMA node를 생성하여 DRAM과 같이 사용, PM의 부분적인 공간만 시스템에 사용(Metadata를 감소), Page Descriptor or Page Table등 자주 수정되는 데이터는 DRAM에 저장
Proposed Technic
Overview
-DRAM Node1, PM Node 2,3,4 는 Flat address space
-Kernel은 OS 이미지를 로드한후 DRAM Node1에서 부팅, AMF는 모든 PM Node가 Inactive상태.
-AMF는 Kpmemd, HRU(Hide/Reload Unit), On-Demand Mapping Unit으로 구성
-Kpmemd는 Memory Footprint가 한계에 도달하면 적절한 PM 공간을 제공 (Manager0는 DRAM, Manager 1,2..는 PM을 관리
-HRU는 PM리소스를 숨기고 다시 로드하는 역할을 한다.(PM은 ZONE_NORMAL에 추가공간 제공 가능)
-Dynamic On-Demand Mapping Unit 은 PM access 기능을 제공
Conservative Initialization
-부팅단계에서 모든 하드웨어 리소스를 초기화하지 않는다.
-Profiling, redefining, preparing, launching 4단계로 구성
-Profiling : 물리적 메모리 영역을 감지, 해당 정보를 사용 가능한 형식으로 변환(Predefined Area)
-Predefining : PM 공간을 숨기기 위해 메모리의 상한값을 Node1의 DRAM 프레임 번호로 대체
-Preparing : 단계는 Sparse Memory Model을 초기화, 메모리 공간을 여러 Section으로 나뉘고, Page Descriptor는 각 Section의 헤드로 초기화
-Launching : Buddy System을 시작, PM의 일부만 초기화, 이외 공간은 Detectable 하지만 Access 불가능
Dynamic PM Provisioning
-Runtime 동안 AMF는 Memory Footprint를 감시
-DRAM공간이 부족할 때 AMF는 PM공간을 요청
-Probing : 영역 분포와 용량 범위 정보를 획득, Real mode에서 획득된 정보를 Protect Mode로 전달된 다음 64bit Mode로 전달되도록 한다.
-Extending : Total Physical Page Frame Number를 확장
-Registering : 추가된 PM공간을 Resource Tree에 등록(Linux에서 리소스를 관리하기 위한 Data Structure)
-Merging : 추가된 PM공간을 기존 시스템에 병합,
Memory Watermarks
-실행중인 시스템의 현재 메모리 부족을 나타낸다.
-Page min은 중요한 할당을 위해 사용가능 해야하는 최소 메모리 공간을 식별
-Page low는 Warning line, free page가 더 아래로 떨어지면 kswapd라는 Kernel Thread가 실행되어 Swap을 실행하게 된다.
-Page high는 임계 값, free page가 이보다 크면 Swap을 하지 않는다.
-Kpmemd가 kswapd보다 먼저 실행되어 메모리 부족을 먼저 완화한다.
Lazy PM Reclamation
-점유된 PM의 Page Descriptor 공간을 해제하면, Buddy System에서 PM page를 제거해야 한다.
-DRAM Space Saving 비율이 임계 값보다 높으면 해제된 PM공간을 제거한다.
Direct PM Pass Through
-기존 Kernel은 mmap system call을 이용해 효율적인 file access 를 제공한다.
-/dev/pmem_1GB_addr1 이러한 구성을 사용해 PM공간을 할당 가능하도록 한다.
'개인 공부 > 논문' 카테고리의 다른 글
LSP Collective Cross-Page Prefetching for NVM (0) | 2021.03.10 |
---|---|
Towards Efficient NVDIMM-based Heterogeneous Storage Hierarchy Management for Big Data Workloads (0) | 2021.03.08 |
The gem5 Simulator (1) | 2021.03.08 |
Don’t Shoot Down TLB Shootdown (1) | 2021.02.16 |
Hybrid2: Combining Caching and Migration in Hybrid Memory Systems (0) | 2021.02.16 |