SPECweb2009 Tutorial

SPECweb2009는 웹 서버의 성능을 평가하기 위한 벤치마크 중 하나이다. 2016/01/31 지금은 SPEC에서 더이상 사용하지 않는 벤치마크이다(retired). 하지만 여전히 구입 가능하다. 아마 더이상 공식적인 성능 평가 기록을 수집하지 않는다는 의미인 듯 하다. SPECweb2009 user guide가 있지만, 따라하기 쉽지 않았다. SPECweb2009가 오래되어 php 버전이 맞지 않는 문제도 있었고, 벤치마크 바이너리 자체가 오염된 듯 보이기도 했다. ubuntu, apache, php 환경을 기준으로 간단하게 따라할 수 있도록 튜토리얼을 작성해보았다. 이 글의 작성 과정에 김호연씨께서 작성한 매뉴얼을 많이 참고했다. 김호연씨의 매뉴얼을 바탕으로, 필요없는 내용은 삭제하고 개인적으로 어려웠던 부분을 추가해 작성했다. 김호연씨의 매뉴얼이 크게 도움이 되었고, 설명이 충분히 자세하므로 이를 함께 읽는 것을 추천한다. SPECweb2009 user guide김호연씨의 매뉴얼에서 알 수 있는 내용은 여기에 기술하지 않았다.

SPECweb2009에서 평가하고자 하는 것은 웹 서버이며, ASPX, JSP, PHP를 사용하는 서버를 테스팅할 수 있다. SPECweb2009에서는 bank, ecommerce, support 서비스에 대한 워크로드를 제공한다. 각 워크로드는 실제로 서버가 은행을 서비스하는 경우, 상거래를 서비스하는 경우 등을 가정하고 짜여져있다.

apache + php 서버를 예를 들어 설명해보자. apache + php 서버를 테스팅한다고 할 때, bank / ecommerce / support 중에 한 개를 선택해 DOCROOT인 /var/www/html에 해당하는 스크립트와 자료를 넣어준다. 그리고 client를 사용해 접속해 성능을 평가한다.

SPECweb2009에서는 서버 구축을 위한 구성 요소와(Scripts, Wafgen, redistributable_sources, Besim), 클라이언트 구축을 위한 구성 요소(Client, Prime_Client)를 제공한다.
* Scripts: 환경(ASPX, JSP, PHP)에 따른 프로그램 스크립트 포함.
* Wafgen: DOCROOT에 필요한 데이터를 넣어주는 역할을 한다.
* redistributable_sources: 환경 설정에 필요한 기타 라이브러리 포함.
* Besim: backend simulator
* Client: 실제 서버에 접속하는 클라이언트
* Prime Client: Config를 읽어 이에 맞게 Client를 접속하도록 하는 일종의 컨트롤러

1. 웹 서버 설치
apache, php를 설치한다.

#apt-get install -y make gcc g++ apache2 php5 default-jre default-jdk

apache가 에러를 출력하도록 설정한다. display_errors = Off를 On으로 변경한다.

#vim /etc/php5/apache2/php.ini

2. SPECweb2009 설치

#java -jar setup.jar -i console
CHOOSE LOCALE BY NUMBER: <Enter>
DO YOU ACCEPT THE TERMS OF THIS LICENSE AGREEMENT? (Y/N): y
ENTER AN ABSOLUTE PATH, OR PRESS <ENTER> TO ACCEPT THE DEFAULT
      : /home/gumdaeng/web2009-1.20
INSTALL FOLDER IS: /home/gumdaeng/web2009-1.20
   IS THIS CORRECT? (Y/N): y
ENTER THE NUMBER FOR THE INSTALL SET, OR PRESS <ENTER> TO ACCEPT THE DEFAULT
: 5
<Enter>
<Enter>

3. DOCROOT 환경 설정
(1) ./Scripts/ 아래에 있는 것들을 모두 /var/www/html 아래로 복사한다.

#cd ./Scripts/PHP
#cp -r * /var/www/html/

(2) Smarty-2.6.22.tar.gz 설치

#cp ./redistributable_sources/Smarty-2.6.22.tar.gz /var/www/html
#cd /var/www/html
#tar -xzvf Smarty-2.6.22.tar.gz

(3) /var/www/html에 권한 부여

#chmod -R a+rw /var/www/html/*

(4) Wafgen 아래의 스크립트에 DOCROOT 값 추가
(5) Wafgen 사용해 DOCROOT에 데이터 생성
이 단계에서 Wafgen.sh의 JAVA 경로를 바꿔줘야 한다. 이 때 생성할 데이터는 워크로드에 따라 다르다. 사용하려는 워크로드에 맞추어 인자값을 주어야 한다. 테스트 대상 워크로드로 bank를 사용한다면 다음과 같이 생성한다.

#./Wafgen.sh ./unix/bank_image_props.rc
#./Wafgen.sh ./unix/bank_usercheck_props.rc

