개념
- IOPS : Input/Output Operations Per Second
- IOPS는 HDD, SDD 또는 NVMe등 저장장치의 속도를 타나내는데 사용되는 측정 단위이다.
- MB/s, MiB/s, GB/s, GiB/s 등과 같이 초당 전송량과 함께 만이 사용되고 있는 단위이다.
IOPS 측정값
-
IOPS 측정값은 세부적으로 초당 전송량과 같이 임의 접근(Random Access)과 순차접근(Sequential Access)에 따라 다르고, 읽기 및 쓰기 동작에 따라 다르다.
-
일반적으로 종합 IOPS, 임의 접근 읽기 IOPS, 임의 접근 쓰기 IOPS, 순차 접근 읽기 IOPS, 순차 접근 쓰기 IOPS로 나누어 측정한다.
순차 접근(Sequential access)
- 순차 접근은 데이터를 쓰거나 읽기 위해서 순차적으로 접근하기 때문에 데이터 및 위치 검색 등의 오버헤드가 없어 속도가 빠르다
- 레코드를 접근할 때마다 디스크를 물리적으로 움직여야하기 때문에 매우 비효율적이다.
- 순차 접근의 비효율성을 줄이기 위해 레코드 블록화(record blocking) 기법을 이용한다.
- 레코드 블록화 : 디스크에서 블록 단위로 데이터를 읽어 메모리에 적재하는 방식
- 블록의 크기가 커지면 커질수록 디스크 접근 횟수는 줄어들지만, 필요없이 읽어오는 데이터의 양이 증가하게 된다.
임의 접근(Random access)
- 임의 접근은 시스템이나 프로그래머가 원하는 위치부터 파일을 읽는 접근 방법이다.
- 원하는 레코드로 바로 접근하기 때문에 직접 접근(Direct access)라고도 한다.
- 단 한번의 디스크 접근을 통해 레코드에 접근하기 때문에 항상 순차 접근보다 성능이 좋거나 같다.
- 임의 접근의 문제점은 접근하고자 하는 레코드의 시작 주소를 알아야 한다. 이를 위해 상대 레코드 번호(Relative Record Number, RNN)을 사용한다.
- RNN은 디스크 상의 절대적 위치를 나타내는 것이 아니라, 레코드가 속한 파일의 시작으로부터 레코드의 위치를 나타내는 것이다.
- 고정 길이 레코드 방식으로 저장된 파일이라면 상대 레코드 번호를 통해 임의 접근을 충분히 구현할 수 있다.
- 하지만 가변 길이 레코드 방식으로 저장된 파일의 경우에는 상대 레코드 번호를 통해 접근할 수 없기 때문에 각각의 레코드의 상대적 시작 주소를 저장한 별도의 자료구조나 파일을 이용해야 한다.
IOPS 계산법
- IOPS는 각 읽기와 쓰기에 대해 별도로 구해야 한다.
IOPS = 1000(ms/s) / (average read seek time (ms) + (maximum rotational latency(ms) /2))
maximum rotational latency = 60,000 (ms/min) / rotational speed (rpm)
참조