본문 바로가기
Old Posts/Linux

[Linux] 디스크 입출력(I/O) 성능 측정하기 - dd, hdparam 명령

by A6K 2020. 11. 19.

빅데이터 클러스터에서 각 호스트 장비의 입출력 성능은 매우 중요하다. 장비의 스펙이 바뀌거나 HDD에서 SSD로 구성을 변경할 때 서버의 입출력 성능을 측정해보고 싶을 때가 있다.

디스크 확인 (df -h)

우선 테스트해볼 디스크 장비를 확인해봐야한다. 시스템에 마운트되어 있는 파일 시스템 정보는 df 명령을 이용해 확인할 수 있다.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        63G  2.2G   58G   4% /data1

df 명령의 -h 옵션을 이용하면 사람이 읽을 수 있는 (Human Readable) 형태로 정보를 출력해준다. /dev/sda1 디스크에 대한 입출력 성능 측정을 진행하겠다.

1. dd 명령 - 쓰기 성능 테스트

가장 간단하게 실행해볼 수 있는건 dd 명령을 이용한 방법이다. dd 명령은 유닉스 계열 운영체제에서 사용하는 명령으로 파일을 복사하고 변환하는데 사용하는 커맨드라인 유틸리티다. dd 명령을 이용하면 입출력(I/O)에 대한 성능 측정을 할 수 있다.

다음 명령을 실행해보자

$ dd if=/dev/zero bs=1024 count=100 of=/data1/test_file oflag=direct

dd 명령의 if 옵션과 of 옵션은 각가 입력파일(InputFile)과 출력파일(OutputFile)을 의미한다. dd 명령의 입력파일로 준 /dev/zero 파일은 리눅스에서 제공하는 특수파일로 사용자가 원하는 만큼 0x00 바이트를 채워준다. 즉 0x00으로 가득찬 파일을 읽어서 /data1/test_file에 쓰라는 의미의 명령이다. 명령 수행이 종료된 다음 /data1/test_file을 열어보면 0x00으로 가득찬 파일을 볼 수 있다.

dd 명령의 bs는 한번에 읽고 쓰기 위한 사이즈를 의미한다. 즉, Block Size를 의미한다.

dd 명령의 count는 몇 번의 입출력을 수행할지를 의미한다. 결국 생성되는 파일의 크기는 bs * count 가 된다.

dd 명령의 oflag는 test_file을 쓸 때 사용할 file flag를 의미한다. oflag=direct는 O_DIRECT 플래그를 켜고 write() 호출을 하게 된다. O_DIRECT 플래그를 이용하면 파일시스템의 캐시 영역을 사용하지 않고 바로 디스크로 쓰게 된다. 따라서 디스크 입출력 성능을 측정할 때 반드시 필요하다.

$ dd if=/dev/zero bs=1024 count=100 of=test_file oflag=direct
100+0 records in
100+0 records out
102400 bytes (102kB) copies, 0.000315133 s, 325 MB/s

dd 명령이 종료되면 디스크 쓰기 성능을 알 수 있다.

2. dd 명령 - 읽기 성능 테스트

읽기 성능은 if와 of를 살짝 변경해서 측정할 수 있다.

$ dd if=/data1/test_file of=/dev/null bs=1024

dd 명령의 if, of 옵션의 의미는 동일하다. of 옵션에 사용한 /dev/null 파일은 리눅스에서 제공하는 특수 파일이다. 이 파일을 of 옵션으로 주면 읽은 데이터를 그냥 버리겠다는 의미다. (순수 읽기 성능만 수행할 것이기 때문에 읽은다음에는 아무것도 할 필요가 없다)

dd 명령의 bs는 한번에 읽을 Block Size를 의미하며 count 옵션을 주지않았기 때문에 파일 전체를 읽어들인다.

$ dd if=test_file of=/dev/null bs=1024
100+0 records in
100+0 records out
102400 bytes (102kB) copies, 9.4785e-05 s, 1.1 GB/s

dd 명령이 종료되면 디스크 읽기 성능을 확인할 수 있다.

3. hdparam 명령

hdparam 명령은 SATA, ATA 장치들의 파라미터 설정을 확인하고, 설정을 세팅하는데 사용되는 명령이다. 하지만 실무에서는 디스크 Access 속도를 측정할 때 많이 사용된다.

$ hdparm -Tt /dev/sda1

hdparam 명령을 이용해서 /dev/sda1 디스크의 성능을 측정하는 명령어다.

-T 옵션은 디스크 드라이브에 대한 캐시 데이터를 읽는 속도를 의미하며 빠르다. -t 옵션은 디스크 드라이브를 읽는 속도를 의미한다.

/dev/sda1:
  Timing cached reads:   15942 MB in  2.00 seconds = 7983 MB/sec
  Timing buffered disk reads:  950 MB in 3.00 seconds = 316.15 MB/sec

두 가지 옵션으로 준 항목에 대한 읽기 성능 결과다. 캐시를 이용한 결과가 훨씬 빠른 것을 알 수 있다.


 

Bash 스크립트 작성 레퍼런스 포스트 모음

Bash 스크립트를 작성할 때 참고할 만한 포스트들을 모아봤다. Bash 문법 [Bash] 조건문 문법, 사용법 및 예제 [Bash] 반복문 문법, 사용법 및 예제 명령어 access curl compress, uncompress dd date df dir dirn..

hbase.tistory.com

 

댓글