초록
최근 인터넷 트래픽이 증가하면서 웹 서버의 성능 향상에 많은 노력들을 기울여왔다. 고사양 하드웨어로의 교체 또는 서버 수의 증설과 같은 하드웨어 측면 해결방법 외에 소프트웨어 측면의 해결 방법들이 있는데 최근 이에 대한 연구들이 활발히 진행되고 있다. 본 논문에서는 기존 TCP 네트워킹 수신과정에서 발생하는 성능 저하 문제점들을 파악하고 이를 해결할 수 있는 방법을 제안한다. 리눅스 TCP 네트워킹 성능 개선에 관한 기존 방법 세 가지와 본 논문에서 새로 제안하는 두 가지 방법을 통합 적용하여 성능을 향상시킨다. 기존 개선 방법들로는 멀티코어 환경에서 패킷을 흐름단위로 코어에 할당하는 방법, 과도한 인터럽트 요청을 조절하는 ITR(Interrupt Throttle Rate) 방법, sk_buff 자료구조 recycling 방법이다. 본 논문에서 새로 제안하는 방법은 fd 자료구조 recycling 방법과 epoll_event 자료구조 recycling 방법이다. 웹 서버 환경에서 실험을 통해 본 논문의 제안방법들의 성능 개선효과, 또한 기존방법들과의 통합 적용했을 경우 성능 개선효과를 검증한다. 웹 서버로는 간단한 웹 서버, 리눅스에서 일반적으로 사용하는 Lighttpd와 Apache 웹 서버를 사용한다. 간단한 웹 서버 환경에서 본 논문에서 제안한 fd 재사용과 epoll_event 재사용을 적용할 경우 성능이 각각 7%와 6% 개선되고, 이 두 가지 방법을 기존의 세 가지 방법과 통합하여 적용한 경우 성능이 총 40%까지 개선된다. Lighttpd와 Apache 웹 서버 환경에서 다섯 가지 통합 방법을 적용한 경우 성능이 각각 총 36%, 20%까지 개선된다.
As Internet traffic increases recently, much effort has been put on improving the performance of a web server. In addition to hardware side solutions such as replacement by high-end hardware or expansion of the number of servers, there are software side solutions to improve performance. Recent studies on these software side solutions have been actively performed. In this paper, we identify performance degradation problems occurring in a conventional TCP networking reception process and propose a way to solve them. We improve performance by combining three kinds of existing methods for Linux Networking Performance Improvement and two kinds of newly proposed methods in this paper. The three existing methods include 1) an allocation method of a packet flow to a core in a multi-core environment, 2) ITR(Interrupt Throttle Rate) method to control excessive interrupt requests, and 3) sk_buff data structure recycling. The two newly proposed methods are fd data structure recycling and epoll_event data structure recycling. Through experiments in a web server environment, we verify the effect of our two proposed methods and its combination with the three existing methods for performance improvement, respectively. We use three kinds of web servers: a simple web server, Lighttpd generally used in Linux, and Apache. In a simple web server environment, fd data structure recycling and epoll_event data structure recycling bring out performance improvement by about 7 % and 6%, respectively. If they are combined with the three existing methods, performance is improved by up to 40% in total. In a Lighttpd and an Apache web server environment, the combination of five methods brings out performance improvement by up to 36% and 20% in total, respectively.