시스템 관리/서버H·W

[스크랩] IOPS 계산법 - 디스크 구조와 동작방식

99iberty 2014. 4. 3. 13:57

 

http://www.sqler.com/bColumn/375317

 

안녕하세요.. 비전팀 1기 강동운입니다. ^^


과거에 강산아님 또는 고희수님이 올려주신.. IOPS 계산법에 관련된 글들이 있었는데요~!


 

http://www.sqler.com/329982

http://www.sqler.com/322719


둘다 똑같은 글이더군요 ^^;;


둘다 영문으로 되어있기 때문에.. 용어 설명을 하기 위해서.. 이렇게 글을 쓰게 되었습니다.


두 글에서 언급되었다 싶이.. 사실 계산법은 아래와 같습니다.


 

iops = 1000 (ms/s) / (average read seek time (ms) + (maximum rotational latency (ms) / 2))

maximum rotational latency = 60,000 (ms/min) / rotational speed (rpm)


 

Rotational Speed (rpm) Max Rotational Latency (ms)
4200 14.3
5400 11.1
7200 8.3
10000 6.0
15000 4.0



일단 IOPS의 뜻에 대해서 집고 넘어가야겠습니다!


IOPS란? Input/Output Operations Per Second 의 약자 입니다. 즉.. 초당 입력/출력의 횟수죠..


이제 디스크의 구조에 대해서 살표보죠! 디스크의 그림은 아래와 같습니다.

(고희수님 자료에서 퍼왔습니다 ^^;; 그림 감사합니다~~! (^^)(__)(^^)... )

disk_1.jpg disk_2.jpg



우측 그림처럼.. 한번의 INPUT/OUTPUT을 위해서는 탐색 시간 + 회전 대기시간이 필요하게 됩니다.


회전 대기 시간은.. 최악의 경우.. 디스크를 한바퀴 도는 시간이 될 수 있습니다.


그렇다면.. 7200 rpm(분당 회전 수) 인 경우.. 초당 120번(7200/60초) 돌게 됩니다.


즉... 1회전 당 약 8.3ms (120번/1000ms) 가 걸리게 되는 것이죠.. 이 값이.. maximum rotational latency 입니다.


8.3 = 60000 / 7200 (= 60,000 (ms/min) / rotational speed (rpm))


정말.. 최악의 경우가 되겠죠~~!


그렇다면.. 왜?? maximum rotational latency / 2를 하는 걸까요! 바로 평균을 구하는 것이죠....


즉... average read seek time (ms) + (maximum rotational latency (ms) / 2) 의 공식은..


평균 탐색 시간 + 평균 회전 대기시간 을 의미합니다...


하지만 이 두개를 합한 수치의 단위는.. 한번의 평균 INPUT/OUTPUT을 위한 수치 입니다.


따라서 1초에 몇번의 INPUT/OUTPUT을 할수 있는지 계산 하기 위해서는...


1000(ms) / (평균 탐색시간 + 평균 회전 대기시간) 가 되는 것이지요.. 이게 바로 IOPS 입니다.


왜냐면?? IOPS가 초당이기 떄문이죠~!


아래 공식 이제는 이해 하시나요?? ^^;;

iops = 1000 (ms/s) / (average read seek time (ms) + (maximum rotational latency (ms) / 2))


감사합니다 ^^..

 

 

--------------------

HDD 스트라이핑으로 묶어도 두배로 빨라 지지 않습니다.


말씀 하신데로 트랙 바깥쪽에 더 많은 블럭을 가지게 되며..

데이터를 저장할때는 논리적인 블럭(LBA)을 변환 해서 저장 하게 됩니다.

 

---------------------

 

 

위에 적혀 있는데로 IOPS는 디스크 에서 초당 인풋 아웃풋을 처리한 개수 입니다.

(말씀 하신 시간단위는 avg. Disk sec/Write(ms) 나 avg. Disk sec/Read(ms)로 정도 입니다.)


 

추가로 디스크 할당 단위나 BBWC 캐시 크기에 따라 전체적인 iops 수치가 달라집니다.

(요구되는 io가 순차냐 랜덤이냐 혹은 outstanding 크기에 따라서 달라지기도 합니다.)


 

개인적으로는 해당 장비의 스케일을 확인하기 위해서는 디스크 한장당 iops 를 보는것 보다

전체 디스크 구성에 따른 iops를 확인하는게 보다 중요 하다고 생각합니다.

 

 

 

http://www.sqler.com/272403

디스크 구조와 동작방식

예전에 정리한 문서지만 공유차원에서 올려봅니다.^^

데이터베이스와 밀접한 관련이 있는 데이터 저장매체 인 디스크구조 및 동작방식에 대해 알아보자.

디스크는 자기 디스크 플래터로 구성돼있으며 데이터를 트랙에 자기적으로 저장한다.

디스크 안팎으로 움직이는 전기자에 끝에 부착된 헤드가 회전하는 디스크를 읽고 쓰는데

플래터당 하나의 헤드가 존재해 플래터 집합인 디스크는 여러 헤드(전기자에 부착된)

가질 수 있다. 또한 헤드와 전기자는 모두 연결돼있어 모든 헤드는 데이터를 동시에 트랙에

읽고 쓴다.

디스크 헤드가 섹터의 데이터를 읽기 위해서는 섹터가 헤드 바로 아래에 있어야 하는데,

디스크는 항상 회전하므로 섹터가 그 위치에 올 때까지 기다려야 한다. 이때 디스크가

데이터를 읽을 수 있는 위치로 회전하는데 걸리는 시간이 회전 대기 시간(Rotation latency)이다.

보통 15000rpm 디스크의 평균 회전 대기 시간은 약 2ms 정도이다.

위 회전 대기 시간외에 헤드가 데이터가 존재하는 곳 즉 디스크 전기자가 요청된 데이터를

가지는 실린더로 이동하는 시간을 탐색시간(seek time)이라 한다.

(실린더는 디스크 플래터들의 동일한 트랙 집합이다.)
disk_1.jpg disk_2.jpg

디스크 동작을 완료하는데 걸리는 시간은 다음의 총합이며

-데이터를 가지는 트랙으로 이동하는데 걸리는 탐색시간(Seek Time)

-데이터를 헤드 아래로 회전시키기 위해 필요한 회전 대기시간(Rotational latency)

-디스크 드라이브에서 디스크 컨트롤러로 데이터를 전자적으로 전송하기 위해 필요한 시간

I/O 완료는 여기에 시스템 오버헤드(매우 포괄적인)를 더한 시간이다.

디스크I/O완료에 걸리는 시간은 요청된 I/O가 순차 방식인지 임의 방식인지에 따라 영향을

받으며 순차적 I/O성능은 트랙간 탐색 시간에, 임의I/O성능은 평균 탐색시간에 의해 좌우된다.

순차적 I/O(Sequential I/O)

디스크의 인접한 데이터의 액세스로 임의 I/O보다 트랙간 탐색 시간이 빨라 더 많은 양을

보다 빨리 처리할 수 있다.

임의 I/O(Random I/O)

디스크의 서로 다른 부분으로부터 액세스될 때 발생하며, 임의의 헤드이동이 발생해 성능을

감소시킨다.