fio
디스크의 읽기, 쓰기, IOPS 를 측정하는 프로그램입니다.
기본 명령어가 아니기 때문에 설치를 진행하여야 합니다.
fio 설치하기
1. 아래 경로로 들어간 뒤에 fio 를 다운받습니다.
https://github.com/axboe/fio/releases
2. 다운받은 fio 를 서버로 전송합니다.
3. 압축을 해제합니다.
$ tar xzf fio-fio-3.7.tar.gz
4. 설치경로를 지정하여 설치합니다.
$ ./configure --prefix=/home/mozi/fio $ make; make install
fio 옵션
테스트시에서 사용된 옵션에 대해서만 정리했습니다.
옵션 |
설명 |
direct |
작업할 폴더 경로 |
name |
테스트 명 |
rw |
테스트 종류 |
bs |
테스트 블락 크기 |
size |
생성되는 총 파일 크기 |
numjobs |
생성되는 파일 수 |
time_based |
시간 기반 테스트 |
runtime |
테스트 진행 시간 |
threads | 테스트 시 병렬 작업 수 |
direct | 1 인 경우 Direct I/O, 0 인 경우 Buffered I/O 모드 |
norandommap | 이전에 수행한 I/O 의 위치를 고려하지 않음 |
group_reporting | 하나의 그룹으로 결과치 출력 |
fio 사용법
3분동안 하나의 스레드가 16개의 1G 파일을 4K 단위로 Direct I/O 모드의 Random Read 로 읽는 테스트
$ fio --directory=/home/mozi --name fio_test_file --direct=1 --rw=randread --bs=4K --size=1G --numjobs=16 --time_based --runtime=180 --group_reporting --norandommap
출력되는 결과입니다.
fio_test_file: (g=0): rw=randread, bs=(R) 16.0KiB-16.0KiB, (W) 16.0KiB-16.0KiB, (T) 16.0KiB-16.0KiB, ioengine=psync, iodepth=1 ... fio-3.7 Starting 16 processes fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) fio_test_file: Laying out IO file (1 file / 1024MiB) Jobs: 16 (f=16): [r(16)][100.0%][r=2082KiB/s,w=0KiB/s][r=130,w=0 IOPS][eta 00m:00s] fio_test_file: (groupid=0, jobs=16): err= 0: pid=32103: Wed Jun 27 14:08:24 2018 read: IOPS=124, BW=1990KiB/s (2037kB/s)(350MiB/180127msec) clat (msec): min=16, max=420, avg=128.62, stdev=15.92 lat (msec): min=16, max=420, avg=128.62, stdev=15.92 clat percentiles (msec): | 1.00th=[ 104], 5.00th=[ 110], 10.00th=[ 114], 20.00th=[ 118], | 30.00th=[ 122], 40.00th=[ 125], 50.00th=[ 128], 60.00th=[ 131], | 70.00th=[ 134], 80.00th=[ 138], 90.00th=[ 144], 95.00th=[ 150], | 99.00th=[ 176], 99.50th=[ 186], 99.90th=[ 305], 99.95th=[ 338], | 99.99th=[ 342] bw ( KiB/s): min= 32, max= 160, per=6.25%, avg=124.31, stdev=14.76, samples=5760 iops : min= 2, max= 10, avg= 7.73, stdev= 0.94, samples=5760 lat (msec) : 20=0.01%, 50=0.01%, 100=0.46%, 250=99.25%, 500=0.29% cpu : usr=0.01%, sys=0.04%, ctx=22451, majf=0, minf=637 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued rwts: total=22400,0,0,0 short=0,0,0,0 dropped=0,0,0,0 latency : target=0, window=0, percentile=100.00%, depth=1 Run status group 0 (all jobs): READ: bw=1990KiB/s (2037kB/s), 1990KiB/s-1990KiB/s (2037kB/s-2037kB/s), io=350MiB (367MB), run=180127-180127msec Disk stats (read/write): dm-3: ios=22398/55, merge=0/0, ticks=2877509/21469, in_queue=2899891, util=100.00%, aggrios=22400/22, aggrmerge=0/39, aggrticks=2879791/6474, aggrin_queue=2886247, aggrutil=99.99 % sdb: ios=22400/22, merge=0/39, ticks=2879791/6474, in_queue=2886247, util=99.99%
IOPS 는 124, BandWidth(BW) 는 1990KiB/s 가 나왔습니다.
디스크가 많이 안좋네요...
'Linux > 명령어' 카테고리의 다른 글
[LINUX] crontab 스크립트 실행 시 command not found 오류 해결하기 (0) | 2018.11.09 |
---|---|
[LINUX] nmon 리눅스 모니터링 유틸리티, nmon 엑셀 분석하기 (0) | 2018.06.19 |
gdb (0) | 2018.04.27 |
[LINUX] iperf 네트워크 속도측정하기 (0) | 2018.04.18 |
[LINUX] pstack 프로세스 스택 추적하기 (0) | 2018.03.14 |