holssi 님의 블로그
클라우드 환경에서 EBS 같은 네트워크 스토리지 성능 이슈는 어떻게 진단할 수 있는지? 본문
CSP별 네트워크 기반 블록 스토리지
| CSP | 서비스명 | 비고 |
| AWS | EBS(elastic block store) | gp3, io2, st1 |
| Azure | Azure Managed Disks | Premium SSD, Ultra Disk |
| GCP | Persistent Disk | pd-ssd, pd-balanced |
| NCP | Block Storage | HDD/SSD |
vm과 독립적으로 존재하고 네트워크를 통해 굥유하므로 로컬 디스크 대비 레이턴시가 존재
GCP - pd-ssd, pd-balanced, NCP - HDD/SSD 성능 테스트
1. phoronix 벤치마크
1) 설치
GitHub - phoronix-test-suite/phoronix-test-suite: The Phoronix Test Suite open-source, cross-platform automated testing/benchmarking software. · GitHub 으로 설치할것이기 때문에 git 설치
PTS 버전은 10.8.6
* 하드웨어 벤치마크: cpu, ram대역폭, disk i/o 성능 등을 측정
* 소프트웨어 벤치마크: GCC 컴파일러, Kernel 성능 측정
sudo dnf install git -y
cd ~
git clone https://github.com/phoronix-test-suite/phoronix-test-suite.git
cd phoronix-test-suite
sudo ./install-sh
phoronix-test-suite version

2) 개발 도구 세트 및 필요한 라이브러리 설치
sudo dnf groupinstall "Development Tools" -y
sudo dnf install epel-release -y
# rocky 8
sudo dnf config-manager --set-enabled powertools
# rocky 9
sudo dnf config-manager --set-enabled crb
sudo dnf install nasm yasm p7zip p7zip-plugins unzip php-pecl-zip -y
rocky8,9의 crb 이름이 다름 -> rocky8은 powertools이고, rocky9는 crb이다
3) 벤치마크 실행이 오래걸릴 수 있으니 tmux 먼저 실행 (터미널 멀티플렉서)
sudo dnf install tmux -y
tmux
4) php 설치
sudo dnf install php-cli php-xml php-json
5) 도구 설치
phoronix-test-suite run pts/sqlite
phoronix-test-suite install pts/openssl
6) 벤치마크 실행 - gcp
fio로 순차/랜덤, 읽기/쓰기 옵션을 세부적으로 테스트 (SSD/HDD 나눠서 테스트)

5번 선택

I/O엔진 선택 -> 4번 선택

Direct를 선택해야 메모리 캐시를 거치지 않고 디스크 순수 성능 측정함, 캐시를 거치면 메모리 속도가 측정되어서 결과가 왜곡됨 -> 2번 선택

동시에 몇개의 작업을 띄울지, vCPU와 개수가 같아야함 -> 3번 선택
- SSD: 균형 있는 디스크, pd-balanced 타입 100GB
1) random read -> 12.9MB/s, 3296IOPS

2) Random Write -> 12.9MB/s, 3291 IOPS

3) Sequential Read -> 12.9MB/s, 3296 IOPS

4) Sequential Write -> 12.9MB/s, 3296 IOPS

- HDD: 표준 영구 디스크, pd-standard 타입 50GB
1) Random Read -> 12.9MB/s, 3296 IOPS

2) Random Write -> 12.9MB/s, 3291 IOPS

3. Sequential Read -> 12.9MB/s, 3296 IOPS

4. Sequential Write -> 12.9MB/s, 3296 IOPS

sqlite로 애플리케이션에서 데이터 읽고 쓰는 작업 성능
phoronix-test-suite run sqlite

- SSD
1) copies1 (스레드1) -> 9.053초

2) copies2 (스레드2) -> 9.151초

3) copies4 (스레드4) -> 15.016초

- hdd
1) copies1 (스레드1) -> 11.000초
2) copies2 (스레드2) -> 11.255초
3) copies4 (스레드4) -> 14.954초
