기술 정보
home
채널 소개
home

DB 디스크 I/O 성능 측정 tbiobench 사용 가이드

문서 유형
기술 정보
분야
모니터링/점검
키워드
tbiobench
디스크 I/O 성능 측정
1 more property

개요

tbiobench 도구를 사용하면 파일 시스템뿐 아니라 Raw Device의 속도 측정도 가능하여, disk I/O 장애 발생 시 disk 속도 측정 테스트에 유용합니다.
본 문서에서는 tbiobench도구 사용 방법을 안내합니다.
참고
tbiobenchTibero 5부터 제공되는 디스크 I/O 성능 측정 도구입니다.

방법

tbiobench 실행 옵션

옵션
설명
기본값 (Default)
-h <help>
tbiobench 의 옵션을 확인을 위한 도움말 출력
-
-b <block size>
I/O 측정 블록 단위, 크기 설정
8KB
-s <total size>
전체 I/O 테스트의 크기 설정
1GB
-F <flag> O_DIRECT | O_SYNC | O_TRUNC | O_NONBLOCK
I/O Flag 설정 여러 플래그를 설정 시 -F 옵션을 여러번 처리
O_SYNC
-t <target file>
I/O 대상 파일 지정 Raw device의 경우 target 파일로 device를 지정
random한 이름의 .tmp 파일 현재 디렉토리에 생성
-f <overwrite target file ("force")>
지정된 파일이 열리지 않을 경우 삭제한 후, 새로 생성하여 사용
-
-k <keep target file after test>
I/O 대상 파일을 테스트 후 삭제하지 않게 설정
-
-i <io_type> SW | SR | RR | RW | SEQ | RND |ALL
측정할 I/O type을 지정
SW/RW
-T <thread count>
thread의 개수를 설정
1
-S <random seed>
random I/O에서 사용될 random seed 를 설정
-
-o <output file>
테스트 output을 지정된 파일에 저장
-
참고
tbiobench 실제 사용 확인은 datafile, redo 등에서 open 되는 flag를 확인 후, 옵션을 적용하여야 정확한 값을 측정 할 수 있습니다.

OS 별 Flag 확인 방법

<표>
OS
명령어 <PID는 redo,datafile을 사용하는 process 를 이용합니다.>
OS 별 OPEN FLAG <O_DSYNC option으로 측정하려면 별도 Tool 요청하여야 합니다.>
Linux
strace -f -o open -p <pid> lsof +fg -p <pid>
- archive : O_RDWR|O_CREAT|O_EXCL - redo : O_RDWR|O_DSYNC - datafile : O_RDWR|O_DSYNC (* tibero 6 FS06 기준이며, DBWR AIO 기능을 사용하는[Tibero6 FS02-04]의 경우에는 tip 파일에 _USE_O_DIRECT=Y 옵션을 키고 측정해야 합니다. )
AIX
truss -afpo <outfile> -p <pid> pfiles <pid>
- archive : O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE - redo : O_RDWR|O_DIRECT|O_DSYNC|O_LARGEFILE - datafile : O_RDWR|O_DIRECT|O_DSYNC|O_LARGEFILE
Solaris
truss -afpo <outfile> -p <pid> pfiles <pid>
- archive : O_RDWR|O_CREAT|O_EXCL - redo : O_RDWR|O_DSYNC|O_LARGEFILE - datafile : O_RDWR|O_DSYNC|O_LARGEFILE
HP
piles <pid> tusc -afpo <output file> <pid> <executable>
- redo : O_RDWR|O_DSYNC|O_LARGEFILE - datafile : O_RDWR|O_DSYNC|O_LARGEFILE

사용 예제

1. 사용 Flag 확인

File System / Linux 테스트
-- FILE SYSTEM / Linux [km@pub:/home/km]$ lsof +fg -p 30445 (DBWR process) / redo, datafile을 사용하는 Process로 측정 COMMAND PID USER FD TYPE FILE-FLAG DEVICE SIZE/OFF NODE NAME tbsvr 30445 km cwd DIR 253,2 6 2150965 /home/km/tibero6/bin/prof tbsvr 30445 km rtd DIR 253,0 4096 64 / tbsvr 30445 km txt REG 253,2 466078792 28844160 /home/km/tibero6/bin/tbsvr tbsvr 30445 km 86u REG RW,SYN,DIR,LG 253,2 209715200 282582779 /home/km/tibero6/database/km_test/TMS_VDS_DATA01.DTF tbsvr 30445 km 87u REG RW,SYN,DIR,LG 253,2 209715200 282582780 /home/km/tibero6/database/km_test/TMS_TMS_DATA01.dtf tbsvr 30445 km 89u REG RW,SYN,DIR,LG 253,2 134217728 270503305 /home/km/tibero6/database/km_test/usr001.dtf tbsvr 30445 km 90u REG RW,SYN,DIR,LG 253,2 104857600 270503301 /home/km/tibero6/database/km_test/redo021.redo
SQL
복사
Raw Device/ HP 테스트
-- Raw Device / HP BL890c-1@x162780_0:/dev/vg01 # pfiles 2685 2685: /home/ps_test/tibero6/bin/tbsvr 0: S_ISCHR mode:666 dev:64,3 ino:31265 uid:0 gid:0 rdev:157,1 flags = O_RDWR|O_LARGEFILE file = /dev/pts/1 1: S_ISCHR mode:666 dev:64,3 ino:31265 uid:0 gid:0 rdev:157,1 flags = O_RDWR|O_LARGEFILE 63: S_ISCHR mode:640 dev:64,3 ino:158704 uid:105 gid:106 rdev:128,8197 flags = O_RDWR|O_DSYNC|O_LARGEFILE file = /dev/vg02/rlvol15_250g 64: S_ISCHR mode:660 dev:64,3 ino:147848 uid:105 gid:106 rdev:128,8194 flags = O_RDWR|O_DSYNC|O_LARGEFILE file = /dev/vg02/rlvol12_250g
SQL
복사

