정보통신기술 실습사례: 병행서버모델의 데이터 전송시간 측정

Educational Practice Example of Information and Communications Technology: Measurement of Data Transfer Time for Concurrent Server Model

  • 투고 : 2008.01.30
  • 심사 : 2008.03.12
  • 발행 : 2008.03.31

초록

본 연구의 목적은 정보통신기술 영역의 데이터 통신 원리 중에서 다중프로세스 방식과 다중 쓰레드 방식의 병행서버에 대해 직접 체험할 수 있는 실습사례를 제시하는 데 있다. 이를 위해 먼저 다중 프로세스 방식인 포크 서버(fork server)와 다중 쓰레드 방식인 쓰레드 서버(thread server), 그리고 쓰레드 클라이언트(thread client)를 구현하였다. 다음에 실험환경으로서 이더넷(ethernet)을 이용한 소규모 네트워크를 구성하였으며 사용자 수에 따른 데이터 전송시간을 측정하였다. 데이터 전송시간을 측정한 결과, 쓰레드 서버가 포크 서버에 비해 약 20~61%의 전송시간 절감율을 보였으며 두 서버 모델 간 전송시간 차이는 사용자 인원수에 비례하였다. 두 서버 모델 간 발생하는 성능차이의 주된 원인은 프로세스 포크(fork)와 쓰레드 생성에 소요되는 시간이 다르기 때문이다. 아울러, 프로세스 간, 쓰레드 간 스케줄링에서 발생하는 문맥전환(context switching) 역시 웹 서버의 부하에 영향을 주는 것을 알 수 있었다. 본 연구를 통해 제시된 실습사례와 측정된 실험데이터는 학교현장에서 수업시간에 데이터통신 원리에 대해 직접 체험할 수 있는 교육적 실습자료로 활용될 수 있다.

The objective of this study is to show practice example let student experience about concurrent servers based multi-processes and multi-thread among the principles of data communication in ICT(information and communications technology). For this, we first implement multi-process server(fork server) and multi-thread server(thread server), and multi-thread client(thread client), Secondly, for experimental environment, we developed small ethernet networks and measure data transfer time with relation to the number of users. Experimental results show that mean transfer time of thread server is less than that of fork server by 20~61 % on average. Furthermore, it is found that the difference of data transfer time between fork server and thread server is proportional to that of the number of users. Main reason of performance difference dues to the difference between process forking time and thread creation time. We can also find that context switching for process and thread affects the load of web server. Our presentation and experimental results can be applied to used as the educational practice materials with which student can experience data communication principles.

키워드

참고문헌

  1. 교육인적자원부(2007). 실과(기술.가정) 교육과정. 교육인적자원부 고시 제2007-79호, 별책[10호]. 2008.1.5, http://www.kice.re.kr/kice/article/m302/view? searchtype=stored&hitadd=1&articleid=64478
  2. 김화종(2004). 컴퓨터 네트워크 프로그래밍. 서울: 홍릉과학출판사.
  3. 염미령(2001). 웹 서버 실행 모델로서의 다중 프로세스 모델과 다중 스래드 모델의 성능평가. Journal of Natural Science, 8, 23-32.
  4. 이상봉(2005). 기술과 교육과정을 위한 수업 전략 및 방법의 분석과 사례. 교원교육-한국교원대학교, 23(3), 101-118
  5. Butenhof, D. R. (2003). Programming with POSIX Threads (권상호, 고성규 역). 서울: 인포북.(원저 1997 출판)
  6. IBM(2007). 리눅스의 가치. 2007.3.20, http://www-903.ibm.com/kr/linux/value/
  7. Norton, S. J. & Dipasquale, M. D. (1997). Thread Time - The multithreaded programming guide. Prentice Hall PTR.
  8. Silberschatz, A. & Galvin, P. B. (1999). Operating System Concepts (5th ed). (김영찬 역.). 서울: 홍릉과학출판사. (원저 1998 출판)
  9. Stevens, W. R. Fenner, B. & Rudorff, A. M. (2005). UNIX Network programming, vol. 1: The sockets networking API (3rd ed.) (김치하, 이재용 역.). 서울: 교보문고. (원저 2004 출판)
  10. The apache software foundation(2007). Apache HTTP server Version2.2, Retrieved April, 10, from http://httpd.apache.org/docs/2.2/ko/misc/perf-tuning.html.