(6) 생성된 데이터 중, php 버전에 맞지 않는 것은 수정
http://stackoverflow.com/questions/6270004/how-can-i-convert-ereg-expressions-to-preg-in-php

4. Besim 빌드 및 환경 설정
(1) Besim 사용 위한 패키지 설치

#apt-get install libfcgi-dev libapache2-mod-fastcgi

(2) Besim 설치

#mkdir /var/www/fcgi-bin/
#cd ./Besim
#make fcgi TARGET='clean all install' DEST=/var/www/fcgi-bin/

(3) apache 환경 설정
fcgi를 사용하기 위해 /etc/apache2/apache2.conf를 다음과 같이 수정한다.

LoadModule fastcgi_module modules/mod_fastcgi.so
ScriptAlias /fcgi-bin/ "/var/www/fcgi-bin/"
<Directory "/var/www/fcgi-bin/">
    AllowOverride None
    Options +ExecCGI -Includes
    SetHandler fastcgi-script
    Order Deny,Allow
    Allow from all
</Directory>
AddHandler fastcgi-script fcgi

(4) 서비스 재시작 및 작동 확인

#service apache2 restart
#cd bin
#perl test_besim_bank.pl http://143.248.188.100/fcgi-bin/besim_fcgi.fcgi

5. Client 설치
(1) config 파일 복사

#cd Prime_Client
#cp SPECweb_Banking.Unix-PHP.config SPECweb_Banking.config
#cp SPECweb_Ecommerce.Unix-PHP.config SPECweb_Ecommerce.config
#cp SPECweb_Power.Unix-PHP.config SPECweb_Power.config
#cp SPECweb_Support.Unix-PHP.config SPECweb_Support.config
#cp Test.Unix-PHP.config Test.config

(2) Test.config 파일 수정

#diff Test.Unix-PHP.config Test.config
69c69
< BESIM_PORT = "81"
---
> BESIM_PORT = "80"
79c79
< BESIM_INIT_SCRIPT = "/besim/besim_fcgi.fcgi" # FCGI
---
> BESIM_INIT_SCRIPT = "/var/www/fcgi-bin/besim_fcgi.fcgi" # FCGI
83,86c83,86
< SMARTY_DIR = "/www/Smarty-2.6.7/libs/"
< SMARTY_BANK_DIR = "/www/bank/"
< SMARTY_ECOMMERCE_DIR = "/www/ecommerce/"
< SMARTY_SUPPORT_DIR = "/www/support/"
---
> SMARTY_DIR = "/var/www/Smarty-2.6.22/libs/"
> SMARTY_BANK_DIR = "/var/www/html/bank/"
> SMARTY_ECOMMERCE_DIR = "/var/www/html/ecommerce/"
> SMARTY_SUPPORT_DIR = "/var/www/html/support/"
161,187c161,188
< PTD_IP_NAME[0] = "localhost"
< PTD_TYPE[0] = "SUT"
< PTD_IP_PORT[0] = 9191
< PTD_SAMPLE_RATE[0] = 0
< PTD_TIMEOUT[0] = 30
< PTD_VOLT_RANGE[0]=220
< 
< PTD_IP_NAME[1] = "localhost"
< PTD_TYPE[1] = "DISK"
< PTD_IP_PORT[1] = 9192
< PTD_SAMPLE_RATE[1] = 0
< PTD_TIMEOUT[1] = 30
< PTD_VOLT_RANGE[1]=220
< 
< PTD_IP_NAME[2] = "localhost"
< PTD_TYPE[2] = "SUT"
< PTD_IP_PORT[2] = 9193
< PTD_SAMPLE_RATE[2] = 0
< PTD_TIMEOUT[2] = 30
< 
< PTD_IP_NAME[3] = "localhost"
< PTD_TYPE[3] = "DISK"
< PTD_IP_PORT[3] = 9194
< PTD_SAMPLE_RATE[3] = 0
< PTD_TIMEOUT[3] = 30
< 
< PTD_IP_NAME[4] = "EndOfPtdDefinitions"
---
> PTD_IP_NAME[0] = "EndOfPtdDefinitions"

(3) SPECweb_Banking.config 파일 수정

#diff SPECweb_Banking.Unix-PHP.config SPECweb_Banking.config                                                    36c36
< PADDING_DIR = "/www/bank/dynamic_padding/"
---
> PADDING_DIR = "/var/www/html/bank/dynamic_padding/"
160c160
< ITERATIONS = 3
---
> ITERATIONS = 1
182c182
< USE_SSL = 1
---
> USE_SSL = 0

(4) Client, Prime Client 실행 확인

#./Client/start_client.sh
#./Prime_Client/start_prime_client.sh

6. SPECweb2009 실행
(1) web server 재시작

#service apache2 restart

(2) Besim 재시작 (Besim을 다른 머신에 설치한 경우)

#service apache2 restart

(3) client 시작

#./Client/start_client.sh

(4) Prime client 시작

#./Prime_Client/start_prime_client.sh
Advertisements
Posted in 2) Computer Engineering

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 93,200 hits
%d bloggers like this: