서버 성능측정 (벤치마크 방법)

HYEONG HWAN, MUN/ 3월 28, 2016/ 미분류/ 8 comments

https://blog.lael.be/post/4279

다음은 https://blog.lael.be/post/44 에서 각 상품군의 성능 벤치마크시 사용했던 지표입니다.

** 2018/08/06 : Ubuntu 18.04 에서의 명령어를 추가함.

Ubuntu 기준. Windows 는 Novabench(https://novabench.com/) 를 사용하도록 하자.
벤치마크 점수에 너무 신경쓰지 말아야 한다. 점수는 점수일 뿐 당신의 체감 속도가 가장 중요하다.

아래 스크린샷은 라엘이가 개인용도로 사용하고 있는 직접 구축한 클라우드 서버에서 Sysbench 를 실행한 것이다.
가상 서버는 Hyper-V 기반이며, 6코어 5GB RAM, 100GB SSD 사양이다.
# 제 서버를 기준 지표로 설정하지 마시고, https://blog.lael.be/post/44 의 업체를 기준 지표로 삼으세요.
vx1

0. 대조군 설정

당신이 이미 서버를 운영하고 있는 상태에서 이 글을 읽는다고 가정한다.
빠른 서버에 대한 느낌은 직접 사용해야 알 수 있다.
당신의 서버와 비교할 대조군을 설정한다.

VULTR 클라우드서비스 (https://www.vultr.com/)에 가입후 도쿄 또는 싱가포르 지역에 자신의 서버와 동일사양인 서버를 추가해보자.
그 후 아래 명령어로 비교해 보면 된다. 시간단위 과금이니 테스트 후 지우면 된다.

 

클라우드서버 비교 글에서는 [대조군설정]을 위해 모두 [4코어 4GB] 환경에서 [1 thread] 로 테스트 하였습니다.

 

1. 벤치마크 프로그램 설치

apt-get install sysbench

 

2. CPU 테스트

Ubuntu 18.04 또는 그 이후 최신에서는 다음의 명령을 실행하세요.

sysbench cpu --events=10000 --cpu-max-prime=20000 --time=0 run

Ubuntu 16.04 및 그 이전 (old)버전

sysbench --test=cpu --cpu-max-prime=20000 run

j2

total time(time elapsed) 을 계산한 후 100을 곱한다.

22.3451s -> 2234점 (걸린 시간이기 때문에 낮을 수록 좋다.)

 


위의 테스트는 동일한 사양일 때 어느 CPU 가 더 고성능인지 확인하는 방법이고, 아래의 방법은 비교하기 애매한 상황일때 확인하는 방법입니다.

예를 들어) A 업체의 2코어 6GB 서버와, B 업체의 4코어 4GB 서버비교할 때에는 같은 조건이 아니므로 아래의 테스트를 진행하시기 바랍니다.

 

현재 (가상)서버의 CPU 코어수 확인

cat /proc/cpuinfo | grep CPU | wc -l

코어를 다 사용했을 때 속도 확인 (위 명령어에서 출력된 숫자를 threads 에 적어줍니다)

sysbench cpu --events=10000 --cpu-max-prime=20000 --time=0 --threads=6 run

양쪽 서버에서 실행 후 숫자를 비교하시면 됩니다. (숫자가 작을 수록 좋음)

 

3. 메모리 테스트

Read Test
sysbench --test=memory --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=read --time=0 run

j1

2779점

Write Test
sysbench --test=memory --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=write --time=0 run

j3

2312 점

두개의 속도(MB/sec) 를 더한다.

대충 1500 MB/sec ~ 2500 MB/sec 사이로 결과가 나올 것이다. (Read 가 더 크게 나옴)

2779 MB/sec Read + 2312 MB/sec Write = 5091점 (단위 속도이기 때문에 높을 수록 좋다.)

4. 디스크 테스트

테스트 파일 설정 (반드시 램 크기보다 큰 용량으로 설정할 것)

sysbench --test=fileio --file-total-size=8G prepare

64MB 파일 128개가 생길 것이다.

 

Ubuntu 16.04 까지의 명령어

sysbench --test=fileio --file-total-size=8G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run

 

Ubuntu 18.04 부터의 명령어

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

 

300초 동안 매우 많은 랜덤 I/O 를 할 것이다.

j4

단위 속도에 100을 곱하여 점수를 측정한다.

37.885Mb/sec -> 3788점 (단위 속도이기 때문에 높을 수록 좋다.)

테스트가 끝났으면 테스트 파일 지우기

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

아까 생성했던 64MB 파일 128개가 삭제된다.

 


서버의 위치 추정하기.

대형 클라우드의 경우 IP 를 대량으로 할당받아 관리한다. 즉 whois 에서는 미국에 할당된 IP 라고 나오지만, 실제로는 한국이나 일본에 위치한 서버의 IP 일 경우가 있다.

이 경우, 여러 국가 위치에서 직접 접속 속도를 측정하여 위치를 추정해 볼 수 있다.

테스트 포트가 외부에서 접근 가능해야 한다. (방화벽 Public Open)

http://ipconfig.tools/ko/ping 이동.

도메인주소 또는 IP주소, 포트번호 (웹: 80, SSH: 22, FTP:21) 입력 후 PING!

>> 한국에서 접속하는 google 사이트의 서버는 일본에 위치하고 있음을 알 수 있다.

>> 172.217.26.46 아이피를 whois 조회하면 미국아이피 라고 나온다. 하지만 위의 결과와 같이 일본에서 사용중임을 알 수 있다.

 

 

8 Comments

  1. 안녕하세요.

    좋은 글 정말 감사합니다.

    사이트 TTFB가 너무 높아서 서버를 바꿔볼까 생각중입니다

    알려주신 CPU, DISK, RAM 항목 중에서 어느게 제일 중요한지 알수있을까요?

    1. disk 가 ssd(또는 sas) 이냐 아니냐가 중요하죠.

  2. 안녕하세요 초짜 프로그래머입니다
    sysbench로 측정한 결과가 다른 벤치마킹 도구 (ab, jmeter, …)와 많이 차이가 나나요..?그리고 sysbench가 사용하기도 간단해보이는데 이런 다른 툴을 쓰는 이유가 뭔가요?ㅜㅜ 더 다양한 방식의 테스트를 위해서?

    1. 안녕하세요. 사용 용도에 따라 나누어집니다.
      sysbench 는 CPU, 메모리, 디스크 같은 서버의 하드웨어를 테스트하는 툴입니다.
      ab, jmeter 등은 웹사이트의 응답속도, 동시접속자를 테스트하는 툴입니다.

      sysbench 값은 측정 결과가 변하지 않지만, 웹사이트 코드를 개선하면 ab, jmeter 는 더 좋은 값을 보여주게 됩니다.

  3. 킬러호스팅이 8코어 16스레드(물런 공유일테지만..)을 제공해서 벤치를 할려고하는데
    cpu 테스트할때 스레드를 설정하지않고 테스트하시는 이유가 있을까요?
    (스레드 다 사용시 4초.. 스레드 설정하지않고 사용시 32초가 나오네요.)

    1. 안녕하세요!
      CPU 성능은 같은 사양 환경(주로 4코어 4GB)에서 싱글스레드로 확인합니다. (대조군 이라고 합니다.)
      당연히 높은 사양의 서버(16코어 64GB 같은게)일수록 성능이 더 좋겠죠.

  4. Pingback: 서버 성능 및 테스트 | 코인노래방

mongu에 답글 남기기 응답 취소

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*