콘텐츠로 이동

sysbench - 시스템 & 데이터베이스 벤치마크 치트시트

sysbench - 시스템 & 데이터베이스 벤치마크 치트시트

sysbench는 LuaJIT 기반 스크립팅 가능한 다중 스레드 벤치마크 도구입니다. 데이터베이스 벤치마킹(특히 MySQL 및 PostgreSQL via OLTP 워크로드)으로 가장 유명하지만 CPU, 메모리, 파일 I/O, 스레드, 뮤텍스용 기본 제공 테스트도 제공합니다. 워크로드가 매개변수화되고 스크립팅 가능하므로 용량 계획, 튜닝, 전후 비교를 위한 재현 가능한 숫자를 생성합니다.

설치

플랫폼명령어
Debian/Ubuntusudo apt install sysbench
Fedora/RHELsudo dnf install sysbench
Arch Linuxsudo pacman -S sysbench
macOS (Homebrew)brew install sysbench
소스에서akopytov/sysbench repo에서 빌드
확인sysbench --version

명령 구조

sysbench [testname] [options] {prepare | run | cleanup}
단계목적
prepare테스트에 필요한 데이터/파일 생성
run벤치마크 실행
cleanup테스트 데이터/파일 제거

일반적인 전역 옵션

옵션설명
--threads=N워커 스레드 수
--time=NN 초 동안 실행 (0 = 이벤트 완료까지)
--events=N총 이벤트 상한
--rate=N대상 이벤트/초 (속도 제한)
--report-interval=N매 N 초마다 중간 통계 인쇄
--warmup-time=N측정 전 워밍업
--histogram지연 시간 히스토그램 표시

CPU 벤치마크

# 4 스레드에서 20000까지 소수 확인, 30초 동안
sysbench cpu --cpu-max-prime=20000 --threads=4 --time=30 run
옵션설명
--cpu-max-prime=N소수 계산의 상한 (작업 크기)

주요 메트릭: events per second (높을수록 좋음).

메모리 벤치마크

sysbench memory --memory-block-size=1K --memory-total-size=100G \
  --memory-oper=write --threads=4 run
옵션설명
--memory-block-size각 메모리 작업 크기
--memory-total-size전송할 총 데이터
`—memory-oper=readwrite`
`—memory-access-mode=seqrnd`

주요 메트릭: MiB/sec 전송 속도.

파일 I/O 벤치마크

sysbench fileio --file-total-size=4G prepare
sysbench fileio --file-total-size=4G --file-test-mode=rndrw \
  --time=60 --threads=8 run
sysbench fileio --file-total-size=4G cleanup
옵션설명
--file-total-size테스트 파일의 총 크기
--file-test-modeseqrd, seqwr, rndrd, rndwr, rndrw
--file-block-sizeI/O 블록 크기
--file-fsync-freqfsync 빈도

주요 메트릭: IOPS, throughput (MiB/s), latency.

스레드 & 뮤텍스

sysbench threads --threads=64 --thread-yields=1000 --time=30 run
sysbench mutex --threads=64 --mutex-num=4096 run

데이터베이스 (OLTP) 벤치마크

sysbench는 Lua OLTP 스크립트(oltp_read_write, oltp_read_only, oltp_point_select 등)를 제공합니다.

# MySQL 데이터베이스에 10개 테이블의 1,000,000 행 준비
sysbench oltp_read_write \
  --db-driver=mysql --mysql-host=127.0.0.1 --mysql-user=bench \
  --mysql-password=secret --mysql-db=benchdb \
  --tables=10 --table-size=1000000 prepare

# 16 스레드로 5분간 혼합 읽기/쓰기 테스트 실행
sysbench oltp_read_write \
  --db-driver=mysql --mysql-host=127.0.0.1 --mysql-user=bench \
  --mysql-password=secret --mysql-db=benchdb \
  --tables=10 --table-size=1000000 --threads=16 --time=300 \
  --report-interval=10 run

# 정리
sysbench oltp_read_write --db-driver=mysql --mysql-db=benchdb cleanup
옵션설명
`—db-driver=mysqlpgsql`
--tables / --table-size데이터셋 모양
oltp_read_only / oltp_write_only워크로드 믹스 변형
--db-ps-mode=disableprepared statement 비활성화

주요 메트릭: transactions/sec (TPS), queries/sec (QPS), latency percentiles.

결과 읽기

메트릭의미
events/s작업 처리량
latency (avg/95th)응답 시간; 95백분위수 주시
TPS / QPS데이터베이스 트랜잭션/쿼리 처리량
min/max/avg이벤트별 타이밍 분포

일반적인 워크플로우

# governor 변경 전/후 CPU 비교
sysbench cpu --cpu-max-prime=20000 --threads=$(nproc) --time=30 run

# 새 디스크의 스토리지 건전성 검사
sysbench fileio --file-total-size=8G --file-test-mode=rndrw --time=60 run

# MySQL 튜닝: --threads를 변경하고 TPS/지연시간 확장 관찰

리소스