디스크 드라이브는 스토리지 시스템의 전반적인 성능을 좌우하는 디바이스다.
디스크 서비스 시간(disk service time)은 I/O 요청을 완료하는 데 걸리는 시간이다. 디스크 드라이브의 서비스 시간에 영향을 주는 요소에는 탐색 시간과 회전 지연 시간, 데이터 전송 속도가 있다.
탐색 시간(seek time[액세스 시간 access time이라고도 함])은 R/W 헤드를 지름 방향(플래터의 지름을 따라 움직임)으로 움직여 위치시키는 것을 말한다. 다시 말해 암(arm)과 헤드를 올바른 트랙에 옮기는 시간을 말한다. 따라서 탐색 시간이 낮을수록 I/O 연산은 빨라진다. 디스크 제작사는 다음과 같은 탐색 시간 스펙을 발표한다.
- 풀 스트로크 (full stroke)
R/W 헤드를 가장 안쪽 트랙에서 가장 바깥쪽 트랙으로 전체 디스크의 길이만큼 움직이는 데 걸리는 시간
- 평균
랜덤 트랙 간에 R/W 헤드를 이동하는 데 걸리는 시간으로, 보통 풀 스트로크의 1/3이다.
- 트랙에서 트랙
인접한 트랙으로 R/W 헤드를 이동하는 데 걸리는 시간
각 스펙은 밀리초 단위로 측정한다. 디스크의 탐색 시간은 보통 드라이브 제작사가 명시한다. 최신 디스크의 평균 탐색 시간은 3~15밀리초다. 탐색 시간은 인접 트랙보다는 랜덤 트랙에 대한 읽기 연산에 좀 더 영향을 끼친다. 탐색 시간을 최소화하려면 가능한 적은 실린더에 데이터를 기록해야 한다. 이 방법은 실제 사용할 수 있는 용량보다 적은 공간을 사용하게 된다. 예를 들어, 500GB 드라이브를 실린더의 40%만 사용하게 설정해 200GB 드라이브가 되게 한다. 이를 드라이브를 숏 스트로킹(short-stroking)한다고 말한다.
데이터에 액세스하기 위해 작동팔은 R/W 헤드를 특정 트랙으로 옮긴다. 이때 플래터가 회전을 하며 R/W 헤드 아래에 요청한 섹터가 오게 된다. 플래터가 회전해 R/W헤드 아래에 요청한 데이터가 오기까지의 시간을 회전 지연 시간(rotational latency)이라고 한다. 이 지연은 스핀들의 회전 속도에 영향을 받으며 밀리초 단위로 측정된다. 평균 지연 시간은 한 바퀴 회전하는 시간의 1/2이다. 탐색 시간과 마찬가지로 회전 지연 시간도 인접한 섹터를 읽는 연산보다는 랜덤 섹터를 읽는 연산에 영향을 더 미친다.
5,400rpm 드라이브의 평균 회전 지연 시간은 대량 5.5ms이고, 15,000rpm(또는 250rps 초당 회전 수) 드라이브의 평균 지연 속도는 다음과 같다.
15,000rpm(250rps) 드라이브의 평균 회전 지연 시간 = 0.5/250 = 2 밀리초
데이터 전송 속도(data transfer rate)는 단위 시간 동안 드라이브가 HBA로 전송할 수 있는 데이터의 양을 말한다. 데이터 전송 속도를 계산하려면 먼저 읽기/쓰기 연산의 프로세스를 이해해야 한다. 읽기 연산에서는 플래터에서 R/W 헤드로 데이터가 이동한다. 그리고 드라이브의 내부 버퍼(buffer)로 이동한다. 마지막으로 데이터는 버퍼에서 인터페이스를 통해 호스트 HBA로 이동한다. 쓰기 연산에서는 HBA에서 드라이브의 인터페이스를 통해 디스크 드라이브의 내부 버퍼로 이동한다. 그 후 버퍼에서 R/W 헤드로 이동하고 마지막으로 R/W 헤드에서 플래터로 이동한다.
R/W 연산 도중의 데이터 전송 속도는 내부와 외부 전송 속도로 측정된다.
내부 전송 속도(Internal transfer rate)는 플래터에서 디스크의 내부 버퍼(캐시)로 데이터가 이동하는 속도다. 내부 전송 속도는 탐색 시간과 회전 지연 시간의 영향을 받는다. 외부 전송 속도(external transfer rate)는 인터페이스를 통해 HBA로 이동하는 속도다. 외부 전송 속도는 일반적으로 ATA의 133MB/s와 같은 인터페이스의 광고된 속도로 볼 수 있다. 실제 외부 전송 속도는 인터페이스 속도보다는 느리다.
디스크 I/O 컨트롤러의 이용도는 I/O 반응 속도에 상당한 영향을 끼친다. 이 영향을 이해하기 위해 디스크를 다음 두 가지 요소로 구성된 블랙박스로 생각하자.
- 큐(queue)
I/O 컨트롤러가 I/O 요청을 처리하기 전에 I/O 요청이 대기하는 곳
- 디스크 I/O 컨트롤러
큐에서 대기 중인 I/O를 1개씩 처리한다.
I/O 요청은 애플리케이션이 발생시키는 속도로 컨트롤러에 도착한다. 이를 도착 속도(arrival rate)라고 한다. 이 요청은 I/O 큐에서 대기하고, I/O 컨트롤러는 1개씩 요청을 처리한다. I/O 도착 속도와 큐의 길이 I/O 컨트롤러가 각 요청을 처리하는 시간이 I/O 응답 시간을 결정한다. 만일 컨트롤러가 바쁘거나 너무 많은 요청이 몰리는 경우에는 큐의 크기가 길어지고 응답 시간이 길어진다.
디스크 드라이브 성능의 기본 법치에 근거해, 컨트롤러 이용도와 평균 응답 시간은 다음과 같다.
평균 응답 시간(TR) = 서비스 시간 (Ts) / (1 - 이용도)
여기서 Ts는 컨트롤러가 I/O를 처리하는 데 걸린 시간이다.
이용도가 100%가 되면(즉 I/O 컨트롤러가 포화 상태가 되면) 응답 시간은 무한대에 가까워진다. 근본적으로 포화된 컴포넌트나 병목은 I/O 요청을 순차적으로 처리하게 만든다. 즉 각 I/O 요청은 이전 I/O 요청이 끝나야 처리된다.
평균 큐의 크기가 작은 경우에는 응답 시간은 낮게 유지된다. 큐에 부하가 증가하며 응답 시간이 점차 천천히 증가하다가 이용도가 70%를 넘으면 지수적으로 증가한다. 따라서 성능이 중요한 애플리케이션에서는 I/O 처리 능력의 70% 이하만 사용하게 해야 한다.
'IT > Storage' 카테고리의 다른 글
캐시 와 플러시 (0) | 2022.08.09 |
---|---|
지능형 스토리지 시스템의 컴포넌트 (0) | 2022.08.09 |
디스크 드라이브 컴포넌트 (0) | 2022.06.29 |
인터페이스 프로토콜과 스토리지 (0) | 2022.06.29 |
컴퓨트 가상화와 연결 (0) | 2022.06.29 |