'분류 전체보기'에 해당되는 글 22건
-
v_1.01_SPECweb2005 Install & Configure Guide in Linux(fedora 13) 80
2011.06.24
-
SPECweb2005 Install & Configure Guide in Linux(fedora 13) 1
2011.03.03
-
SPECweb2005 설치과정 1
2011.01.26
-
SPECweb2005 - 웹 환경 벤치마킹 툴
2011.01.26
-
Chapter 15. 부트로더 개발
2011.01.07
-
11장 소프트웨어 개발툴의 이해와 활용 -김동준- 1
2011.01.06
-
2장 : 커널 내부 탐험 - 김석구 1
2011.01.05
-
3장 커널 기능 -강남용- 1
2011.01.05
-
HPM 100-A(전력측정기)에서 시리얼 통신으로 데이타 값 받아오기. 1
2011.01.04
-
IPVS Configuration : DR (Direct Routing)
2010.12.29
v_1.01_SPECweb2005 Install & Configure Guide in Linux(fedora 13)
2011. 6. 24. 12:06
Version # |
작성일 |
작성자 |
|
설명 |
1.00 |
2011.3.3 |
김호연 |
hykim@q.ssu.ac.kr |
첫 버전 작성함 |
1.01 |
2011.6.24 |
김호연 |
hykim@q.ssu.ac.kr |
‘발생할 수 있는 오류‘ 내용 추가 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'SPECweb2005' 카테고리의 다른 글
SPECweb2005 Install & Configure Guide in Linux(fedora 13) (1) | 2011.03.03 |
---|---|
SPECweb2005 설치과정 (1) | 2011.01.26 |
SPECweb2005 - 웹 환경 벤치마킹 툴 (0) | 2011.01.26 |
SPECweb2005 Install & Configure Guide in Linux(fedora 13)
2011. 3. 3. 23:04첨부 : 1) 원본문서(hwp,pdf)
2) Besim httpd 환경설정 파일(httpd.conf_Besim)
SPECweb2005 Install & Configure Guide in Linux(fedora 13)
Version # |
작성일 |
작성자 |
|
설명 |
1.00 |
2011.3.3 |
김호연 |
hykim@q.ssu.ac.kr |
첫 버전 작성함 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
※ 본 문서는 SPECweb2005를 설치하고 구동하는 과정을 설명합니다.
※ 본 문서의 목적은, 어떠한 시행착오 없이 SPECweb2005을 보다 쉽게 사용할 수 있도록 함에 있습니다.
※ 본 문서는 SPECweb2005에서 제공하는 매뉴얼을 기반으로 작성되었습니다.(SPECweb2005\docs\index.html)
※ 본 문서의 내용은 추가/삭제/수정이 가능하며, 수정본을 http://nclab.tistory.com/의 ‘SPECweb2005’ 코너에 올려 주시거나, 상단의 제작자에게 메일을 주시기 바랍니다.
▣ 알아둘 내용
▷ 본 문서의 내용은 기본적인 Linux관련 지식이 있다는 가정아래 진행.
▷ 문서에서 사용된 기호의 의미
☞ : 실제적으로 command가 입력되는 부분.
√ : 설명 및 할당 값
<디렉토리> ] # : command를 입력하는 디렉토리. ‘…] #’ 의 경우, 어디서든 상관없음을 의미.
Apache : Linux fedora에서 'httpd'라는 이름으로 기본 제공됨. 즉, Apache=httpd.
▣ SPECweb2005 설치
▷Web Server, Besim, Client 공통 요구사항
> java : Web server, Besim, client에 각각 설치.
☞ …] # yum groupinstall java
▷console을 통해 설치 진행
> java -jar setup.jar -i console
√ 설치에 어려움은 없을 것이라 판단됨. 안내를 따라 설치할 것.
√ 이후의 내용은 default값을 기준으로 함.
⓵ Web Server
▷요구사항
> Apache(httpd) : 이 문서에서는, Apache를 이용한 php 사용.
> Version Check : PHP 4.3.n 이상의 버전이 필요함.
√ 다음명령어를 통해 설치 혹은 update
☞ …] # yum install php
1) ⓵에서 webserver를 설치 : '/web2005-1.20/' 디렉토리에 설치됨
2) Script를 Apache(httpd)의 'DocumentRoot' 디렉토리로 복사
☞ …] # cp /web2005-1.20/Scripts/php/* /var/www/html/
※ DocumentRoot : httpd의 환경설정 파일인 “/etc/httpd/conf/httpd.conf” 파일내의 변수.
Default 값 = “/var/www/html/”
3) ‘DocumentRoot’ 디렉토리에서, 권한 부여
☞ …/html]# chmod -R a+rw bank/ ecommerce/ support/ Smarty-2.6.7/
4) Wafgen
4-1) Wafgen README를 정독한다.
4-2) '/web2005-1.20/wafgen/unix/'에 해당하는 파일들을 수정
√ 'SIMULTANEOUS_SESSIONS' 과 'DOCROOT' 값을 반드시 넣어 주어야 함.
√ SIMULTANEOUS_SESSIONS : 동작시킬 Thread의 최대 개수 할당
※ *_image_*.rc 의 경우, SIMULTANEOUS_SESSIONS가 Section B 아래 존재하므로 변경하지 말 것.
√ DOCROOT : '2)'의 'DocumentRoot' 값 할당
4-3) '/web2005-1.20/wafgen/‘에서 wafgen 실행 : workload 설치
☞ …/wafgen] # java -Xms384m -Xmx384m -jar wafgen.jar <workload>.rc
4-4) ‘<DOCROOT>/<workload>/‘에 dynamic_padding 과 images 디렉토리 생성 확인
5) Web server 동작 test
5-1) Apache(httpd) 재시작
☞ …] # service httpd restart
5-2) 브라우저를 통하여, login.php 접속
: URL = http://<Web server IP address>/bank/login.php
5-3) id=1, password=1 입력하여, login
5-4) 각각의 page를 열어, 제대로 열리는가를 확인, error없이 열린다면 정상동작
⓶ Besim
▷요구사항
> ⓵의 Web Server와 동일
1) 1.에서 Besime(backend simulator??) 설치 : '/web2005-1.20/' 디렉토리에 설치됨.
2) '/web2005-1.20/Besim/Make_Readme' 정독!
√ 우리는 fcgi와 PHP를 사용할 것임
3) fcgi 설치
3-1) '/web2005-1.20/Besim/fcgi-2.4.0/README' 정독
3-2) fcgi 설치 : '/web2005-1.20/Besim/fcgi-2.4.0/'에서 아래 command 입력
☞ …/fcgi] # ./configure
☞ …/fcgi] # ./make
☞ …/fcgi] # ./make install
※ EOR error 발생시 : ‘…/fcgi-2.4.0/libfcgi/fcgio.cpp‘ 에 '#include <stdio.h>' line 추가
4) Besim compile
4-1) '/web2005-1.20/Besim/‘에 Make_Readme 정독
4-2) 'besim_fcgi.fcgi'를 설치하기 위한 디렉토리 생성
☞ …/Besim] # mkdir /var/www/fcgi-bin/
4-3) Besim compile
☞ …/Besim] # make fcgi TARGET='clean all install' DEST=/var/www/fcgi-bin/
4-4) '/var/www/fcgi-bin/‘에 ’Besim_fcgi.fcgi‘ 파일 생성 확인
5) mod_fastcgi.so 설치
5-1) httpd-devel 설치
☞ …] # yum install httpd-devel
5-2) mod_fastcgi 다운로드 및 설치 ( http://fastcgi.com/dist/ )
☞ …/mod_fastcgi] # cp Makefile.AP2 Makefile
☞ …/mod_fastcgi] # make top_dir=/usr/lib/httpd install
√ “/usr/lib/httpd/modules/” 에 “mod_fastcgi.so“ 생성 확인
5-3) FastCGI에서 Unix socket 파일들을 저장하기 위한 디렉토리 생성 및 권한 설정
☞ …] # mkdir -p /etc/httpd/fastcgi
☞ …] # chmod 777 /etc/httpd/fastcgi
6) httpd 환경 설정
6-1) '/etc/httpd/conf/httpd.conf' 파일 수정
1> 아래 Line을 "Dynamic Shared Object(DSO) Support" section에 추가
: LoadModule fastcgi_module modules/mod_fastcgi.so
2> 아래 Line들을 “ScriptAlias /cgi-bin/" Line 바로 뒤에 추가
: ScriptAlias /fcgi-bin/ "/var/www/fcgi-bin/"
: FastCgiIpcDir /etc/httpd/fastcgi
3> 아래 Line들을 “<Directory "var/www/cgi-bin” ‘section’ 뒤에 추가
: <Directory "/var/www/fcgi-bin">
: AllowOverride None
: Options +ExecCGI -Includes
: SetHandler fastcgi-script
: Order allow, deny
: Allow from all
: </Directory>
: Addhandler fastcgi-script fcgi
4> DocumentRoot의 값을 아래와 같이 변경
: DocumentRoot "/"
5> 주석부분 “# This should be changed to whatever you set DocumentRoot to."아래의
값을 아래 Line과 같이 수정수정
: <Directory "/">
7) Besim 동작 test
7-1-1) apache(httpd) restart
☞ …] # service httpd restart
7-1-2) '/web2005-1.20/Besim/'에서, 'test_besim_bank.pl' 실행. 아래 command 입력.
☞ …/Besim] # perl test_besim_bank.pl http://<BesimIPaddress>:81/fcgi-bin/besim_fcgi.fcgi/
7-2) 브라우저를 통하여, ‘http://<BesimIPaddress>:81/fcgi-bin/besim_fcgi.fcgi/’ 접속
√ 아래와 같은 page 출력 확인
※ 에러가 발생한다면, 아래의 명령어로, message를 추적하여 수정할 것. Besim의 경우, httpd의
error message를 통해서, 쉽게 문제점 추적이 가능함
☞ …] # tail -f /etc/httpd/logs/access_log
☞ …] # tail -f /etc/httpd/logs/error_log
※ Besim의 httpd 환경설정 파일을 http://nclab.tistory.com/ 에서 다운로드 받을 수 있음
⓷ Client 설치
1) 1.에서 Client 및 Prime Client를 설치: '/web2005-1.20/' 디렉토리에 설치됨
2) '/web2005-1.20/Harness/'에 있는 base 환경설정 파일들을 아래 command로 복사하여, 사용
√ 각 환경파일들을 이용하여, SPECweb이 구동됨.
☞ …/Harness] # cp SPECweb_Banking.Unix-PHP.config SPECweb_Banking.config
☞ …/Harness] # cp SPECweb_Ecommerce.Unix-PHP.config SPECweb_Ecommerce.config
☞ …/Harness] # cp SPECweb_Support.Unix-PHP.config SPECweb_Support.config
☞ …/Harness] # cp Test.Unix-PHP.config Test.config
3) 위 복사한 파일들을 이용하여, SPECweb 옵션을 변경할 수 있음.
4) Test.config 필수 설정
√ CLIENTS = <client IP address>
√ SIMULTANEOUS_SESSIONS = <원하는 값>
※ &를 이용하여, 원하는 workload양과 순서 조절 가능.
예> 100&500&200 : 100, 500, 200의 순서로, Runtime동안 workload 할당
※ <최소>-최대>x<step level>을 이용하여, 원하는 Step level단위로 workload 조절가능
예> 100-200x50 : 100, 150, 200 의 순서로, Runtime동안 workload 할당
√ TEST_TYPE=SPECweb_<원하는 workload<
: 이후의 내용은 Banking을 기준으로 함 -> SPECweb_Banking
√ WEB_SERVER = <web server IP address>
√ BESIM_SERVER = < Besim IP address>
√ BESIM_PORT = 81
√ BESIM_INIT_SCRIPT = "/var/www/fcgi-bin/besim_fcgi.fcgi" # FCGI
√ SMARTY_DIR = "/var/www/html/Smarty-2.6.7/libs/"
√ SMARTY_BANK_DIR = "/var/www/html/bank/"
√ SMARTY_ECOMMERCE_DIR = "/var/www/html/ecommerce/"
√ SMARTY_SUPPORT_DIR = "/var/www/html/support/"
5) SPECweb_Bankig.config 필수 설정
√ IMG_PATH = "/bank/images"
√ DYN_SCRIPT_PATH = "/bank/"
√ PADDING_DIR = "/var/www/html/bank/dynamic_padding/"
√ CHECK_IMAGE_DIR = "/var/www/html/bank/images/"
6) Client 동작 test
√ Ping을 이용하여, Server, Besim과의 network 연결상태 확인
7) Client 및 Prime client 동작 명령 ( terminal 2개 필요)
7-1) client
☞ …/Harness] # java -jar specwebclient.jar
7-2) Prime client
☞ …/Harness] # java -jar specweb.jar
※ 에러가 발생한다면, ‘Test.config’ 파일내의 ‘DEBUG_LEVEL’에 10을 할당한다. 그 후, Client 와 Prime client를 다시 실행시키면, 상세한 실행과정이 출력된다. 이 과정의 message를 통하
여 에러의 원인을 비교적 쉽게 알아낼 수 있다.
▣ SPECweb2005 구동
▷ 구동 절차
1) Web server에서, Apache(httpd) 시작
☞ …] # service httpd start
2) Besim에서, Apahce(httpd) 시작
☞ …] # service httpd start
3) Client에서, Client 실행
☞ …/Harness] # java -jar specwebclient.jar
4) Client에서, Prime client 실행
☞ …/Harness] # java -jar specweb.jar
▷ Tip
1) Test.config 주요변수 설명
√ SIMULTANEOUS_SESSIONS : 동작시킬 thread 수, 높을수록 더 많은 부하 발생
√ TEST_TYPE=SPECweb_Banking : 'SPECweb_Banking.config'파일을 이용하여, Simulate
√ THREAD_RAMPUP_SECONDS : SPECweb2005는 SIMULTANEOUS_SESSIONS값까지 thread수를
끌어 올린 후, Simulation을 시작한다. 이 값은 thread를 끌어올리는데 걸리는 시간이다. 이 값이
클수록 서서히 thread를 증가시켜 최대값에 이르고, 작을수록 짧은 급격히 thread를 증가시켜 최대
값에 이른다.
√ THREAD_RAMPDOWN_SECONDS : TREAD_RAMPUP_SECONDS와 반대되는 값이다.
√ DEBUG_LEVEL : Prim client 실행시, 출력되는 정보의 세부정도를 결정하는 변수. 클수록 더 상세함.
√ RUN_SECONDS : 실제 Simulation 실행 시간. 초 단위.
√ ITERATIONS : Simulation의 반복 수.
2) SPECweb_Banking.config 주요변수 설명
√ THINK_TIME : request를 요청하는 interval.
√ USE_SSL : SSL을 사용 여부 결정. SPECweb에서 제공하는 문서(SPECweb2005_Design.html) 참조.
▣ 발생할 수 있는 오류
1) incorrec id password page 출력
원인 : Besim이 정상적으로 설치 되지 않았을 경우, 이러한 현상 발생.
해결책 : 위의 Besim 설치부분을 참고하여, Besim 재설치
2) ‘too many open files’ message 출력
원인 : 제한된 file수로 인해 발생
해결책 : ulimit를 이용하여 제한 변경.
☞ …] # ulimit -a >> 정보 출력
☞ …] # ulimit -s [값] >> stack size 변경
항상 적용되기 위해서, 사용된 명령어를 쉘 스크립트에 추가, “/root/.bashrc”
3) 'Exceeded allowed max thinktime …' message 출력
원인 : workload의 양이 server가 감당할 수 없을 정도로 많을 경우, 발생.
해결책 : Test.config에서, SIMULTANEOUS_SESSIONS값을 줄이거나,
SPECweb_Banking.config에서, THINK_TIME값을 늘려준다.
'SPECweb2005' 카테고리의 다른 글
v_1.01_SPECweb2005 Install & Configure Guide in Linux(fedora 13) (80) | 2011.06.24 |
---|---|
SPECweb2005 설치과정 (1) | 2011.01.26 |
SPECweb2005 - 웹 환경 벤치마킹 툴 (0) | 2011.01.26 |
SPECweb2005 설치과정
2011. 1. 26. 12:111. 테스트 환경 구축
1-1. BeSim Web Server 환경 구축
(1) 구성
linux |
종류, 버전은 상관없음. (fedora 14) |
설치> |
생략. |
java sdk |
버전 상관없음. (java-1.6.0_20) |
설치> |
root@BeSim$ yum install *java* |
web server |
종류, 버전 상관없음. (fedora 기본 웹서버 : apache 2.2) |
설치> |
기본적으로 설치되어 있음. (/etc/httpd/, /usr/lib/httpd/) |
mod_fastcgi.so |
Fedora에선 제공하지 않음. 소스를 받아 설치. (mod_fastcgi-2.4.6) |
설치> |
밑에서 설명. (4-2) mod_fastcgi.so 설치) |
(2) SPECweb2005 소프트웨어 설치.
root@BeSim$ java -jar setup.jar -i console
선택 : 전체 설치 또는 BeSim 설치
(3) BeSim Web Server의 Port 번호를 바꿈.
root@BeSim$ vi /etc/httpd/conf/httpd.conf
Listen 80 -> Listen 81
(4) BeSim Web Server 구동을 위한 FastCGI 설치.
(4-1) fastCGI Compiling
root@BeSim$ cd /web2005-1.20/Besim/fcgi-2.4.0
root@BeSim$ ./configure --libdir=/lib
->configure 과정에서 상당한 에러가 나옴. 해결이 안 되는 것들은 무시.
root@BeSim$ make
-> make 과정에서 fcgio.cpp에서 에러가 나옴.
root@BeSim$ vi /web2005-1.20/Besim/fcgi-2.4.0/libfcgi/fcgio.cpp
-> #include <cstdio> 추가.
root@BeSim$ make install
root@BeSim$ mkdir /var/www/fcgi-bin
root@BeSim$ cd /web2005-1.20/Besim
root@BeSim$ make fcgi TARGET='clean all install' DEST=/var/www/fcgi-bin/
(4-2) mod_fastcgi.so 설치
root@BeSim$ yum install httpd-devel
다음 사이트에서 (http://www.fastcgi.com/dist/) 소스를 다운로드 받아 압축을 풀고, 압축을 푼 디렉토리에서 다음 명령어를 입력.
root@BeSim$ apxs -n mod_fastcgi -i -a -c mod_fastcgi.c fcgi_buf.c fcgi_config.c fcgi_pm.c fcgi_protocol.c fcgi_util.c
root@BeSim$ ls -l /usr/lib/httpd/mod_fastcgi.so
-> /usr/lib/httpd/modules/ 디렉토리에 mod_fastcgi.so가 있는지 확인.
root@BeSim$ mkdir -p /etc/httpd/fastcgi
root@BeSim$ chmod 777 /etc/httpd/fastcgi
(4-3) httpd.conf 파일 수정
root@BeSim$ vi /etc/httpd/conf/httpd.conf
1)
Dynamic Shared Object Support -> LoadModule fastcgi_module modules/mod_fastcgi.so 추가.
2)
ScriptAlias /cgi-bin/ -> ScriptAlias /fcgi-bin/ "/var/www/fcgi-bin/"
FastCgiIpcDir /etc/httpd/fastcgi
3)
<Directory "<CGIDIR>/fcgi-bin">
AllowOverride None
Options +ExecCGI -Includes
SetHandler fastcgi-script
Order allow,deny
Allow from all
</Directory>
4)
AddHandler fastcgi-script fcgi
1-2. Web Server 환경 구축
(1) 구성
linux |
종류, 버전은 상관없음. (fedora 13) |
설치> |
생략. |
java sdk |
버전 상관없음. (java-1.6.0_20) |
설치> |
root@Web$ yum install *java* |
web server |
종류, 버전 상관없음. (fedora 기본 웹서버 : apache 2.2) |
설치> |
기본적으로 설치되어 있음. (/etc/httpd/, /usr/lib/httpd/) |
PHP |
버전 상관없음. |
설치> |
root@Web$ yum install *php* |
mod_ssl |
버전 상관없음. |
설치> |
root@Web$ yum install *ssl* |
(2) SPECweb2005 소프트웨어 설치.
root@Web$ java -jar setup.jar -i console
선택 : Web Server 설치
(3) 스크립트 콘텐츠 복사.
root@Web$ cp -ar /SPECweb2005/scripts/php/* /var/www/
-> bank, ecommerce, support, Smarty-2.6.7 디렉토리
root@Web$ chmod 777 /bank /ecommerce /support /Smarty-2.6.7
-> 디렉토리 퍼미션 설정
root@Web$ chown -R nobody.nobody /bank /ecommerce /support /Smarty-2.6.7
-> 디렉토리 권한 변경 (root->nobody)
(4) php.ini 파일 수정.
root@Web$ vi /etc/config
1)
display_errors=On
2)
display_setup_errors=On
3)
error_reporting=E_ALL
(5) Wafgen 설정.
root@Web$ vi /web2005-1.20/wafgen/unix/<script_name>.rc
->각 스크립트의 .rc파일에서 수정. (script_name=bank, ecommerce, support)
1)
SIMULTANEOUS_SESSIONS=1 -> 숫자 조정. (1=10MB)
2)
DOCROOT=/var/www
root@Web$ cd /web2005-1.20/wafgen
root@Web$ ./Wafgen unix/<script_name>.rc
-> 수정된 각 스크립트 .rc를 적용.
(6) httpd.conf 파일 수정
root@Web$ vi /etc/httpd/conf/httpd.conf
DocumentRoot=/var/www
1-3. 클라이언트 환경 구축
(1) Windows에서 설치
(1-1) JVM 설치
(1-2) SPECweb2005 소프트웨어 설치.
root@client$ java -jar setup.jar -i console
선택 : client/prime client 설치.
(2) Linux에서 설치
(2-1) Java sdk 설치
root@client$ yum install *java*
(2-2) SPECweb2005 소프트웨어 설치.
root@client$ java -jar setup.jar -i console
선택 : client/prime client 설치.
(3) .config 파일 수정
root@client$ cd /web2005-1.20/Harness/
-> Client 디렉토리로 이동
root@client$ cp SPECweb_<script_name>.Unix-PHP.config SPECweb_<script_name>.config
-> 각 스크립트 설정파일을 다른 이름으로 저장.
root@client$ vi SPECweb_<script_name>.config
-> 다른 이름으로 저장된 각 스크립트 설정파일의 내용 수정.
PADDING_DIR = "/var/www/<script_name>/dynamic_padding/"
root@client$ cp Test.Unix-PHP.config Test.config
-> Test 설정파일을 다른 이름으로 저장.
root@client$ vi Test.config
-> 다른 이름으로 저장된 Test 설정파일의 내용 수정.
1)
WEB_SERVER = Web Server의 IP 주소
2)
BESIM_SEVER = BeSim Web Server의 IP 주소
3)
BESIM_INIT_SCRIPT = "/var/www/fcgi-bin/besim_fcgi.fcgi"
4)
SMARTY_DIR = "/var/www/Smarty-2.6.7/libs/"
SMARTY_BANK_DIR = "/var/www/bank/"
SMARTY_ECOMMERCE_DIR = "/var/www/ecommerce/"
SMARTY_SUPPORT_DIR = "/var/www/support/"
2. 실행
2-1. BeSim Web Server 실행
root@BeSim$ /etc/init.d/iptables stop
-> 방화벽 해제.
root@BeSim$ /etc/init.d/httpd start
-> 웹 서버 실행.
2-2. Web Server 실행
root@Web$ /etc/init.d/iptables stop
-> 방화벽 해제.
root@Web$ /etc/init.d/httpd start
-> 웹 서버 실행.
2-3. Client 실행
root@client$ /etc/init.d/iptables stop
-> 방화벽 해제.
root@Client$ java -jar SPECwebclient.jar
2-4. Prime Client 실행
root@prime$ /etc/init.d/iptables stop
-> 방화벽 해제.
root@Prime$ java -jar SPECweb.jar
'SPECweb2005' 카테고리의 다른 글
v_1.01_SPECweb2005 Install & Configure Guide in Linux(fedora 13) (80) | 2011.06.24 |
---|---|
SPECweb2005 Install & Configure Guide in Linux(fedora 13) (1) | 2011.03.03 |
SPECweb2005 - 웹 환경 벤치마킹 툴 (0) | 2011.01.26 |
SPECweb2005 - 웹 환경 벤치마킹 툴
2011. 1. 26. 11:141. 목적
기존의 부하분산 알고리즘은 Apache bench를 이용했었지만, Apache bench는 패턴이 일정하기 때문에 실제 web의 상태와 많은 차이가 있다. 그래서 실제 web과 동일한 환경을 구축하기 위해 SPECWeb이라는 벤치마킹 툴을 이용한다. SPECWeb의 본래 기능은 말 그대로 web server의 벤치마킹을 목적으로 한다. 즉, web server의 성능을 평가하는 도구인 셈이다. 하지만 우리는 이 벤치마킹 툴을 통해 실제 web 환경을 구현, 또는 구축을 하려고 한다. 그리고 개발하려는 에너지 기반 부하분산 알고리즘의 성능을 기존의 부하 분산 알고리즘의 성능과 비교하여 더 좋은 알고리즘을 개발하는데 목적이 있다.
2. SPECweb2005
SPECweb의 버전 중 2005버전을 사용한다. 이는 실제 환경과 같은 환경을 구현하기 위해 작업 부하 환경을 3가지(banking, ecommerce, support)로 디자인 되었다. 각 환경은 웹 서버의 설정에 따라 다양한 환경을 갖출 수 있다.
3. SPECweb2005의 구성
SPECweb2005는 클라이언트, Prime client, 웹 서버, BeSim 으로 구성된다.
각 구성요소의 간략한 설명은 다음과 같다.
Client |
서버에 HTTP 요청을 보내고 서버에서 HTTP 응답을 받은 응용 프로그램이 실행된다. |
Prime Client |
다른 클라이언트들을 초기화하고 행동을 통제하며, 웹 서버 및 BeSim에 대하여 초기화 루틴을 가동시키고, 벤치마크 시험의 결과를 모아 저장하는 역할을 한다. |
Web Server |
하드웨어와 클라이언트가 요청한 요구를 클라이언트들로부터 정보를 수집하는 것이다. |
BeSim (Back-end Simulator) |
웹 서버가 HTTP 응답을 완료하기 위해 필요로 하는 특정의 정보를 회수하기 위해 통신을 해야 하는 back-end 과정에 필요한 적용 서버를 에뮬레이트 하는데 필요하다. 즉, Besim 타입의 웹 서버와 back-end 과정에 필요한 서버 사이의 통신을 에뮬레이트 하기 위해 존재한다. |
SPECweb 웹 사이트 주소
http://www.spec.org/
'SPECweb2005' 카테고리의 다른 글
v_1.01_SPECweb2005 Install & Configure Guide in Linux(fedora 13) (80) | 2011.06.24 |
---|---|
SPECweb2005 Install & Configure Guide in Linux(fedora 13) (1) | 2011.03.03 |
SPECweb2005 설치과정 (1) | 2011.01.26 |
Chapter 15. 부트로더 개발
2011. 1. 7. 10:36교재: ARM으로배우는 임베디드 시스템
목차
요약
부트로더인 U-Boot의 기능 및 특징을 살펴보고,
Porting 과정을 전체적으로 살펴 본다.
'BooK > ARM으로 배우는 임베디드 시스템' 카테고리의 다른 글
11장 소프트웨어 개발툴의 이해와 활용 -김동준- (1) | 2011.01.06 |
---|
11장 소프트웨어 개발툴의 이해와 활용 -김동준-
2011. 1. 6. 22:38ARM 컴파일러의 레지스터 사용
오브젝트 파일의 자료 구조
링커와 로케이터
메모리 제어기와 물리 주소 할당
소프트웨어 동작을 위한 메모리 구조
'BooK > ARM으로 배우는 임베디드 시스템' 카테고리의 다른 글
Chapter 15. 부트로더 개발 (0) | 2011.01.07 |
---|
2장 : 커널 내부 탐험 - 김석구
2011. 1. 5. 13:12'BooK > 코드로 읽는 디바이스 드라이버' 카테고리의 다른 글
3장 커널 기능 -강남용- (1) | 2011.01.05 |
---|
3장 커널 기능 -강남용-
2011. 1. 5. 13:01'BooK > 코드로 읽는 디바이스 드라이버' 카테고리의 다른 글
2장 : 커널 내부 탐험 - 김석구 (1) | 2011.01.05 |
---|
HPM 100-A(전력측정기)에서 시리얼 통신으로 데이타 값 받아오기.
2011. 1. 4. 23:09Download: com.c // <------- 원본 소스 Building: cc -o com com.c Usage : ./com /dev/device [speed] // <-------- 사용방법 Example : ./com /dev/ttyS0 [115200] //<-------- 예를들어서 이렇게( HPM-100A 경우 .com /dev/ttyUSB0 [9600] Keys : Ctrl-A - exit, Ctrl-X - display control lines status Darcs : darcs get http://tinyserial.sf.net/ Scr.shot: screenshot.png (8862 bytes)
형광펜 부분이 추가해준 소스 입니다.
추가해준 내용은 TIME 정보를 추가해주었습니다.
S // start
22003Vo //전압
10003Am //전류
22002Wa //와트
10001Pf //역률
60001Hz //주파수
E // end
[2010-01-01 01:01:01] //시간
실제 실행 결과
S: 21693Vo: 42412Am: 46461Wa: 21Wh: 5051Pf: 59981Hz: 01Kg: 01Eu E[2011-01-05 07:57:32]
S: 21693Vo: 42422Am: 46481Wa: 31Wh: 5051Pf: 59981Hz: 01Kg: 01Eu E[2011-01-05 07:57:33]
S: 21693Vo: 42422Am: 46481Wa: 31Wh: 5051Pf: 59971Hz: 01Kg: 01Eu E[2011-01-05 07:57:33]
S: 21693Vo: 42432Am: 46461Wa: 41Wh: 5041Pf: 59971Hz: 01Kg: 01Eu E[2011-01-05 07:57:34]
추가한 소스 분석(형광펜 부분)
#include <time.h> // 시간 함수를 사용하기 위한 header 파일
struct tm *time_struct;/*struct tm // time.h에 정의되어있는 tm 구조체 내부134 {135 int tm_sec; /* Seconds. [0-60] (1 leap second) */136 int tm_min; /* Minutes. [0-59] */137 int tm_hour; /* Hours. [0-23] */138 int tm_mday; /* Day. [1-31] */139 int tm_mon; /* Month. [0-11] */140 int tm_year; /* Year - 1900. */ // 1990년 이후 경과 년수를 의미한다,141 int tm_wday; /* Day of week. [0-6] */ // 0은 일요일 ~ 6은 토요일을 의미142 int tm_yday; /* Days in year.[0-365] */143 int tm_isdst; /* DST. [-1/0/1]*/144145 #ifdef __USE_BSD146 long int tm_gmtoff; /* Seconds east of UTC. */147 __const char *tm_zone; /* Timezone abbreviation. */148 #else149 long int __tm_gmtoff; /* Seconds east of UTC. */150 __const char *__tm_zone; /* Timezone abbreviation. */151 #endif152 };*/time_t local; // time_t 시분초일월을 모두 숫자로 압축한 시간 전용 자료형이다.
(void)time(&local); //1970년 1월 1일 0시 후 경과된 초를 조사합니다.time_struct=localtime(&local); // time_t 형의 값을 tm 구조체형태로 변환 시켜준다.FILE *fp;fp =fopen("watt.txt", "a+"); //파일을 열되 마지막 위치한 부분부터 추가if(c == '\r'){ //엔터의 아스키 코드값이 '\r'이 들어오면 실행하라는 의미
//현재 시간을 연산해서 보여준다.fprintf(fp, "[%02d-%02d-%02d %02d:%02d:%02d] ",time_struct->tm_year+1900,time_struct->tm_mon+1, time_struct->tm_mday, time_struct->tm_hour, time_struct->tm_min, time_struct->tm_sec);}
else{
fprintf(fp, "%c", c); //시리얼 통신으로 들어오는 문자를 파일에 저장해준다.
}
fclose(fp);
'LVS' 카테고리의 다른 글
IPVS Configuration : DR (Direct Routing) (0) | 2010.12.29 |
---|---|
LVS 구축에 관한 이론 (NAT 부터 WLC 까지) (2) | 2010.12.23 |
RR 알고리즘 개선 -> N번째 N번 부하 분산 (0) | 2010.12.20 |
커널 소켓 프로그래밍 (0) | 2010.11.20 |
모듈 프로그래밍 (1) | 2010.11.10 |
IPVS Configuration : DR (Direct Routing)
2010. 12. 29. 17:471. LVS 설정
1.1. VIP 및 DIP 설정
LVS에서는 크게 DIP (Director IP)와 VIP (Virtual IP)를 설정해야 한다. 여기에서 DIP는 LVS가 고유하게 가질 IP 주소로서, NIC의 기본 IP 주소가 된다. 반면 VIP는 외부 Clients에게 서비스를 제공하기 위해 사용될 인터페이스 IP 주소 (즉, 외부 Clients가 접속할 IP 주소)로서, Aliasing을 통해 설정할 수 있으며, 부하를 상호 분산할 Real Server도 이 VIP를 반드시 가져야 한다.
따라서, 우선 VIP가 123.234.1.101 이고, DIP가 123.234.1.102 이라고 가정할 때,
># ifconfig eth0 123.234.1.102 netmask 255.255.255.0 up
># ifconfig eth0:1 123.234.1.101 netmask 255.255.255.0 up
위와 같이, ifconfig 명령을 이용하여 VIP와 DIP를 각각 설정한 다음, ifconfig로 설정사항을 확인한다. 단, 이미 eth0에 DIP가 설정되어 있는 경우가 대부분이므로, 이 단계에서는 VIP 만을 설정해도 된다.
1.2. Packet Forwarding 활성화
Dispatcher는 Client로부터 전송된 요청 메시지를 Real Server로 전달해야 하므로, 반드시 Packet Forwarding 기능이 활성화되어 있어야 한다. 이는 proc의 ip_forward의 값을 1로 설정함으로써 가능하다.
># echo 1 >/proc/sys/net/ipv4/ip_forward
1.3. Virtual Service 등록 (IPVSADM 설정)
># ipvsadm -A -t 123.234.1.101:80 -s rr
2. Real Server 설정
2.1. ARP Problem 해결 : ARP Hidden
패킷 전달 방식에 있어 NAT를 제외한 TUN 및 DR 방식은 모두 ARP Flux Problem을 해결해야 한다. 기본적으로 Dispatcher Node와 Real Server 모두 VIP를 갖고 있기 때문에, 클라이언트가 VIP의 MAC 주소를 묻는 ARP Request를 전송했을 때 Dispatcher와 Real Server 모두 이에 응답하게 되면 클라이언트는 이들 중 특정 서버의 MAC 주소를 해당 VIP에 해당하는 MAC 주소로 기억(ARP Caching)하고는 이 서버에게만 모든 서비스 요청 메시지를 전송한다. 결국 부하 분산을 더 이상 제공할 수 없으며, 임의의 클라이언트가 어떤 서버로부터 서비스를 제공받는지 관리할 수 없다.
결국 이를 해결하기 위해서는 클라이언트가 ARP 요청 메시지를 전송했을 때 Dispatcher만이 이에 응답하고, Real Server는 모두 ARP 요청 메시지를 무시해야 한다. 여기에서는 가장 간단한 ARP Hidden 방식을 소개한다.
일반적으로 Real Server에 VIP는 lo 장치에 Aliasing으로 설정되기 때문에, lo 장치와 다른 모든 인터페이스에 대해 ARP를 무시하도록 설정한다.
># echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
># echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce
># echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
># echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
2.2. VIP 및 RIP 설정
Real Server는 고유의 IP 주소인 RIP (Real Server IP)를 갖고 있으며, Dispatcher는 RIP 주소를 기반으로 서비스 요청을 분산시킨다. 다만, Direct Routing 방식의 특성상 처리된 클라이언트의 요청은 Real Server에서 클라이언트로 직접 전달되므로(NAT 방식에서 Dispatcher를 거치는 것과는 달리), Real Server는 VIP 주소도 함께 lo 장치로서 갖고 있어야 한다. 따라서, 우선 VIP가 123.234.1.101 이고, RIP가 123.234.1.111 이라고 가정할 때,
># ifconfig eth0 123.234.1.111 netmask 255.255.255.0 up
># ifconfig lo:0 123.234.1.101 netmask 255.255.255.255 up
># ifconfig
위와 같이, ifconfig 명령을 이용하여 VIP와 RIP를 각각 설정한 다음, ifconfig로 설정사항을 확인한다. 단, 이미 eth0에 RIP가 설정되어 있는 경우가 대부분이므로, 이 단계에서는 VIP 만을 설정해도 된다.
2.3. Routing Table 설정
lo:0 장치에 VIP를 설정했으므로, Destination이 VIP인 요청 메시지를 lo:0 장치로 전달해야 한다. 그런 다음에는 이를 Real Server의 커널에 의해 처리된다.
># route add -host 123.234.1.101 dev lo:0
3. Real Server를 Virtual Service에 등록 (on Dispatcher Node)
3.1. Real Server를 등록하기
일반적인 Real Server를 Virtual Service에 등록하는 방식도 위와 동일하다. 다만 local host 대신 RIP를 입력하는 것만 차이가 있다.
># ipvsadm -a -t 123.234.1.101:80 -r 123.234.1.111 -g
4. Virtual Service 상태 모니터링
이상과 같이 Virtual Service에 Real Server가 등록된 이후에는 즉시 VIP를 통한 서비스 제공이 가능하다. 이때 Dispatcher Node에서 주기적으로 서비스 상태(# of Active Connection and # of Inactive Connection)를 계속해서 모니터링하고 싶은 경우 watch 명령을 이용한다.
># watch n -1 ipvsadm -Ln
'LVS' 카테고리의 다른 글
HPM 100-A(전력측정기)에서 시리얼 통신으로 데이타 값 받아오기. (1) | 2011.01.04 |
---|---|
LVS 구축에 관한 이론 (NAT 부터 WLC 까지) (2) | 2010.12.23 |
RR 알고리즘 개선 -> N번째 N번 부하 분산 (0) | 2010.12.20 |
커널 소켓 프로그래밍 (0) | 2010.11.20 |
모듈 프로그래밍 (1) | 2010.11.10 |