Programming/OS, Program, Framework Tip

iozone - 리눅스 디스크 성능 테스트

awesometic 2017. 10. 25. 14:21
반응형

개요

리눅스 디스크 성능 테스트 방법입니다. 얘도 CLI 환경에서 사용하기 때문에 서버 성능 평가를 위해 (많이?) 사용된다고 하네요.

근데 sysbench에서 제공하는 테스트 종류가 많기 때문에 간단한 벤치마킹을 위해선 굳이 필요하진 않구요. 테스트 결과가 sysbench보다 자세하니 자세한 걸 원할 때 사용하시면 될 것 같아요.


iozone 빌드

iozone은 직접 빌드해야 합니다. 일단 소스 파일을 받아 압축을 풀어줍시다.

wget http://www.iozone.org/src/current/iozone3_471.tar
tar -xvf iozone3_471.tar
cd iozone3_471/src/current/

여기서 make 명령어를 입력하시면, makefile에 정의된 대로 빌드가 됩니다만,

make

You must specify the target.        
        ->   AIX                  (32bit)   <-
        ->   AIX-LF               (32bit)   <-
        ->   AIX64                (32bit)   <-
        ->   AIX64-LF             (32bit)   <-
        ->   bsdi                 (32bit)   <-
        ->   convex               (32bit)   <-
        ->   CrayX1               (32bit)   <-
        ->   dragonfly            (32bit)   <-
        ->   freebsd              (32bit)   <-
        ->   freebsd64            (64bit)   <-
        ->   generic              (32bit)   <-
        ->   ghpux                (32bit)   <-
        ->   hpuxs-11.0 (simple)  (32bit)   <-
        ->   hpux-11.0w           (64bit)   <-
        ->   hpuxs-11.0w          (64bit)   <-
        ->   hpux-11.0            (32bit)   <-
        ->   hpux-10.1            (32bit)   <-
        ->   hpux-10.20           (32bit)   <-
        ->   hpux                 (32bit)   <-
        ->   hpux_no_ansi         (32bit)   <-
        ->   hpux_no_ansi-10.1    (32bit)   <-
        ->   IRIX                 (32bit)   <-
        ->   IRIX64               (64bit)   <-
        ->   linux                (32bit)   <-
        ->   linux-arm            (32bit)   <-
        ->   linux-AMD64          (64bit)   <-
        ->   linux-ia64           (64bit)   <-
        ->   linux-powerpc        (32bit)   <-
        ->   linux-powerpc64      (64bit)   <-
        ->   linux-sparc          (32bit)   <-
        ->   macosx               (32bit)   <-
        ->   netbsd               (32bit)   <-
        ->   netbsd-AMD64         (64bit)   <-
        ->   openbsd              (32bit)   <-
        ->   openbsd-threads      (32bit)   <-
        ->   OSFV3                (64bit)   <-
        ->   OSFV4                (64bit)   <-
        ->   OSFV5                (64bit)   <-
        ->   linux-S390           (32bit)   <-
        ->   linux-S390X          (64bit)   <-
        ->   SCO                  (32bit)   <-
        ->   SCO_Unixware_gcc     (32bit)   <-
        ->   Solaris              (32bit)   <-
        ->   Solaris-2.6          (32bit)   <-
        ->   Solaris7gcc          (32bit)   <-
        ->   Solaris8-64          (64bit)   <-
        ->   Solaris8-64-VXFS     (64bit)   <-
        ->   Solaris10            (32bit)   <-
        ->   Solaris10cc          (64bit)   <-
        ->   Solaris10gcc         (32bit)   <-
        ->   Solaris10gcc-64      (64bit)   <-
        ->   sppux                (32bit)   <-
        ->   sppux-10.1           (32bit)   <-
        ->   sppux_no_ansi-10.1   (32bit)   <-
        ->   SUA                  (32bit)   <-
        ->   TRU64                (64bit)   <-
        ->   UWIN                 (32bit)   <-
        ->   Windows (95/98/NT)   (32bit)   <-

플랫폼을 명시해줘야 해요. 맞는 플랫폼 코드를 찾아 인수로 입력해줍시다.

보통 데스크탑 64bit CPU일 경우 linux-AMD64 를 해주시면 돼요. 여기선 XU4에서 돌리므로 linux-arm 을 입력할게요.

make linux-arm

이제 얘를 어느 위치에서나 사용이 가능하도록 환경변수 PATH에 등록된 실행파일 디렉토리에 집어넣읍시다. 먼저 어디에 실행파일들이 모여있는지 확인하고 복사합시다.

printenv PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

/usr/bin 이 적절해 보이네요. 여기로 복사.

cp iozone /usr/bin

제대로된 위치에 복사하셨다면 그대로 실행해 확인하실 수 있습니다.

iozone
	Usage: For usage information type iozone -h 

iozone 벤치마크

간단한 테스트 예제. XU4 + eMMC 32G 예제입니다.

# command
iozone -e -I -a -s 100M -r 4k -r 16384k -i 0 -i 1 -i 2

# results
	Iozone: Performance Test of File I/O
	        Version $Revision: 3.471 $
		Compiled for 32 bit mode.
		Build: linux-arm 

	Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
	             Al Slater, Scott Rhine, Mike Wisner, Ken Goss
	             Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
	             Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
	             Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
	             Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
	             Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer,
	             Vangel Bojaxhi, Ben England, Vikentsi Lapa,
	             Alexey Skidanov.

	Run began: Wed Oct 25 14:04:44 2017

	Include fsync in write timing
	O_DIRECT feature enabled
	Auto Mode
	File size set to 102400 kB
	Record Size 4 kB
	Record Size 16384 kB
	Command line used: iozone -e -I -a -s 100M -r 4k -r 16384k -i 0 -i 1 -i 2
	Output is in kBytes/sec
	Time Resolution = 0.000001 seconds.
	Processor cache size set to 1024 kBytes.
	Processor cache line size set to 32 bytes.
	File stride size set to 17 * record size.
                                                              random    random     bkwd    record    stride                                    
              kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread
          102400       4    17704    18649    20894    20588    15102    16945                                                                
          102400   16384    53998    72983   142354   142074   142191    74081                                                                

iozone test complete.

여기서 봐야할 건 두 개에요.

  • 16384K read/write (16M 순차 읽기/쓰기)
  • 4K random read/write (4K 랜덤 읽기/쓰기)

그리고 되게 다양한 테스트가 가능한데, 제가 사용한 명령어들은 이렇습니다.

# 사용한 명령어
iozone -e -I -a -s 100M -r 4k -r 16384k -i 0 -i 1 -i 2

# 옵션 설명
-e : 결과 시간 계산에 flush (fsync, fflush) 소요 시간 포함
-I : 모든 파일 동작에 VxFS VX_DIRECT, O_DIRECT, 또는 O_DIRECTIO 사용
-a : 자동 모드
-s : 파일 사이즈 지정 (Kb)
-r : 기록할 사이즈 지정 (Kb)
-i : 실행할 테스트. (0=write/rewrite, 1=read/re-read, 2=random-read/write)

# 모든 옵션 설명을 보기 위해선...
iozone -h

다른 디스크의 성능을 테스트하기 위해선, 간단히 그 디스크가 마운트된 장소로 가 명령어를 실행해주시면 됩니다 :)


참고


반응형