SSD의 성능을 어떻게 판단할 것인가.
Storage Performance
1. Read requests
- 무언가를 진행하기 위해 파일이 필요하기 때문에 빠르면 빠를수록 좋다.
2. Write requests
- 작성하는 경우는 급한일이 아니기 때문에 빠르게 작성할 필요는 없다
but 작성하는 도중에 꺼지게 된다면 파일이 날아가기 때문에 빠를수록 좋다.
=> 빠를수록(response time), 많이 처리할수록(throughput = 단위시간당 처리할 수 있는 I/O의 개수)
Device-Level vs App-Level Performance
Device-level performance
- storage device가 I/O requests를 얼마나 빠르게 처리할 수 있는지
-> SSD에 request를 받은 시간에 start하고, 끝난 시간에 complete한다.
FEMU!
App-Level Performance
- App을 얼마나 빨리 실행할 수 있는지
- App이 요청한 시간에 start하고 ssd에 갔다가 app에 돌아온 시간을 complete한다.
-> 성능의 영향을 받기 때문에 ssd의 성능을 판단하기에는 어렵다
FIO!
Compute-Intensive vs Data-Intensive Apps
Compute-intensive(컴퓨팅 집약적인 애플리케이션)
- 계산이 많이 필요한 경우
- 데이터셋이 큰게 아니기 때문에 I/O 요청이 많이 발생하지는 않는다.
- 스토리지 성능이 중요한게 아님?
e. g. ML, scientific simulation, cryptographic
Data-intensive(데이터 집약적인 애플리케이션)
- 대규모 데이터셋을 관리하는 경우
- I/O 요청이 많이 발생한다.
-> 스토리지 성능이 앱 성능을 결정하게 됨 ( 주고받는게 많으니 스토리지가 빨라야함.)
Storage Evaluation Methodology(스토리지 평가 방법론)
스토리지 장치를 평가하는 방법은?
1. 일반방법론
비교할 장치에서 동일한 애플리케이션을 실행하여 측정 기준을 측정 & 비교한다.
2. 응용프로그램 벤치마킹 < 2개 이상의 시스템을 측정에 따라 상호비교 하는 것?
뭔지 잘 모르겠는데 이걸 판단하기 위한 프로그램이 있나봐요
Benchmarking Applications
1. Synthetic workloads (e.g. FIO)
•매개변수화된 합성 프로그램
•다양한 읽기/쓰기 비율
•다양한 크기의 I/O 요청
•다양한 순차적/랜덤 액세스 패턴
•일반적으로 기기의 거동을 특성화하기 위해 사용된다
2. Real-world workloads (e.g. Sysbench)
•실제 애플리케이션을 모방한 프로그램
•데이터베이스, 서버, ...
3. 다른 시스템도 벤치마크를 사용하여 평가한다
•CPU: 계산 집약적 명령어
•메모리:메모리 연산
•스토리지: 주요한 I/O 요청
•FEMU를 평가하기 위해 I/O 벤치마크를 사용해야 합니다
뭐라는지 모르겠네요. 아무튼 다양한 밴치마킹 앱을 사용하여 무언가를 판단한다는 소리겠죠
Performance Metrics(성능 측정 기준)
1. Response Time(응답시간)
"Average" response time
평균응답시간이 짧을수록 좋다
< SSD-B가 낫다
"Normalized" response time
정규화를 통해 상대적인 그래프를 그림
ex.SSD-A, SSD-B, SSD-C를 비교하는 경우에서
SSD-B, SSD-C를 SSD-A로 나누게 되면 기준 response time은 SSD-A가 1이기 때문에 SSD-B와 SSD-C가 SSD-A보다 값이 적기 때문에 SSD-A가 가장 안좋다는 것을 알 수 있음.
SSD-B보다 SSD-C의 값이 더 적기 때문에 SSD-C의 값이 가장 좋음
2. Tail Latency
평균적으로 응답시간이 짧더라도 응답시간이 긴 I/O 요청이 존재할 수 있음
(= 가끔 렉먹는 앱)
= Tail Latency
꼬리가 긴건 좋지 않다~ 라는건가..?
3. Throughput & IOPS
- 단위시간 내 얼마나 많은 I/O를 처리하느냐
- Throughput(단위시간당 처리량)
모든 I/O 데이터의 합을 total time으로 나눈 값?
- IOPS(Input/Output operations Per Second | 초당 입출력 작업 수)
초당 처리되는 I/O 요청의 수
(처리된 총 I/O 요청 수)/총 시간
but I/O 요청의 크기를 반영할 수 없음
'아무튼 공부중 > system programing' 카테고리의 다른 글
[시프] GC from a Performance Standpoint (0) | 2023.11.02 |
---|---|
[시프] Garbage Collection (1) | 2023.11.01 |
[시프] Address Mapping (1) | 2023.11.01 |
[시프] SSD BASIC (0) | 2023.09.20 |
[시프]Data Stroage & I/O (0) | 2023.09.08 |