일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- BOJ
- FetchType
- 다대다
- CHECK OPTION
- SQL프로그래밍
- 다대일
- JPQL
- fetch
- execute
- 스프링 폼
- 연결리스트
- querydsl
- 데코레이터
- 연관관계
- exclusive lock
- 동적sql
- 비관적락
- eager
- 유니크제약조건
- 백트래킹
- shared lock
- PS
- 일대다
- 즉시로딩
- 이진탐색
- dfs
- 힙
- 스토어드 프로시저
- 낙관적락
- 지연로딩
- Today
- Total
흰 스타렉스에서 내가 내리지
IOPS 본문
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 입니다.
'etc' 카테고리의 다른 글
SSH 의 원리와 접속 과정 (0) | 2024.07.18 |
---|---|
Slack Webhook URL 을 추가하는 방법 (0) | 2024.07.17 |
컴퓨터 구조와 Swap Memory (스왑 메모리) (0) | 2024.03.24 |
Jetbrains사에 직접 요청하여 IntelliJ 학생인증 받기 (0) | 2023.09.15 |
Redis (0) | 2023.06.27 |