2. tbiobench 수행

file-flag, name 값 참고하여 redo, datafile 각각에 대해 해당 경로에서 수행합니다.
주의
write 기준 10m/s 이하이면 DISK 속도가 느린것.으로 판단합니다. < redo log - sequencail write  /  datafile - random write 의 속도 참고>
File System / Linux
-- FILE SYSTEM / Linux [km@pub:/home/km/tibero6/database/km_test]$ tbiobench -i all -s 10M -F O_SYNC -F O_DIRECT -k < Read/Write option을 동시에 적용하려면 -k 옵션을 줘야함> * 옵션 설명 : 모든 IO 타입에 대해 10M 만큼 O_SYNC, O_DIRECT Flag 옵션으로 i/o test 수행 target: IV2N60ZQPMPOZHS4RVC1MDP6FFFN8F7Q.tmp header size: 0 Gbytes block size: 8 Kbytes total size: 10 Mbytes flags: O_DIRECT O_SYNC thread count: 1 random seed: 0 sequential write Thread# ms Mbytes Mbytes/sec 0 3618.80 10.00 2.76 Total 3618.80 10.00 2.76 sequential read Thread# ms Mbytes Mbytes/sec 0 46.61 10.00 214.56 Total 46.61 10.00 214.56 random write Thread# ms Mbytes Mbytes/sec 0 1404.85 10.00 7.12 Total 1404.85 10.00 7.12 random read Thread# ms Mbytes Mbytes/sec 0 123.01 10.00 81.29 Total 123.01 10.00 81.29
SQL
복사
Raw Device / HP
raw device 의 경우 tbiobench 수행시 device가 덮어 써지므로, 주의가 필요합니다.
설치 전 측정 or 비어있는 device 측정해야 합니다.
-- Raw Device / HP BL890c-1@x162780_0:/dev/vg01 # tbiobench -f -F O_SYNC -s 10M -t lvol8_1g target: lvol8_1g header size: 0 Gbytes block size: 8 Kbytes total size: 10 Mbytes flags: O_SYNC thread count: 1 random seed: 0 sequential write Thread# ms Mbytes Mbytes/sec 0 330.66 10.00 30.24 Total 330.66 10.00 30.24 random write Thread# ms Mbytes Mbytes/sec 0 609.84 10.00 16.40 Total 609.84 10.00 16.40
SQL
복사
Zeta (raw device 참고)
zeta의 경우 ssvr에서 I/O가 발생하므로, ssvr의 물리적 경로에서 tbiobench 를 수행하여야 합니다. 반드시 _USE_O_DIRECT=Y를 설정하도록 되어 있으므로, O_DIRECT 옵션을 켜고 측정해야 합니다. (ex. ssvr의 물리적 경로가 /zeta_disk/zeta-disk0 일 때, tbiobench -s 10M -F O_SYNC -F O_DIRECT -t/dev/zeta-disk02 -f)
TAS (raw device 참고)
TAS의 경우 raw device를 target으로 지정하여 측정하면 됩니다. raw device의 write test 시에는 data를 덮어씌우게 되므로 주의하여 작업하여야 하며, 설치전 별도 테스트 진행이 필요합니다.

tbnetbench 사용 방법

tbnetbench는 node간 네트워크 성능이 정상적인지 확인할 수 있으며, 사용방법은 아래와 같습니다.
사용 방법
tbnetbench <type: server or client> <ip> <port> <send#> <send size> <repeat#>
SQL
복사
실행 예시
<1번 노드>
tbnetbench server <1번 노드 local cluster ip> <port> 5 8192 100
SQL
복사
<2번 노드>
tbnetbench client <1번노드 localcluster ip> <port> 5 8192 100
SQL
복사

참고 지식

sequential 의 경우 버퍼 캐시를 사용하게되어 비교적 빠르게 측정되므로, random 측정해야 정확한 수치를 확인할 수 있습니다.
I/O Type
설명
SW
Sequential Write / 순차적으로 write
SR
Sequential Read / 순차적으로 Read
RR
Random Read / 랜덤하게 Read
RW
Random Write / 랜덤하게 Write
SEQ
Sequential Read/Write / 순차적으로 Write, Read
RND
Random Read/Write / 랜덤하게 Write, Read
ALL
Sequential Read/Write, Random Read/Write / 순차적 Write, Read , 랜덤 Write, Read 모두
Flag
설명
O_DIRECT
I/O시 버퍼에 캐싱하지 않고 바로 disk 에 read/write
O_SYNC
write() 시스템 콜이 파일을 기록하는 작업 동기화 (메타데이터 동기화)
O_TRUNC
파일을 생성할 때 이미 있는 파일이고, 쓰기 옵션으로 열었으면 내용을 모두 지우고 파일의 길이를 0으로 변경
O_NONBLOCK
디스크인 경우 읽거나 쓸 데이터가 없으면 -1을 리턴
O_DSYNC
쓰기 작업 직후 데이터만 동기화 (메타데이터 동기화 X)