MySQL/FlaSim을 이용한 TPC-C Benchmark
목차 |
개요
저자: 최화영
- 왜 FlaSim이 TPC-C 베치마크보다 먼저 설치되어야 하나?
FlaSim 설치
1. flasim 다운로드 및 컴파일
flasim을 /home/hychoe/flasim_slb
에 다운로드한 후 컴파일한다.
마운트할 볼륨은 /home/hychoe/flasim_slb/vol
로 할 예정이다.
nfdd.c
와 flasim-u.h
파일의 volpath
수정한뒤 컴파일하여 사용하면 더 편리하다.
$ cd /home/hychoe/flasim_slb $ make
2. flasim utility 컴파일
컴파일하여 mkvol, mkftl.log, mkftl.fmax, mkftl.mits를 생성한다.
$ make util
3. flasim을 이용하여 볼륨 생성
자주 사용하는 명령어들을 script로 만들어 두었음. 번호 순서대로 실행하면 되는데 설치할 때는
2_fmt_mnt
까지 실행하고, 나중에 제거할 때는 3_umount
와 4_remove
까지
실행한다.
$ ./0_init_vol # rm volume, create volume, make ftl $ ./1_insert # 각모듈 insmod 수행 $ ./2_fmt_mnt # 파일 포멧과 마운트 $ ./3_umount # unmounting file systems $ ./4_remove # 각 모듈들 rmmod
위와 같이 실행하면 flasim_slb
폴더에 a, b, c 폴더가
만들어지고 nfdda.vol
파일은 a
폴더에 연결된다.
생성되는 디렉토리는 다음과 같다.
- /home/hychoe/flasim_slb/a
- /home/hychoe/flasim_slb/b
- /home/hychoe/flasim_slb/c
MySQL 설정
4. MySQL과 Benchmark 설치
미리 Benchmark를 수행해서 데이터베이스가 만들어져 있어야한다. dbt2를 인스톨하면 자동으로 데이터베이스가 만들어져 있다. dbt2 벤치마트를 하기위한 데이터베이스 저장된 경로는 디폴트로 : /usr/local/mysql/data 로 설정되어 있다. --> 만약 디폴트 폴더로 하지 않고자 한다면 mysql 설치할 때 있던 환경설정에서 지정한 data 저장경로에 저장된다. 추후 이 경로를 변경할 예정이다. dbt2 설치 과정은 이 문서를 참조할 것.
5. dbt2 파일 복사
마운트된 디렉토리가 /home/hychoe/flasim_slb/a
일 경우 a
디렉토리에 dbt2 파일을 복사해 온다.
$ cp -R /usr/local/mysql/data/dbt2 /home/hychoe/flasim_slb/a
mysql data 디렉토리에 있는 mysql와 test 디렉토리도 함께 복사해온다.
$ cp -R /usr/local/mysql/data/mysql /home/hychoe/flasim_slb/a $ cp -R /usr/local/mysql/data/test /home/hychoe/flasim_slb/a
이렇게 복사하는 이유는 mysql의 data 폴더를 지정한 a 폴더로 변경하려면 원래 DB 폴더에 있던 내용이 있어야 하기 때문이다.
6. a 디렉토리 소유자 변경
a 폴더의 소유자를 mysql로 변경한다.
$ cd /home/hychoe/flasim_slb $ chown -R mysql:mysql ./a
7. mysql 데몬 중지 및 설정 파일 수정
mysql 데몬이 돌아가는지 확인한다. data 폴더를 변경하려고 하기 때문에 만약 mysql이 실행중이라면 중지한 다음
폴더를 변경해야 하기 때문이다. 실행중이면 중지하고, 실행중이 아니면 data 폴더 변경을 하면 된다.
폴더 변경은 my.cnf
를 변경한다.
실행중일때는 아래와 같이 중지한다.
$ cd /usr/local/mysql/bin $ ./mysqladmin -u root shutdown
실행중이 아니면 my.cnf 파일을 수정한다.
$ vi /etc/my.cnf
그런 다음 아래와 같이 수정한다. [mysqld] 의 설정 부분에서 끝 부분에 datadir=/home/hychoe/flasim_slab/a 라고 마운트된 디렉토리로 설정한다. 이 밑에 부분은 주석처리되어 있으므로 주석처리를 없애고 디렉토리를 바꿔준다.
[mysqld] . . datadir=/home/hychoe/flasim_slab/a . . . innodb_data_home_dir = /home/hychoe/flasim_slb/a innodb_data_file_path = ibdata1:10M:autoextend innodb_log_group_home_dir = /home/hychoe/flasim_slb/a innodb_log_arch_dir = /home/hychoe/flasim_slb/a
8. mysql 데몬 실행
$ cd /usr/local/mysql/bin $ sudo ./mysqld_safe &
벤치마크 실행
9. TPC-C Benchmark 실행
수행하기전에 현재의 값을 미리 저장해 두어야 실행 후에 차이값을 얻을 수 있다.
$ sync $ cat /proc/nfdd/nfdda/vol >> /home/result/test1.txt # proc 파일을 이용하여 초기 정보 저장
아래와 같이 벤치마크를 실행한다.
$ cd /home/hychoe/dbt2/dbt2-0.40/scripts $ ./run_workload.sh -c 20 -t 20 -d 300 -w 20 -u root
- TPC-C Benchmark 수행시 옵션
- -d : duration of test(in sec)
- -w : scale factor(number of warehouses)
- -c : number of database connections
- -t : terminals per warehouse
- -x : database password
- -u : database user
10. 실험 결과 저장
벤치마크가 끝나면 proc 파일 시스템으로 결과를 txt 파일로 가져온다.
$ cat /proc/nfdd/nfdda/vol >> /home/result/test1.txt
11. 실험 종료
정보를 모두 저장하고 umount하기 위해 mysql 데몬들 중지 시킨다. 그리고 umount한고 모듈까지 제거하면 끝.
$ cd /home/hychoe/flasim_slb $ ./3_mount $ ./4_remove
주의사항
- volume path가 맞는지 확인하고 마운트된 디렉토리도 확인할것.
- mysql 데몬이 실행이 안되고 죽어버릴경우
- 해당디렉토리의 권한이 mysql 인지 확인
- test와 mysql 디렉토리를 통째로 복사했는지 확인
- mysql 설정파일인 my.cnf 파일의 경로 설정 부분이 맞는지 확인할 것.