An efficient threading model to boost server performance
Master of Science
Multi-threading is a popular choice for server architecture. Widely used servers, like the Apache web server and the MySQL database server, are written in a multi-threaded fashion. We investigate the effects of thread architecture on server performance from two angles: (1) number of user threads per kernel thread, and (2) use of blocking I/O vs. non-blocking I/O. We propose N-to-M threads with non-blocking I/O, a novel threading model, to provide higher performance for servers, and explain its advantages over other existing thread architectures, viz., 1-to-1 threads with blocking I/O, N-to-1 threads with non-blocking I/O, and N-to-M threads with blocking I/O. We demonstrate the efficacy of this threading model by showing performance improvement for Apache and MySQL. Results show that our threading model provides a performance improvement of 10--22% for Apache (for synthetic and real workloads), and 10--17% for MySQL (for TPC-W workload) over existing thread models.