제 목 : 하드 디스크 속도를 향상시켜 보자

저 자 : 서자룡
환 경 : 와우 리눅스6.2, AMD 900Mhz, RAM 128M, 샘물 야누스 보드
HDD IBM 30G (ATA100 support), Quantum 20G(ATA66 Support)ATA100 Card(HighPoint HPT370)

1.개요

일반적으로 리눅스상에서 하드 디스크는 16비트모드로 설정되어 작동하고 있습니다. 요즘 나오는 하드 디스크는 32비트 모드와 UMDA를 지
원하기 때문에 이러한 기능을 이용하면 보다 빠르게 하드 디스크를 사용할 수 있습니다. 따라서 hdparm를 이용하여 16비트 모드로 설정된
I/O값을 32비트로 바꿔 하드 디스크의 입출력 속도를 향상시켜 보도록 합니다.

2. 현재의 하드 디스크의 I/O 상태 점검

다음과 같이 명령을 실행하여 하드 디스크의 I/O 상태를 점검합니다.

[root@dumca /root]# hdparm -c /dev/hde

/dev/hde:
I/O support = 0 (default 16-bit)

*IMB 30G 하드 디스크를 체크한 것입니다.

[root@dumca /root]# hdparm -c /dev/hdg

/dev/hdg:
I/O support = 0 ( default 16-bit)

* 이 하드는 퀀텀 20기가짜리입니다.

이번에는 하드 디스크가 DMA 옵션을 사용하고 있는지 확인해 보도록 합니다.

[root@dumca /root]# hdparm -d /dev/hde

/dev/hde:
using_dma = 1 (on)

[root@dumca /root]# hdparm -d /dev/hdg

/dev/hdg:
using_dma = 1 (on)

이번에는 -t 옵션을 사용하여 하드 디스크의 입출력 속도를 체크해 보도록 합니다.

[root@dumca /root]# hdparm -t /dev/hde

/dev/hde:
Timing buffered disk reads: 64MB in 1.97 seconds = 32.49 MB/sec

[root@dumca /root]# hdparm -t /dev/hdg

/dev/hdg:
Timing buffered disk reads: 64MB in 2.53 seconds = 25.30 MB/sec

*참고로는 저는 UMDA100(ATA100)과 UDMA66 기능을 모두 사용하고 빠른 속도가 나오지만 이 기능을 사용하지 않으면 2~5MB/sec가 나
옴을 유의하시기 바랍니다.

필자의 하드 디스크 경우 16비트의 I/O 값으로 설정되어 있고, DMA는 ATA100카드 채택으로 사용하는 것으로 나오고 있습니다. 여러분들은
16비트의 I/O에 DMA는 꺼져 있을 것입니다. 자, 그러면 32비트로 I/O속도를 바꾸고 DMA기능을 사용하였을 때 하드 디스크 속도가 향상되
는지 알아 보도록 하지요

먼저 I/O 속도를 32비트 모드로 변경해 보도록 합니다.

[root@dumca /root]# hdparm -c 1 /dev/hde

/dev/hde:
setting 32-bit I/O support flag to 1
I/O support = 1 (32-bit)

[root@dumca /root]# hdparm -c 1 /dev/hdg

/dev/hdg:
setting 32-bit I/O support flag to 1
I/O support = 1 (32-bit)

그리고나서 하드 디스크의 속도를 체크해 봅니다.

[root@dumca /root]# hdparm -t /dev/hde

/dev/hde:
Timing buffered disk reads: 64MB in 1.86 seconds = 34.41 MB/sec

[root@dumca /root]# hdparm -t /dev/hdg

/dev/hdg:
Timing buffered disk reads: 64MB in 2.50 seconds = 25.60 MB/sec

ATA100기능을 사용하는 관계로 많이는 아니지만, 속도로 향상되었음을 확인할 수 있습니다.

DMA의 기능을 사용할려면 -d 1 옵션을 사용하면 됩니다. "hdparm -d 하드장치명"를 실행하였을 때 DMA가 꺼져 있는 경우에는 "hdparm
-d 1 하드장치명"를 실행하여 이 기능을 활성화합니다.

여러분과는 전혀 다른 환경이므로 저는 거꾸로 DMA 기능을 끄고 하드 입출력 속도를 체크해 보도록 하겠습니다. 여러분은 DMA 기능을 껴
고 체크해 보세요.

[root@dumca /root]# hdparm -d 0 /dev/hde

setting using_dma to 0 (off)
using_dma = 0 (off)

[root@dumca /root]# hdparm -t /dev/hde

/dev/hde:
Timing buffered disk reads: 64MB in 16.04 seconds = 3.99 MB/sec

[root@dumca /root]# hdparm -t /dev/hdg

/dev/hdg:
Timing buffered disk reads: 64MB in 16.16 seconds = 3.96 MB/sec

DMA 기능을 제거하니깐 엄청난 결과가 나왔습니다. DMA 기능을 사용하지 않으면 4.0MB/sec의 I/O를 가지는 반면에 DMA기능을 사용하
면 이보다 10배가량의 빠른 속도를 현저하게 가짐을 확인할 수 있습니다
여러분들도 아까보다는 하드의 I/O 속도가 빨라 졌음을 확인할 수 있을 것입니다.

결론적으로 I/O 속도를 향상시키기 위해서는 기본값으로 된 16비트를 32비트로 바꾸고 DMA를 활성화시켜야 합니다. 또한 UDMA 100를 사
용하면 할 수록 이 테스트에서 빠르다는 것을 확인할 수 있습니다.따라서 여러분들의 하드 디스크가 UDMA 66 또는 100를 지원한다면 커널
에서 이를 사용할 수 있도록 설정하는 것이 중요할 것입니다.
UDMA 66과 100를 설정하는 방법에 대해서는 다음 시간에 소개하도록 하겠습니다.

자, 마지막으로 하드 디스크의 I/O 값이 16비트로 고정되어 있으므로 항상 바뀐 값으로 유지되도록 하기 위해서는 다음과 같은 옵션을 사용
합니다.

[root@dumca /rooot]# hdparm -k 1 /dev/hde

/dev/hde:
setting keep_setting to 1 (on)
keepsettings = 1 (on)

부팅시에는 디폴트값으로 작동되므로 부팅 스크립트 파일에 hdparm -c 1 -d 1 -k 1 /dev/hde 을 입력해 주는 것이 좋겠지요.....

=====================================
출처 : 서자룡