MySQL/FlaSim을 이용한 TPC-C Benchmark

Retired DISLab
이동: 둘러보기, 찾기

목차

개요

저자: 최화영

  • 왜 FlaSim이 TPC-C 베치마크보다 먼저 설치되어야 하나?
  1. FlaSim 구동 - 볼륨 생성 4
  2. MySQL에 TPC-C 벤치마크 설치 (링크 명시, 파일 저장, 문제점)

FlaSim 설치

1. flasim 다운로드 및 컴파일

flasim을 /home/hychoe/flasim_slb에 다운로드한 후 컴파일한다. 마운트할 볼륨은 /home/hychoe/flasim_slb/vol로 할 예정이다. nfdd.cflasim-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_umount4_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 수행시 옵션
    1. -d : duration of test(in sec)
    2. -w : scale factor(number of warehouses)
    3. -c : number of database connections
    4. -t : terminals per warehouse
    5. -x : database password
    6. -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 파일의 경로 설정 부분이 맞는지 확인할 것.
개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기