흰 스타렉스에서 내가 내리지

IOPS 본문

etc

IOPS

주씨. 2024. 6. 5. 06:43
728x90

IOPS (Input/Output Operations Per Second) 은 저장 장치나 스토리지 시스템의 성능을 측정하는 데 사용되는 주요 지표 중 하나입니다. IOPS는 시스템이 초당 수행할 수 있는 입력 및 출력(읽기 및 쓰기) 작업의 수를 나타냅니다.

이 지표는 주로 SSD, HDD, 네트워크 스토리지 등의 성능을 평가할 때 사용됩니다. 

 

IOPS 의 주요 구성 요소 

1. 읽기 작업 : 데이터 읽기 작업의 횟수

2. 쓰기 작업 : 데이터 쓰기 작업의 횟수

3. 랜덤 작업 : 임의의 위치에서 데이터 접근

4. 순차 작업 : 연속된 위치에서 데이터 접근

 

 

IOPS 측정 방법

IOPS는 벤치마크 도구를 사용하여 측정됩니다. 일반적으로 다음과 같은 방식으로 측정됩니다. 

 

- 블록 크기 (Block Size) : 각 I/O 작업의 크기 (일반적으로 4KB, 8KB 등)

- 큐 깊이 (Queue Depth) : 동시에 처리할 수 있는 I/O 요청의 수

- 읽기/쓰기 비율 (Read/Write Ratio) : 읽기와 쓰기 작업의 비율

 

IOPS와 관련된 주요 개념

- 레이턴시 (latency) : I/O 작업이 완료되는데 걸리는 시간

- 스루풋 (Throughput) : 단위 시간당 처리할 수 있는 데이터의 양 (MB/s 등)

- 랜덤 IOPS vs 순차 IOPS : 랜덤 IOPS는 임의 접근 패턴을 따르는 작업의 IOPS 를, 순차 IOPS 는 순차 접근 패턴을 따르는 작업의 IOPS 를 의미한다.

 

 

IOPS 의 중요성

높은 IOPS 는 시스템의 응답성과 처리 능력을 높이는데 중요한 역할을 한다. 

예를 들어, 데이터베이스 서버, 가상화 환경, 고성능 컴퓨팅에서는 높은 IOPS 가 요구된다. 

따라서, 스토리지 솔루션을 선택할 때 IOPS 성능을 고려하는 것이 매우 중요하다. 

 

 

IOPS 최적화

스토리지 시스템의 IOPS 를 최적화하기 위해 다음과 같은 방법이 사용된다.

 

- 고속 SSD 사용 : SSD 는 HDD 보다 훨씬 높은 IOPS 를 제공한다.

- RAID 구성 : 여러 디스크를 병렬로 사용하여 IOPS 를 증가시킨다

- 캐싱 사용 : 데이터를 빠르게 접근할 수 있도록 메모리에 저장한다. 

- 소프트웨어 튜닝 : 파일 시스템 및 I/O 스케줄러의 최적화

 

 


여러 디스크를 병렬로 사용하면 왜 IOPS 가 증가할까요? 

여러 디스크를 병렬로 사용하면 IOPS 가 증가하는 이유는 병렬 처리와 부하 분산 덕분입니다. 

 

병렬 처리

병렬 I/O 작업 : 여러 디스크를 사용하면 각 디스크가 동시에 독립적인 I/O 작업을 수행할 수 있습니다. 단일 디스크는 한 번에 하나의 작업만 처리할 수 있는 반면, 여러 디스크를 사용하면 여러 작업이 동시에 처리됩니다. 예를 들어, 두 개의 디스크가 있는 경우, 각각의 디스크가 동시에 독립적으로 I/O 작업을 처리하면 총 IOPS 는 2배로 증가합니다. 

 

부하 분산

부하 분산 : RAID 와 같은 기술을 사용하면 데이터를 여러 디스크에 분산하여 저장할 수 있습니다. 이는 각 디스크에 대한 I/O 요청을 분산시켜 개별 디스크의 부하를 줄이고, 동시에 더 많은 I/O 요청을 처리할 수 있게 됩니다. 예를 들어, RAID 0 은 데이터를 스트라이핑(Striping) 방식으로 분산 저장하여 I/O 성능을 크게 향상시킵니다. 

 

 

RAID 구성에 따른 IOPS 증가 예시

- RAID 0 (Striping) : 데이터가 여러 디스크에 분산되어 저장되므로, 읽기/쓰기 작업을 동시에 여러 디스크에서 수행할 수 있습니다. 이는 IOPS 를 디스크 수에 비례하여 증가시킵니다. 

- RAID 1 (Mirroring) : 데이터가 복제되어 저장되지만, 읽기 작업에서는 병렬 처리가 가능하여 IOPS 가 증가할 수 있습니다. 다만, 쓰기 작업에서는 모든 디스크에 동일한 데이터가 쓰여야 하므로, 쓰기 IOPS 는 단일 디스크와 유사합니다. 

 

 

예시

100 IOPS 의 성능을 가진 디스크 4개를 RAID 0 으로 구성하면, 이론적으로 400 IOPS 의 성능을 기대할 수 있습니다.

이는 각 디스크가 독립적으로 100 IOPS 의 성능을 제공하기 때문입니다. 

 

 

 


IOPS 값을 기반으로 초당 전송량 계산하기

EBS 볼륨 유형 및 스펙 

- gp3 (General Purpose SSD):

    - 최대 IOPS : 16,000

    - 최대 처리량 : 1,000 MB/s

    - 기본 IOPS : 3,000 (기본 제공)

    - 기본 처리량 : 125 MB/s (기본 제공)

 

- io2 (Provisioned IOPS SSD):

    - 최대 IOPS : 64,000

    - 최대 처리량 : 1,000 MB/s

 

 

예제 1 : gp3 볼륨에서 IOPS 와 초당 전송량 계산

가정 : `gp3` 볼륨에서 4KB 블록 크기로 10,000 IOPS 를 수행한다고 한다.

 

1. IOPS : 10,000

2. 블록 크기 : 4 KB   (블록은 각 I/O 작업의 단위크기가 된다.)

 

계산 : 

- 초당 전송량 : IOPS x 블록크기

- 블록 크기는 4 KB = 4,096 bytes

 

따라서 : 

초당 전송량 (MB/s) = (10,000IOPS x 4,096bytes) / (1,024^2 bytes/MB) = 39.06

 

따라서, `gp3` 볼륨에서 10,000 IOPS 와 4KB 블록 크기일 때 초당 전송량은 약 39.06 MB/s 입니다. 

 

 

예제 2: io2 볼륨에서 IOPS 와 초당 전송량 계산 

가정 : `io2` 볼륨에서 16KB 블록 크기로 50,000 IOPS 를 수행한다고 가정합니다. 

 

1. IOPS : 50,000

2. 블록 크기 : 16KB

 

계산 :

- 초당 전송량 : IOPS x 블록 크기 

- 블록 크기는 16KB = 16,384 bytes

 

따라서 : 

초당 전송량 (MB/s) = (50,000IOPS x 16,384bytes) / (1,024^2 bytes/MB) = 781.25

 

따라서, `io2` 볼륨에서 50,000 IOPS 와 16KB 블록 크기일 떄 초당 전송량은 약 781.25 MB/s 입니다.