Linux, disk I/O 측정 - vdbench
- SSD가 설치된 가상머신에서 Vdbench를 이용해 disk 성능 측정 (Update: Apr 19, 2021)
환경 구성
- OS: Ubuntu 20.04 on VM
- CPU: 1 way, 6 cores (No HyperThreading)
- Vdbench: v5.04.07
- SSD: WD Black NVMe
1. Vdbench 와 실행에 필요한 java 패키지 설치
;Oracle 사이트의 Vdbench Downloads 에서 다운 받아 압축을 풀면 됩니다
USER1@VM1:~$ sudo apt install -y java*
USER1@VM1:~$ cd ~/download/vdbench ; unzip ./vdbench50407.zip ; ls -al
drwxrwxr-x 2 USER1 USER1 4096 Apr 19 12:50 ./
drwx------ 8 USER1 USER1 4096 Apr 14 12:45 ../
(...생략...)
-rwxrwxrwx 1 USER1 USER1 1314 Jul 15 2016 vdbench
-rw-rw-r-- 1 USER1 USER1 3073219 Apr 16 06:19 vdbench50407.zip
(...생략...)
2. Vdbench quick simple test
USER1@VM1:~/download/vdbench$ ./vdbench -t
13:39:52.501 Created output directory '/home/USER1/download/vdbench/output'
13:39:52.535 input argument scanned: '-f/tmp/parmfile'
13:39:52.576 Starting slave: /home/USER1/download/vdbench/vdbench SlaveJvm -m localhost -n localhost-10-210419-13.39.52.486 -l localhost-0 -p 5570
13:39:52.789 All slaves are now connected
13:39:52.844 Vdbench will attempt to expand a disk file if the requested file size is a multiple of 1mb
13:39:52.844 lun=/tmp/quick_vdbench_test does not exist or is too small. host=localhost
13:39:54.001 Starting RD=SD_format; I/O rate: Uncontrolled MAX; elapsed=(none); For loops: threads=2 iorate=max
13:39:54.132 All sequential workloads on all slaves are done.
13:39:54.132 This triggers end of run inspite of possibly some non-sequential workloads that are still running.
Apr 19, 2021 interval i/o MB/sec bytes read resp read write read write resp queue cpu% cpu%
rate 1024**2 i/o pct time resp resp max max stddev depth sys+u sys
13:39:55.045 1 320.0 40.00 131072 0.00 0.119 0.000 0.119 0.00 0.26 0.018 0.0 5.5 1.5
13:39:55.052 avg_2-1 0.0 0.00 0 0.00 0.000 0.000 0.000 0.00 0.00 0.000 0.0 NaN NaN
(...생략...)
13:40:02.001 Vdbench execution completed successfully. Output directory: /home/USER1/download/vdbench/output
USER1@VM1:~/download/vdbench$ ls output/
config.html localhost-0.html logfile.html sd1.html swat_mon_total.txt wd1.html
errorlog.html localhost-0.stdout.html parmfile.html skew.html swat_mon.txt
flatfile.html localhost.html parmscan.html status.html totals.html
histogram.html localhost.var_adm_msgs.html sd1.histogram.html summary.html wd1.histogram.html
3-1. Raw Device I/O 테스트와 결과
;SD 매개변수로 lun=/dev/sda (Name of raw disk)를 사용하는 경우
USER1@VM1:~/download/vdbench$ df -h |grep ^/dev
/dev/sda4 121G 8.8G 106G 8% /
/dev/sda2 976M 294M 616M 33% /boot
(...생략...)
USER1@VM1:~/download/vdbench$ cat vdbench_param/param.txt
sd=sd1,lun=/dev/sda,openflag=o_direct
wd=wd1,sd=sd1,xfersize=4K,rdpct=0,seekpct=100
rd=rd1,wd=wd1,iorate=max,elapsed=180,interval=1,threads=16
#180초 동안 I/O rate max로 4k 블록, 100% random write, 1초마다 출력
#상세 옵션은 압축 파일에 포함된 vdbench.pdf 파일을 참고
# SD (Storage Definition) parameters
#'lun=/dev/sda': Name of raw disk or file system file. e.g. lun=/home/USER1/10gFile
#'lun=/home/USER1/10gFile'
# /home/USER1/10gFile: Solaris file system filename. No control over physical I/O guaranteed since the file system may use system cache.
#'openflag=o_direct': Pass specific flags when opening a lun or file
# o_direct : Gives you raw access to a full volume (no partition). This parameter is required when using /dev/xxx volumes
#'iorate=max': Run the maximum I/O rate possible. This is called an uncontrolled max workload.
#'rdpc=30': Read percentage. Default 100.
#'seekpct=100': Percentage of random seeks. Default seekpct=100 or seekpct=random.
USER1@VM1:~/download$ sudo ./vdbench -f ./vdbench_param/param.txt -o param_report
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Vdbench distribution: vdbench50407 Tue June 05 9:49:29 MDT 2018
For documentation, see 'vdbench.pdf'.
23:29:31.163 input argument scanned: '-f./vdbench_param/param.txt'
23:29:31.164 input argument scanned: '-oparam_report'
23:29:31.221 Starting slave: /home/USER1/download/vdbench SlaveJvm -m localhost -n localhost-10-210419-23.29.31.128 -l localhost-0 -p 5570
23:29:31.456 All slaves are now connected
23:29:33.001 Starting RD=rd1; I/O rate: Uncontrolled MAX; elapsed=180; For loops: threads=16
Apr 19, 2021 interval i/o MB/sec bytes read resp read write read write resp queue cpu% cpu%
rate 1024**2 i/o pct time resp resp max max stddev depth sys+u sys
23:29:34.038 1 8504.0 33.22 4096 0.00 1.360 0.000 1.360 0.00 13.53 1.644 11.6 7.4 2.1
23:29:35.006 2 11040.0 43.13 4096 0.00 1.416 0.000 1.416 0.00 20.22 2.218 15.8 6.1 3.1
(...생략...)
23:32:32.002 179 10662.0 41.65 4096 0.00 1.496 0.000 1.496 0.00 19.94 1.826 16.0 3.4 2.7
23:32:33.005 180 13789.0 53.86 4096 0.00 1.153 0.000 1.153 0.00 17.99 1.452 16.0 5.4 2.9
23:32:33.010 avg_2-180 12143.3 47.43 4096 0.00 1.314 0.000 1.314 0.00 69.39 1.662 16.0 4.2 2.9
23:32:33.680 Vdbench execution completed successfully. Output directory: /home/USER1/download/param_report
USER1@VM1:~/download/vdbench$ grep avg param_report/totals.html
Apr 19, 2021 interval i/o MB/sec bytes read resp read write read write resp queue cpu% cpu%
rate 1024**2 i/o pct time resp resp max max stddev depth sys+u sys
23:32:33.010 avg_2-180 12143.3 47.43 4096 0.00 1.314 0.000 1.314 0.00 69.39 1.662 16.0 4.2 2.9
# max 설정의 평균 IOPS 12143, 전송속도 47.43M/s, read 응답시간 1.314초, write 응답시간 1.314초, cpu 사용률 4.2%
# cpu core 수보다 많은 thread 설정으로 IOPS, 전송속도는 소폭 늘었지만 응답시간이 1초 이상으로 늘어남
3-2. Raw Device I/O 테스트와 결과
;SD 매개변수로 file system file 을 사용하는 경우
;Vdbench Users Guide를 참고하면 Name of raw disk, file system file 모두 사용 가능
USER1@VM1:~/files$ dd if=/dev/zero of=1gFile count=1000000 bs=1024
1000000+0 records in
1000000+0 records out
1024000000 bytes (1.0 GB, 977 MiB) copied, 2.3842 s, 429 MB/s
(...생략...)
USER1@VM1:~/files$ ls -alhs |sort
11G -rw-rw-r-- 1 USER1 USER1 10G Apr 19 21:38 10gFile
20G -rw-rw-r-- 1 USER1 USER1 20G Apr 19 21:06 20gFile
29G -rw-rw-r-- 1 USER1 USER1 29G Apr 19 21:07 30gFile
977M -rw-rw-r-- 1 USER1 USER1 977M Apr 19 21:40 1gFile
# 매개변수 변경으로 테스트 결과를 비교하기 위해 1GB, 10GB, 20GB, 30GB dummy 생성
USER1@VM1:~/download/vdbench$ cat vdbench_param/param.txt
sd=sd1,lun=/home/USER1/files/10gFile,size=10g
wd=wd1,sd=sd1,xfersize=4K,rdpct=0,seekpct=100
rd=rd1,wd=wd1,iorate=max,elapsed=180,interval=1,threads=6
# SD (Storage Definition) parameters
#'lun=/home/USER1/files/10gFile': Name of raw disk or file system file.
# *Solaris file system filename. No control over physical I/O guaranteed since the file system may use system cache.
#'size=10g': Size of the raw disk or file to use for workload. Optional unless you want Vdbench to create a disk file for you.
#'iorate=max': Run the maximum I/O rate possible. This is called an uncontrolled max workload.
#'rdpc=30': Read percentage. Default 100.
#'seekpct=100': Percentage of random seeks. Default seekpct=100 or seekpct=random.
;매개변수를 변경하며 실행 한 결과
;매개변수를 다르게 실행할 때 마다 전혀 다른 결과도 볼 수 있다.
(지금은 이해가 부족하여 언젠가 다시.. 분석을 위해 남겨 놓음)
USER1@VM1:~/download/vdbench$ sudo ./vdbench -f ./vdbench_param/param.txt -o param_report
(...생략...)
Apr 19, 2021 interval i/o MB/sec bytes read resp read write read write resp queue cpu% cpu%
rate 1024**2 i/o pct time resp resp max max stddev depth sys+u sys
# sd=sd1,lun=/home/USER1/files/10gFile,size=9g 실행 결과
22:59:35.016 avg_2-180 67857.4 265.07 4096 0.00 0.086 0.000 0.086 0.00 141.18 1.421 5.8 25.7 22.7
# sd=sd1,lun=/home/USER1/files/10gFile,size=10g 실행 결과
23:04:43.009 avg_2-180 64894.9 253.50 4096 0.00 0.090 0.000 0.090 0.00 157.74 1.409 5.9 24.1 21.4
# sd=sd1,lun=/home/USER1/files/10gFile 실행 결과 (size=10g 매개변수 제거)
21:38:41.008 avg_2-180 61410.1 239.88 4096 0.00 0.095 0.000 0.095 0.00 207.60 1.697 5.9 17.0 14.7
# sd=sd1,lun=/home/USER1/files/10gFile,size=1g 실행 결과
21:22:44.011 avg_2-180 274043.2 1070.48 4096 0.00 0.020 0.000 0.020 0.00 168.18 0.513 5.5 48.4 38.2
# sd=sd1,lun=/home/USER1/files/30gFile,size=1m 실행 결과
22:49:17.031 avg_2-180 688208.1 2688.31 4096 0.00 0.007 0.000 0.007 0.00 93.11 0.084 4.7 87.5 59.0
# sd=sd1,lun=/home/USER1/files/20gFile,size=1m 실행 결과
22:45:33.013 avg_2-180 690853.1 2698.65 4096 0.00 0.007 0.000 0.007 0.00 52.51 0.074 4.7 87.6 58.6
# sd=sd1,lun=/home/USER1/files/10gFile,size=1m 실행 결과
22:02:00.058 avg_2-180 417458.5 1630.70 4096 0.00 0.011 0.000 0.011 0.00 2851.31 1.226 4.7 70.3 49.3
# sd=sd1,lun=/home/USER1/files/1gFile,size=10g 실행 결과
# 추가로 아래 파일 사이즈 경고 메시지가 출력됨
21:47:37.004 avg_2-180 66388.2 259.33 4096 0.00 0.088 0.000 0.088 0.00 203.61 1.579 5.9 19.6 17.0
21:44:28.117 Warning: size requested for sd=sd1,lun=/home/USER1/files/1gFile: 10737418240; size available: 1024000000. Insufficient size.
21:44:28.117 If this is a file system file vdbench will try to expand it.
21:44:28.117
21:44:28.119 Vdbench will attempt to expand a disk file if the requested file size is a multiple of 1mb
4. File-System 테스트와 결과
- 각각의 mount 포인트에 디렉토리 depth: 1, 파일 사이즈 1GB 5개, 전송사이즈 128k, 180초간 ramdon write 100% I/O 부하
USER1@VM1:~/download/vdbench$ vi vdbench_param/param.txt
fsd=fsd1,anchor=/home/USER1/vdbench_fstest,depth=1,width=1,files=5,size=1G
fwd=fwd1,fsd=fsd1,rdpct=0,xfersize=128k,fileselect=random,fileio=random,threads=6
rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=180,interval=1
# FSD (File System Definition) parameters
#'depth=1' : How many levels of directories to create under the anchor.
#'width=1' : How many directories to create in each new directory.
#'files=16' : How many files to create in the lowest level of directories.
#'size=1g' : Specifies the size(s) of the files that will be created.
# FWD (Filesystem Workload Definition) parameters
#'fileio=random' : How file I/O will be done: random or sequential
#'fileselect=random' : How to select file names or directory names for processing. e.g. fileselect=random/seq
#'threads=16' : How many concurrent threads to run for this workload.
#'operation=read' : Specifies a single file system operation that must be done for this workload.
#'rdpct=30' : For operation=read and operation=write only. This allows a mix and read and writes against a single file.
# RD (Run Definition) parameters
#'fwdrate=max' : How many file system operations per second
#'format=yes' : During this run, if needed, create the complete file structure. e.g. format=yes/no/only/ restart/clean/once/ directories
USER1@VM1:~/download/vdbench$ sudo ./vdbench -f vdbench_param/param.txt -m 4 -o param_report
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Vdbench distribution: vdbench50407 Tue June 05 9:49:29 MDT 2018
For documentation, see 'vdbench.pdf'.
13:07:18.929 Created output directory '/home/USER1/download/vdbench/param_report'
13:07:18.950 input argument scanned: '-fvdbench_param/param.txt'
13:07:18.950 input argument scanned: '-m4'
13:07:18.951 input argument scanned: '-oparam_report'
13:07:18.989 Anchor size: anchor=/home/USER1/vdbench_fstest: dirs: 1; files: 5; bytes: 5.000g (5,368,709,120)
13:07:19.029 Starting slave: /home/USER1/download/vdbench/vdbench SlaveJvm -m localhost -n localhost-10-210422-13.07.18.910 -l localhost-0 -p 5570
13:07:19.050 Starting slave: /home/USER1/download/vdbench/vdbench SlaveJvm -m localhost -n localhost-11-210422-13.07.18.910 -l localhost-1 -p 5570
13:07:19.070 Starting slave: /home/USER1/download/vdbench/vdbench SlaveJvm -m localhost -n localhost-12-210422-13.07.18.910 -l localhost-2 -p 5570
13:07:19.090 Starting slave: /home/USER1/download/vdbench/vdbench SlaveJvm -m localhost -n localhost-13-210422-13.07.18.910 -l localhost-3 -p 5570
13:07:19.451 All slaves are now connected
13:07:20.002 Starting RD=format_for_rd1
13:07:20.280 localhost-0: anchor=/home/USER1/vdbench_fstest mkdir complete.
Apr 22, 2021 ..Interval.. .ReqstdOps... ...cpu%... read ....read..... ....write.... ..mb/sec... mb/sec .xfer.. ...mkdir.... ...rmdir.... ...create... ....open.... ...close.... ...delete...
rate resp total sys pct rate resp rate resp read write total size rate resp rate resp rate resp rate resp rate resp rate resp
13:07:21.152 1 11774 0.321 31.3 22.3 0.0 0.0 0.000 11774 0.321 0.00 1471 1471.7 131072 1.0 0.504 0.0 0.000 0.0 0.000 5.0 1.373 0.0 0.000 0.0 0.000
13:07:22.024 2 11856 0.393 47.3 39.8 0.0 0.0 0.000 11856 0.393 0.00 1482 1482.0 131072 0.0 0.000 0.0 0.000 0.0 0.000 0.0 0.000 0.0 0.000 0.0 0.000
13:07:23.012 3 13765 0.367 32.8 28.0 0.0 0.0 0.000 13765 0.367 0.00 1720 1720.6 131072 0.0 0.000 0.0 0.000 0.0 0.000 0.0 0.000 0.0 0.000 0.0 0.000
13:07:23.269 localhost-0: anchor=/home/USER1/vdbench_fstest create complete.
13:07:24.007 4 3563.0 0.311 12.0 8.35 0.0 0.0 0.000 3563.0 0.311 0.00 445.3 445.38 131072 0.0 0.000 0.0 0.000 5.0 2937.1 0.0 0.000 5.0 0.041 0.0 0.000
13:07:24.013 avg_2-4 9728.0 0.370 30.0 24.7 0.0 0.0 0.000 9728.0 0.370 0.00 1216 1216.0 131072 0.0 0.000 0.0 0.000 1.7 2937.1 0.0 0.000 1.7 0.041 0.0 0.000
13:07:24.013 std_2-4 5423.7 2.482 5423.7 2.482 2.9 65.916 2.9 0.036
13:07:24.014 max_2-4 13765 48.064 13765 48.064 0.504 5.0 2987.5 1.539 5.0 0.105
13:07:24.134
13:07:24.134 Miscellaneous statistics:
13:07:24.134 (These statistics do not include activity between the last reported interval and shutdown.)
13:07:24.134 FILE_CREATES Files created: 5 1/sec
13:07:24.134 DIRECTORY_CREATES Directories created: 1 0/sec
13:07:24.134 WRITE_OPENS Files opened for write activity: 5 1/sec
13:07:24.134 DIR_EXISTS Directory may not exist (yet): 3 0/sec
13:07:24.134 FILE_CLOSES Close requests: 5 1/sec
13:07:24.134
13:07:25.001 Starting RD=rd1; elapsed=180; fwdrate=max. For loops: None
Apr 22, 2021 ..Interval.. .ReqstdOps... ...cpu%... read ....read..... ....write.... ..mb/sec... mb/sec .xfer.. ...mkdir.... ...rmdir.... ...create... ....open.... ...close.... ...delete...
rate resp total sys pct rate resp rate resp read write total size rate resp rate resp rate resp rate resp rate resp rate resp
13:07:26.012 1 15171 0.252 16.2 10.4 0.0 0.0 0.000 15171 0.252 0.00 1896 1896.3 131072 0.0 0.000 0.0 0.000 0.0 0.000 5.0 0.148 0.0 0.000 0.0 0.000
13:07:27.005 2 15255 0.323 28.3 21.0 0.0 0.0 0.000 15255 0.323 0.00 1906 1906.8 131072 0.0 0.000 0.0 0.000 0.0 0.000 0.0 0.000 0.0 0.000 0.0 0.000
(...생략...)
13:10:24.004 179 10724 0.459 17.1 14.6 0.0 0.0 0.000 10724 0.459 0.00 1340 1340.5 131072 0.0 0.000 0.0 0.000 0.0 0.000 1.0 0.120 1.0 0.016 0.0 0.000
13:10:25.004 180 11040 0.450 16.6 14.1 0.0 0.0 0.000 11040 0.450 0.00 1380 1380.0 131072 0.0 0.000 0.0 0.000 0.0 0.000 3.0 0.095 3.0 0.021 0.0 0.000
13:10:25.010 avg_2-180 11261 0.437 19.3 15.7 0.0 0.0 0.000 11261 0.437 0.00 1407 1407.7 131072 0.0 0.000 0.0 0.000 0.0 0.000 1.4 0.158 1.4 0.020 0.0 0.000
13:10:25.010 std_2-180 1356.7 3.593 1.3 0.110 1.3 0.032
13:10:25.010 max_2-180 15255 963.18 5.0 0.988 5.0 0.509
13:10:25.228
13:10:25.229 Miscellaneous statistics:
13:10:25.229 (These statistics do not include activity between the last reported interval and shutdown.)
13:10:25.229 WRITE_OPENS Files opened for write activity: 251 1/sec
13:10:25.229 FILE_BUSY File busy: 152,272 845/sec
13:10:25.229 FILE_CLOSES Close requests: 246 1/sec
13:10:25.229
13:10:25.645 Vdbench execution completed successfully. Output directory: /home/USER1/download/vdbench/param_report
USER1@VM1:~/download$ grep avg param_report/summary.html
13:07:24.012 avg_2-4 9728.0 0.370 30.0 24.7 0.0 0.0 0.000 9728.0 0.370 0.00 1216 1216.0 131072 0.0 0.000 0.0 0.000 1.7 2937.1 0.0 0.000 1.7 0.041 0.0 0.000
13:10:25.010 avg_2-180 11261 0.437 19.3 15.7 0.0 0.0 0.000 11261 0.437 0.00 1407 1407.7 131072 0.0 0.000 0.0 0.000 0.0 0.000 1.4 0.158 1.4 0.020 0.0 0.000
# 평균 CPU 19.3%, Write 100%, Total 1407.7 MB/s = Read 0 MB/s + Write 1407 MB/s
- 각각의 mount 포인트에 디렉토리 depth: 1, 파일 사이즈 1MB 10,000개, 전송사이즈 4k, 180초간 random read 70%, ramdon write 30% I/O 부하
USER1@VM1:~/download/vdbench$ vi vdbench_param/param.txt
fsd=fsd1,anchor=/home/USER1/vdbench_fstest,depth=1,width=1,files=10000,size=1M
fwd=fwd1,fsd=fsd1,rdpct=70,xfersize=4k,fileselect=random,fileio=random,threads=6
rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=180,interval=1
USER1@VM1:~/download/vdbench$ sudo ./vdbench -f vdbench_param/param.txt -m 4 -o param_report
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Vdbench distribution: vdbench50407 Tue June 05 9:49:29 MDT 2018
For documentation, see 'vdbench.pdf'.
13:27:27.519 Created output directory '/home/USER1/download/vdbench/param_report'
13:27:27.538 input argument scanned: '-fvdbench_param/param.txt'
13:27:27.538 input argument scanned: '-m4'
13:27:27.539 input argument scanned: '-oparam_report'
13:27:27.575 Anchor size: anchor=/home/USER1/vdbench_fstest: dirs: 1; files: 10,000; bytes: 9.766g (10,485,760,000)
13:27:27.613 Starting slave: /home/USER1/download/vdbench/vdbench SlaveJvm -m localhost -n localhost-10-210422-13.27.27.501 -l localhost-0 -p 5570
13:27:27.633 Starting slave: /home/USER1/download/vdbench/vdbench SlaveJvm -m localhost -n localhost-11-210422-13.27.27.501 -l localhost-1 -p 5570
13:27:27.654 Starting slave: /home/USER1/download/vdbench/vdbench SlaveJvm -m localhost -n localhost-12-210422-13.27.27.501 -l localhost-2 -p 5570
13:27:27.676 Starting slave: /home/USER1/download/vdbench/vdbench SlaveJvm -m localhost -n localhost-13-210422-13.27.27.501 -l localhost-3 -p 5570
13:27:28.005 All slaves are now connected
13:27:29.001 Starting RD=format_for_rd1
13:27:29.325 localhost-0: anchor=/home/USER1/vdbench_fstest mkdir complete.
Apr 22, 2021 ..Interval.. .ReqstdOps... ...cpu%... read ....read..... ....write.... ..mb/sec... mb/sec .xfer.. ...mkdir.... ...rmdir.... ...create... ....open.... ...close.... ...delete...
rate resp total sys pct rate resp rate resp read write total size rate resp rate resp rate resp rate resp rate resp rate resp
13:27:30.066 1 7229.0 0.675 17.8 7.16 0.0 0.0 0.000 7229.0 0.675 0.00 903.6 903.62 131072 1.0 0.479 0.0 0.000 899.0 6.120 907.0 0.230 899.0 0.009 0.0 0.000
13:27:31.017 2 5951.0 1.266 13.6 7.27 0.0 0.0 0.000 5951.0 1.266 0.00 743.8 743.88 131072 0.0 0.000 0.0 0.000 745.0 10.196 745.0 0.038 745.0 0.010 0.0 0.000
(...생략...)
13:30:41.008 179 94612 0.061 27.7 22.5 70.0 66247 0.084 28365 0.007 258.7 110.8 369.58 4096 0.0 0.000 0.0 0.000 0.0 0.000 369.0 0.025 369.0 0.005 0.0 0.000
13:30:42.003 180 87924 0.066 29.3 23.1 69.8 61345 0.091 26579 0.007 239.6 103.8 343.45 4096 0.0 0.000 0.0 0.000 0.0 0.000 343.0 0.025 343.0 0.006 0.0 0.000
13:30:42.006 avg_2-180 93218 0.062 25.3 20.7 70.0 65253 0.086 27965 0.007 254.9 109.2 364.14 4095 0.0 0.000 0.0 0.000 0.0 0.000 364.1 0.028 364.1 0.006 0.0 0.000
13:30:42.006 std_2-180 11103 0.255 4750.7 0.044 61.9 0.201 61.9 0.014
13:30:42.006 max_2-180 89102 39.057 38223 18.777 497.0 18.745 497.0 3.129
13:30:42.229
13:30:42.229 Miscellaneous statistics:
13:30:42.229 (These statistics do not include activity between the last reported interval and shutdown.)
13:30:42.230 WRITE_OPENS Files opened for write activity: 65,550 364/sec
13:30:42.230 FILE_BUSY File busy: 28 0/sec
13:30:42.230 FILE_CLOSES Close requests: 65,544 364/sec
13:30:42.230
13:30:43.300 Vdbench execution completed successfully. Output directory: /home/USER1/download/vdbench/param_report
USER1@VM1:~/download/vdbench$ grep avg param_report/summary.html
13:27:41.009 avg_2-12 6615.5 1.172 15.4 9.90 0.0 0.0 0.000 6615.5 1.172 0.00 826.9 826.94 131072 0.0 0.000 0.0 0.000 827.4 9.493 826.6 0.090 827.4 0.006 0.0 0.000
13:30:42.006 avg_2-180 93218 0.062 25.3 20.7 70.0 65253 0.086 27965 0.007 254.9 109.2 364.14 4095 0.0 0.000 0.0 0.000 0.0 0.000 364.1 0.028 364.1 0.006 0.0 0.000
# 평균 CPU 25.3%, Read 70%, Total 364.14 MB/s = Read 254.9 MB/s + Write 109.2 MB/s
5. File-System 테스트 진행 중 오류
- 메모리 2GB에서 4GB 할당하니 조치됨
USER1@VM1:~/download/vdbench$ sudo ./vdbench -f ./vdbench_param/param.txt -o param_report
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Vdbench distribution: vdbench50407 Tue June 05 9:49:29 MDT 2018
For documentation, see 'vdbench.pdf'.
16:50:37.585 input argument scanned: '-f./vdbench_param/param.txt'
16:50:37.586 input argument scanned: '-oparam_report'
16:50:37.621 Anchor size: anchor=/home/USER1/vdbench_fstest: dirs: 1; files: 16; bytes: 16.000g (17,179,869,184)
java.lang.ClassFormatError: Incompatible magic value 1379526822 in class file java/nio/ByteBufferAsLongBufferB
at java.base/java.nio.HeapByteBuffer.asLongBuffer(HeapByteBuffer.java:486)
at Utils.Bin.<init>(Bin.java:168)
at Utils.Bin.<init>(Bin.java:185)
at Vdb.FwdStats.defineNamedData(FwdStats.java:1063)
at Vdb.Vdbmain.open_print_files(Vdbmain.java:183)
at Vdb.Vdbmain.masterRun(Vdbmain.java:792)
at Vdb.Vdbmain.main(Vdbmain.java:628)
16:50:37.629 common.failure(): System.exit(-99)
6. 진행하며 검토 및 알게된 것
- 스토리지의 최대 성능을 측정하는지, 스토리지에 연결된 서버에서 어느 수준의 성능이 나오는지 등 시나리오 따라 방향이 달라진다.
- 가상 머신의 경우 thin provisioning 특성을 감안해야 하는데 재구성이 번거로워 반복해서 실행했다.
- 부하를 일으키는 테스트 서버의 성능에 따라 multi thread 외 jvm 실행 수 등 매개변수 설정도 적정한지 테스트 해봐야한다.
- 테스트를 진행하는 스토리지 볼륨에는 데이터 손실이 있을 수 있으므로 스냅샷을 미리 생성하거나 분리된 볼륨에서 진행해야 한다.
- 스토리지 엔지니어마다 다르지만 현업 지인의 경험으로는 vdbench, iometer 가 스토리지 자체 측정 결과와 비슷하게 나와 이를 주로 사용한다고 한다.
- 경험 많은 스토리지 엔지니어가 아닌 한 나처럼 테스트에 의미있는 다양한 매개변수의 이해와 구성 시나리오, 난해한 가이드 문서에서 적절한 매개변수를 찾기란 어려워 PC에서 CrystalDiskMark 처럼 손쉽게 실행 후 결과를 얻기란 쉽지 않다.