I/O 블록 크기를 이용해 저장 장치의 IOPS와 MB/s 단위 처리량 사이를 변환한다. IOPS로부터 처리량을 구하거나, 목표 처리량으로부터 IOPS를 구한다.
입력
입력
장치가 매초 처리하는 읽기 또는 쓰기 요청의 수이다.
≥ 0 KiB
각 I/O 연산의 크기이다. 블록이 클수록 연산당 더 많은 데이터를 옮긴다.
결과
값을 입력하면 계산 결과가 표시됩니다.
결과
블록 크기 4 KiB에서 초당 10,000회의 연산이 만들어 내는 데이터 전송 속도이다.
IOPS-처리량 변환
저장 장치 성능은 혼동하기 쉬운 두 단위로 보고된다. 연산의 수를 세는 IOPS와, 초당 옮겨진 데이터의 양을 측정하는 처리량이다. 이 계산기는 하나의 연산이 옮기는 데이터의 양, 즉 I/O 블록 크기를 이용해 둘 사이를 변환한다. IOPS를 입력하면 처리량을, 목표 처리량을 입력하면 필요한 IOPS를 구한다.
같은 장치를 보는 두 가지 관점
저장 장치는 한 번에 한 연산씩 작업한다. IOPS(초당 입출력 연산 수)는 장치가 매초 완료하는 연산의 수를 센다. 무작위 조회를 처리하는 데이터베이스처럼 작고 독립적인 접근이 다수를 이루는 작업 부하에 알맞은 지표이다. 처리량은 장치를 통해 초당 흐르는 바이트 수를 측정한다. 큰 파일을 스트리밍하는 데 알맞은 지표이다. 어느 한 수치만으로는 전체를 알 수 없으며, 블록 크기가 둘을 잇는다.
변환
각 연산이 한 블록의 데이터를 전송하므로, 처리량은 단순히 연산 속도에 연산당 바이트 수를 곱한 것이다.
이를 정리하면, 주어진 데이터 속도를 유지하는 데 필요한 연산 수는 다음과 같다.
둘이 블록 크기를 통해 연결되므로, 블록 크기 없이 제시된 IOPS 수치는 데이터 속도로 바꿀 수 없고, 처리량 수치도 IOPS로 바꿀 수 없다.
계산 예시
한 솔리드 스테이트 드라이브가 4 KiB 연산에서 10,000 IOPS로 정격되어 있다. 그 처리량은 다음과 같다.
처리량=10000×4KiB=10000×4096bytes≈40.96MB/s
같은 드라이브가 대신 1 MiB 블록을 옮긴다면, 같은 40 MB/s에 도달하는 데 초당 약 40회의 연산만 필요하다. IOPS와 처리량이 블록 크기에 대해 직접적으로 맞교환된다는 것을 일깨워 주는 예이다.
블록 크기가 지배하는 이유
작은 블록은 각 연산이 적은 데이터를 옮기므로 IOPS를 올리고 처리량을 낮춘다. 큰 블록은 그 반대이다. 이 때문에 벤치마크는 항상 블록 크기를 명시하며, 4 KiB 무작위 읽기에 맞춰 조정된 데이터베이스와 1 MiB 순차 쓰기를 스트리밍하는 백업 작업은 같은 하드웨어에서 완전히 다른 한계를 시험한다. 저장 용량을 산정할 때는 실제 작업 부하에 맞는 블록 크기로 변환하고, 장치의 정격 IOPS는 대개 특정 접근 패턴을 가정한다는 점을 염두에 두어야 한다. 알려진 양의 데이터를 옮기는 경우, 데이터 전송 시간 계산기가 주어진 속도에서 전송이 얼마나 걸리는지 추정한다.
자주 묻는 질문 (FAQ)
IOPS란 무엇인가?
IOPS는 초당 입출력 연산 수(input/output operations per second)를 뜻하며, 저장 장치가 매초 완료할 수 있는 개별 읽기 또는 쓰기 요청의 수이다. 무작위 조회를 처리하는 데이터베이스처럼 작고 독립적인 연산을 다수 처리하는 능력을 나타내는 표준 척도이다. IOPS와 처리량은 성능의 서로 다른 측면을 기술한다. IOPS는 연산의 수를 세고, 처리량은 옮겨진 데이터의 양을 측정한다.
IOPS와 처리량은 어떤 관계인가?
처리량은 IOPS에 블록 크기를 곱한 값과 같다. 각 연산이 한 블록의 데이터를 옮기므로, 데이터 속도는 연산 속도에 연산당 바이트 수를 곱한 것이다. 반대로 IOPS는 처리량을 블록 크기로 나눈 값과 같다. 예를 들어 블록 크기 4 KiB에서 10,000 IOPS는 약 40 MB/s이고, 블록 크기 1 MiB에서 같은 40 MB/s는 약 40 IOPS에 불과하다. 두 지표는 블록 크기가 고정되어야 비로소 서로 변환할 수 있다.
블록 크기가 결과를 그토록 크게 바꾸는 이유는 무엇인가?
블록 크기는 연산의 수를 세는 것과 데이터의 양을 측정하는 것을 잇는 다리이다. 작은 블록은 각 연산이 적은 데이터를 옮기므로 높은 IOPS와 낮은 처리량에 유리하다. 큰 블록은 각 연산이 많은 데이터를 옮기므로 높은 처리량과 낮은 IOPS에 유리하다. 따라서 저장 장치 벤치마크는 항상 블록 크기를 명시한다. 블록 크기가 없는 IOPS 수치는 데이터 속도로 변환할 수 없으며, 그 반대도 마찬가지이다.
이것은 무작위 작업 부하와 순차 작업 부하 모두에 적용되는가?
산술적 관계는 어떤 작업 부하에서도 성립하지만, 실제 장치는 무작위 접근과 순차 접근에서 매우 다른 IOPS를 보인다.
순차 읽기와 쓰기는 큰 실효 블록 크기를 사용해 높은 처리량에 도달하고, 무작위 소형 블록 접근은 연산당 오버헤드에 제약되어 높은 IOPS에 도달하지만 처리량은 낮다. 변환할 때는 자신의 작업 부하에 맞는 블록 크기를 사용하고, 장치의 정격 IOPS는 대개 특정 접근 패턴을 가정한다는 점을 유의해야 한다.