sysbench 내 서버의 CPU, RAM, SSD 성능을 알아보자!

안녕하세요. 스타트업하는 개발자 DevKwon 권선우입니다.

간단히 CPU, RAM, HDD(SSD)의 벤치마킹 하는 방법을 알아보겠습니다. 바로 sysbench 명령어를 이용하여 벤치마킹을 해보겠습니다.

SYSBENCH

sysbench 를 이용해보겠습니다.

CPU 벤치 방법

sysbench --test=cpu --cpu-max-prime=20000  --num-threads=2 run   
설치는 centos 는
yum install sysbench
ubuntu는
apt-get install sysbench
간단합니다. 스레드 2개로 벤치마킹한다는 겁니다. 코어가 여러개 있는 서버는 –num-threads 를 CPU 개수만큼(하이퍼스레딩 되면 X2 추가) 해주면 더 정확한 벤치가 이루어 집니다.
싱글스레드 값을 알고싶으시면 –num-threads 를 1로 잡으시면 됩니다.
MAC 또한 가능한데 brew 로 sysbench 를 선택하시고
brew install sysbench
해보시면 벤치마킹 해볼 수 있습니다.
홈브루(brew) 의 사용 방법은
여기를 참조해 주시기 바랍니다.
아래는 mac 에서의 CPU sysbench  명령어입니다.  –max-requests 와 –max-time을 추가한 이유는 brew 로 인스톨한 sysbench 의 버전이 상위 버전이므로(현재 최신 버전 1.0.4) 디폴트 값이 안잡혀서 잡아주었습니다.
sysbench --test=cpu --cpu-max-prime=20000  --num-threads=4 --max-requests=10000 --max-time=100 run

 

sean@localhost:~$ sysbench --test=cpu --cpu-max-prime=20000 --num-threads=2 run
sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 2

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
 total time: 15.3272s
 total number of events: 10000
 total time taken by event execution: 30.6441
 per-request statistics:
 min: 1.40ms
 avg: 3.06ms
 max: 27.11ms
 approx. 95 percentile: 9.13ms

Threads fairness:
 events (avg/stddev): 5000.0000/0.00
 execution time (avg/stddev): 15.3221/0.00

잠시 기다려 보면 아래와 같은 결과 값이 나옵니다. total time 을 보시면 되고 15.32초가 걸렸습니다. 지금 서버는 cpu 2개인 서버인데, 만약 –num-thread 값을 1로 바꾸면 거의 두배인 30.6초 정도 나오게 되겠습니다.

맥북 프로에서는 8.3267s,, 스마일서브 1core (iwinv) 14.3366s,  2core : 7.3577s 정도 나왔습니다. CPU많으면 개수만큼 성능이 좋네요.

이런식으로 벤치 마킹을 하시면 됩니다.

RAM 성능 측정 방법은

sysbench --test=memory run

RAM  성능 측정하는 지표는 역시 실행시간입니다.

제 맥북 프로에서는 49.2817s, 스마일서브(iwinv) 호스팅 계정은 70.5834s, Azure 2Core instance 는 68.1875s 이였습니다.

102400.00 MiB transferred (2077.77 MiB/sec)  와 같이 초당 전송 속도를 보는 것도 측정방법의 한 방법이겠습니다.

이번엔 SSD(HDD포함) 측정을 해보겠습니다.

mkdir test
cd test
sysbench --test=fileio --file-total-size=1G prepare

sysbench --test=fileio --file-total-size=1G --file-test-mode=rndrw --max-time=60 --max-requests=0 run

sysbench --test=fileio --file-total-size=1G cleanup

먼저 test 디렉토리를 만들고, 거기에서 prepare 명령어로 준비 과정을 거칩니다. (벤치마킹 돌릴 파일 생성)

run 명령어로 벤치마킹을 합니다. 이제 잠시 기다리면 결과가 나옵니다. 이번에는 초당 입/출력 대역폭으로 벤치마크 결과를 판단해보겠습니다.

sean@localhost:~/test$ sysbench --test=fileio --file-total-size=1G --file-test-mode=rndrw --max-time=60 --max-requests=0 run
sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Extra file open flags: 0
128 files, 8Mb each
1Gb total file size
Block size 16Kb
Number of random requests for random IO: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Threads started!
Time limit exceeded, exiting...
Done.

Operations performed: 29400 Read, 19600 Write, 62596 Other = 111596 Total
Read 459.38Mb Written 306.25Mb Total transferred 765.62Mb (12.76Mb/sec)
 816.64 Requests/sec executed

Test execution summary:
 total time: 60.0018s
 total number of events: 49000
 total time taken by event execution: 10.0451
 per-request statistics:
 min: 0.00ms
 avg: 0.21ms
 max: 23.24ms
 approx. 95 percentile: 0.73ms

Threads fairness:
 events (avg/stddev): 49000.0000/0.00
 execution time (avg/stddev): 10.0451/0.00

file-total-size는 RAM 용량이상으로 이상으로 넉넉하게 잡아주시면 더 정확한 결과가 나올 수 있습니다. 저는 대략만 알면 되기에 1G 만 테스트 해보았습니다.

마지막으로 cleanup 명령어로 파일을 제거해 주시면 되겠습니다. rmdir test 로 디렉토리도 제거하시고요.

실행결과는 다음과 같습니다.

맥프로 SSD의 성능이 어마어마했는데요.

HDD :     read, MiB/s:                  270.85    written, MiB/s:               180.57  의 결과가 나왔습니다.
애저의 local SSD 결과도 좋았는데요 무려 151.85Mb/sec (입/출력 평균) 의 결과가 나왔습니다. 애저의 managed ssd는  14.609Mb/sec 에 불과하였습니다.
일반 호스팅(통큰아이)의 SSD 는 23Mb/sec 정도 하였습니다. iwinv도 비슷한 수준입니다.
대략적으로 서버의 벤치마킹은 sysbench 이거 하나면 됩니다.
오늘은 여기까지.

 

 

댓글 남기기