1. Intel Optane DC Persistence Memory Module
(DCPMM)
성능 테스트
2019.11
freepsw
2. Intel Optane DC Persistent Memory Module?
DRAM과 SSD를 모두 지원하는 새로운 메모리 기술
(하나의 제품으로 메모리와 스토리지(SSD)를 선택적으로 활용 가능)
https://gigglehd.com/gg/hard/4656822
• ‘메모리 모드’ 에선 퍼시스턴트 메모리를 더 큰 용량의 DRAM처럼 이용하므로 기존 소프트웨어의 구동에 문제가 없다.
• 하지만 ‘앱 다이렉트 모드’에선 다른 메모리의 자원을 이용하며, 소프트웨어 구조의 일부를 바꿔야 한다.
https://it.donga.com/29553/
3. 1. 테스트 목표
Optane DCPMM과 기존 DRAM 대비 성능을
Big Data Opensource (Redis, Spark+Alluxio) 레벨에서 검증하고, 효과적인 활용방안 검토
메모리(DRAM)
성능 비교
DCPMM
활용 방안
• DRAM 대비 처리 성능 (Read/Write)
• Spark + Alluxio, Redis 등의 테스트 결과를
• 반영한 활용방안 검토
4. 2. 테스트 환경 구성
Spark Cluster Alluxio Cluster
Node 01 Node 02 Node 03 Node 04 Node 05
Master
Worker-
01
Worker-
02
Worker-
03
Worker-
04
Worker-
05
Master
Worker-
01
Worker-
02
Worker-
03
Worker-
04
Worker-
05
Spark에서 Alluxio 메모리를 활용하여
데이터를 입/출력하는 시간 비교
Spark-Alluxio 환경 구성 Redis 환경 구성
메모리 기반의 오픈소스인 Alluxio와 Redis를 대상으로 Read/Write 성능을 비교
Redis Benchmark 도구를 활용한
입/출력 시간 비교
Node 01
(16 Core, 128 Mem)
Node 02
(16 Core, 128 Mem)
Benchmark
Tool
Benchmark
Tool
DRAM DCPMM
Node : 16Core, 128G Mem
DRAM DCPMM
5. Alluxio 란??
다양한 스토리지에 저장된 데이터를 Alluxio를 통해
일관되고 빠르게 처리할 수 있는 메모리 기반 파일 시스템
• 다양한 데이터 소스에서 작업에 필요한 데이터를 미리 Alluxio에 로딩하고,
• 대용량의 배치 작업을 메모리에서 빠르게 처리 가능함.
• 따라서 많은 메모리 용량이 필요하며, DCPMM을 활용하기 효율적으로 판단됨
메모리에 로딩
6. Redis 란?
메모리 기반 캐시를 지원하는 기술로
빠를 처리가 필요한 데이터를 Redis(메모리)에 저장/조회 하는 기술
• 실시간 빅데이터를 빠르게 처리하기 위해서는 Disk I/O를 최대한 줄여야 하므로,
• 메모리에 빠르게 참조 가능한 데이터를 저장하는 것이 필수적이다.
• Redis는 이러한 실시간 빅데이터 환경에서 빠른 데이터 참조/조회를 위해서 많이 활용되므로, DPCMM의 테스트 대상으로 선정하였다
Biz 요건에 따라 많은 메모리
공간 필요
https://www.youtube.com/watch?v=kUmrYQO51uA
7. 3. POC 테스트 시나리오
구분 테스트 시나리오 내용 측정 항목
Spark + Alluxio
Spark Executor의 병렬(분산)
수준에 따른 성능 비교
• Spark에서 Alluxio에서 데이터를 읽고,
• Spark에서 Alluxio에 데이터를 저장 - 처리시간(Read + Write)
Spark + Alluxio Spark Executor의 메모리
할당량에 따른 성능 비교
• Spark에서 Alluxio에서 데이터를 읽고,
• Spark에서 Alluxio에 데이터를 저장
- 처리시간(Read + Write)
Redis 데이터 값 증가에 따른 성능 비교
• 50개의 동시 Client로
• 지정한 데이터 값(Value, 3byte ~ 10M)을
• 100,000번 명령어(SET, GET …) 실행
- 명령어 별 초당 처리시간
Alluxio에 저장된 150G 데이터의 입출력 성능을 spark application으로 테스트
Redis에 10만 번의 I/O를 발생시키며, 초당 처리 성능을 테스트
8. 4-1. POC 테스트 결과 (Spark + Alluxio 분산 수준)
분산 수준을 높이기 위해 CPU Core를 증가하며 Memory I/O를 측정하였으며,
DCPMM이 최대 40%까지 낮은 입/출력 성능을 보이지만,
일반적인 설정에서는 10% 이내의 성능 차이 발생 (DRAM이 더 빠르게 처리함)
Core가 많아 질수록
DPCMM 활용 시 성능 저하 (최대 40%)
DPCMM 활용 시
성능이 개선되는 구간도 존재
9. 4-1. POC 테스트 결과 (Spark + Alluxio 메모리 사이즈)
Spark에 할당되는 메모리 크기(8~16G)는 DPCMM 활용 시 성능에 영향을 주지 못함.
Memory 크기 8G와 16G의 차이가 거의 없음.
성능 차이가 거의 없음
10. 4-2. POC 테스트 결과 (Redis -명령어 별 성능 비교)
Redis Benchmark Tool을 이용하여 성능을 측정하여 결과 비교.
DRAM 대비 약 8% 수준의 성능 저하 현상 보임
일부 명령어 제외하고,
전반적으로 DRAM의 성능 높음
(동시 client 50, 각 명령어 10만번 실행 후 처리 성능 측정)
처리량
처리량
처리량
11. 4-2. POC 테스트 결과 (Redis – 데이터 크기별 성능 비교)
테스트 데이터를 3byte ~ 5M까지 증가하며 주요 명령어의 성능을 측정함.
데이터가 증가하면서 일부 명령어에서 DCPMM의 성능이 급격히 높아짐.
List 자료구조의 경우
급격한 차이 발생
처리량
처리량
12. 5. DCPMM의 아키텍처 설계 및 제안 시 활용방안
대용량 데이터를 처리하는 영역에서 I/O 성능은 전체 성능에 영향을 미치는 요소임.
따라서 DCPMM의 성능이 본 성능 테스트 결과 수준으로 제공된다면,
다양한 사업에서 비용대비 효율적인 아키텍처를 구성하여 높은 성능의 시스템 제공이 가능함.
Data intensive
아키텍처 설계 활용
ML/DL 학습 환경
활용
• 실시간 데이터 처리를 위한 In-Memory 스토리지 구성에
활용 (낮은 비용, 높은 성능)
• 데이터 학습에 필요한 데이터 전처리 및 피처를 빠르게
읽어와서 학습 생산성 향상