아무튼 공부중/system programing

[시프] Storage Evaluation Methodology | Performance Metrics

멍정 2023. 9. 15. 15:41

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