posted by 은이종 2013. 1. 17. 15:09

레이드 striping array 를 구성할때 동일한 레이드 컨트롤러와 하드디스크를 사용할지라도 stripe width

와 stripe size 에 따라서 전송률과 액세스타임, 시퓨사용율 등의 성능이 차이가 나길래.. 직접 테스트를

해보면서 얻은 결과치를 설명하고자 합니다.

우선 stripe width 경우는 동시에 읽기/쓰기 가능한 parallel stripes의 갯수에 관한것이며.. 이것은

바꿔말하면 어레이에 참여한 디스크의 숫자가 많을수록(more wide) 더 성능을 높게 냅니다. 하지만

4개로 스트라이핑을 구성하는 경우가 일반용 데스크탑에서는 거의 드물기 때문에 논외로 하고요.

2개의 디스크로 어레이를 구성한 경우만을 생각해 봅시다.

따라서 stripe size가 성능을 좌우하는 중요 요소가 되는데요.  이것을 "분할쪼가리(?) 크기" 정도로

해석을 해봅니다. 일반적으로 세팅시 사이즈를 4KB~128KB 정도까지 사용자가 결정을 할수가 있고요.

          △ 사이즈를 작게 쪼갠 경우.                          △ 사이즈를 크게 잡은 경우.

위 그림은 하드 4개로 어레이 구성한것을 예로 든건데.. 보시다시피 stripe size 에 따라서 분할정도가

달라집니다. 여기서 stripe size가 작을수록 파일들의 단편화가 심해지며 이것은 그 파일의 데이타를

포함하는 하나의 블럭에 이용되는 드라이버의 갯수가 증가한다는 의미와 같습니다. 그래서 전송율 즉

transfer performance 는 증가를 하지만, 대신에 파일들을 액세스 할수있는 positioning performance

는 감소를 하게 됩니다.

반대원리로 생각하면 stripe size를 오른쪽처럼 아주 크게 잡은 경우는  전송율은 감소를 하는 대신에

파일들에 대한 엑세스는 증가를 하게됩니다.

이정도로 개념 설명은 그만 넘어가고요. (저도 더이상 자세히는 모릅니다.^^;)

다름이 아니라, 이번에 보드를 p4p800-E Dlx 로 바꾸면서 WD SATA 120G *2개로 스트라이핑을 구성

해봤는데.. 위의 stripe size 별로 성능을 한번 테스트 해봤습니다.

테스트하게된 동기가.. 메뉴얼에 적힌 설명을 읽어보니..

16KB  - 적은 디스크 사용율

64KB  - 일반적인 디스크 사용율

128KB  - 성능위주의 디스크 사용율.  뭐 이런식으로 적혀있길래..

무조건 stripe size = 128K 로 잡고 일단 레이드 구성을 했습니다.  근데 막상 윈도우XP 설치하고 사용을

해보니 기존에 사용했던 히타치 7K250 120G 8M 에 비해 그렇게 빠르다는 느낌을 가질수가 없었습니다.

그저 부팅할때 화살표 3~4번이 2~3번으로 줄어들었다거나 또는 삼디겜 로드 과정에서 근소한 차이로

빠르다는.. 뭐 그 정도였습니다.

  OS

   win XP SP2

  s/w

   IAA RAID ver4.5

   HD Tune ver2.10

하드가 WD 1200JD 두개입니다. 이걸로 제일 먼저 프라미스378 컨트롤러에다 물려서 레이드_0 잡았는데

부팅시 FastTrack 바이오스 인식부분이 딜레이가 심하길래, 부팅용으로 쓰기는 별로겠다 싶어서 과감히

포기를 하고(사실 PDC378 이것때문에 Deluxe 모델 구입한건데 돈 아깝습니다).. ICH5R 에 물려서

설치를 하였습니다.

실제의 체감성능을 비교할려면 ICH5R 컨트롤러에 1200JD*2개에다가 XP 설치하고 몸으로 느끼면서

비교를 해야겠지만.. 윈도우를 6번씩이나 깔아야된다는건 거의 죽음! 이라서.. 히타치 7k250에 부팅용

으로 XP 설치하고 여기서 접근하는 1200JD*2개의 성능입니다. 측정유틸로는 HD Tune을 이용하였고요.

HD Tach 도 돌려봤는데 그다지 얻을 정보가 시원찮아서 빼버렸습니다.

아래 도표를 보시면.. (각각의 테스트는 두번씩 측정을 하고 그중 수치가 좀더 잘 나온녀석으로 샘플을

뽑았습니다.)

전송율 즉 Transfer performance 경우는 이론에 부합하듯이 stripe size가 작을수록 더 높은 수치가

나왔습니다. 근데 4/8/16K 세 경우에서는 우열을 가리기가 힘들었고요. 대신에 32K 로 넘어가면서

급격히(!) 전송율이 하락함을 알수가 있습니다. 또 32/64/128K 셋중에서는 오히려 128K 가 58.3MB/s

로 약간이나마 높은 수치를 보였습니다. 전체적으로 가장 높은 전송율을 보이는것은 size= 16K 에서

85.2MB/s 로 나타납니다. (Avrg 값입니다. Max/Min은 제외.)

액세스 타임입니다. 데이타의 위치를 잘 추적해서 읽고/쓰고 하는데 도움이 되는 녀석입니다.

여기서는 이론과는 달리 stripe size 와는 상관없이 133.2~3 ms 로 거의 동일하게 나타났습니다.

stripe size가 클수록 positioning performance가 높아져서 액세스 속도가 좀더 잘 나온다고 알고

있었는데.. 막상 측정을 해본 결과는 전혀 뜻밖이었습니다. 사이즈와는 전혀 무관하게 거의 동일한

수치로 측정이 되었습니다.

참고로, 이때의 부팅용 히타치 7k250 의 access time 을 측정해보니 12.8ms 로 오히려 더 뛰어난

수치가 나타납니다. 접근속도면에서는 히타치가 더 우세한게 사실인 모양입니다. 대신에 전송율

(transfer rate) 경우는 평균 46.9MB/s 로서 단일하드의 한계치가 드러났습니다. 위에 웨스턴 레이드

경우는 50~85MB/s 정도가 나오니 말입니다.

시퓨사용율 입니다. 이경우가 stripe size 별로 차이가 현격히 드러나고 있습니다. 사이즈가 가장 작은

4K에서는 19.2% 로 높게 측정이 되며 사이즈가 클수록 시퓨사용율은 떨어지고 있음을 봅니다. 첫번째

전송율 측정그림의 size=128K 에서 오히려 64/32K 보다 약간 더 좋은 전송율을 보여주는게 시퓨사용율이

줄어드는것과 연관이 있지않을까 생각을 해봅니다. regression package 같은걸 돌려보면 함수관계도

찾을것 같습니다. 변곡점 같은게 아마 나타날듯..

이상으로 결론을 내면요. 제 경우 ICH5R + 1200JD*2개 스트라이핑 구성시는 각각의 stripe size 별로

고려를 해볼때 16KB 가 가장 최적인것 같습니다. 전송율은 가장 뛰어나고.. 액세스타임은 비슷하고..

유일하게 걸리는게 시퓨사용율이 size>32K 에 비해서 높다는 점인데.. 그렇다고 80->50 대로 떨어지는

전송율을 가지고 사용할수는 없기 때문입니다.

이제 이글을 올린다음에는.. size=16K 에 맞추고 1200JD*2개 에다가 XP 설치해서 세팅을 해볼까 합니다.

그러면 기존에 먼가 빠른 느낌이 없었던 size=128K 에 비해서 체감적으로 얼마나 나아졌는지 알수가

있겠지요. 측정툴로써 아무리 떠든들, 몸으로 느낄수있는 체감성능 향상이 없다면 레이드_0 구성하는

의미가 없으니 말입니다.

흔히들 말하기에.. 데이타나 파일 전송이 많은 컴터라면 stripe size 를 작게 잡아서 전송율을 높여주고

반대로 서버용으로 사용할 컴터라면 size를 높게 잡아서 positioning or locating 을 높여주라는 말들을

많이 합니다. 결국 "Optimal" stripe size 라는건 없다는 소리입니다. 사용자마다 돌리는 애플리케이션이나

컴터의 사용목적에 따라서 사이즈는 각자가 판단하기에 최적이라는 수치를 잡아야 할것입니다.

또 이런 사이즈별로 성능이 컨트롤러를 뭐 사용하느냐.. 하드를 뭐 사용하느냐.. 에 따라서도 달라지는것

같습니다.

제 경우 지금 처한 상황에서는 size = 16K 에 맞추는게 최적값이라고 판단을 하기에 이걸로 결정을

봤습니다. 여러분들도 한번쯤은 사이즈를 조절해보시는게 동일사양에서 좀더 높은(= 원하는) 성능을

이끌어낼수가 있다고 생각을 합니다. 그럼 이만 글 줄이면서 물러갑니다.

** 아래는 측정한 결과들을 캡쳐한 그림입니다.

위에 도표로 이미 작성은 해놨으므로.. 아래는 그냥 참고삼아 보시길 바랍니다.

위쪽부터 순서대로 stripe size = 4 / 8/ 16/ 32/ 64/ 128 KB 입니다.

△ stripe size = 4K

△ stripe size = 8K

△ stripe size = 16K

△ stripe size = 32K

△ stripe size = 64K

△ stripe size = 128K

[출처] stripe에 대한 좋은 자료 스크랩|작성자 검은박쥐