230 likes | 370 Views
Scalability of Linux Event-Dispatch Mechanisms. David Mosberger Hewlett Packard Labs Palo Alto. Abhishek Chandra University of Massachusetts Amherst. Motivation. Web Server. Clients. WAN. Large Web and Internet traffic Heavily Loaded/Accessed Web Servers
E N D
Scalability of Linux Event-Dispatch Mechanisms David Mosberger Hewlett Packard Labs Palo Alto Abhishek Chandra University of Massachusetts Amherst
Motivation Web Server Clients WAN • Large Web and Internet traffic • Heavily Loaded/Accessed Web Servers • cnn.com, britneyspearsfans.com, … • Starr Report, Napster ruling, ... • Challenge: Make Web Servers Scalable
Server Scalability Issues • Large number of concurrent/idle connections • Last-mile problem: Slow end-connections • High latency WAN traffic • HTTP/1.1 Persistent Connections • Heavy Request Loads • Need for high throughput • Pure Thread-based vs. Event-based servers • Focus: Scalability of Event-based servers on Linux
Outline • Motivation • Event-based Servers • Linux Event-Dispatch Mechanisms • Evaluation: Handling concurrent connections • RT signals and Signal-per-fd enhancement • Evaluation: Handling request load • Concluding Remarks
1. Interest Set Specification 3. Event Notification 4. I/O Handling Interest Set 2. Network Event Event-Based Servers • Server specifies Interest Set to Kernel • Kernel notifies Server of Event on a connection • Server handles I/O on the connection Server Kernel Connections
Linux Event-Dispatch Mechanisms • select() system call • poll() system call • /dev/poll interface • POSIX.4 Real-Time Signals
Interest Set Ready Set Scan select() system call • Interest Set specified on each call • Notification requires scan of interest set Server Kernel Connections
poll() and /dev/poll • Interest Set: • List of pollfd structures • Better for sparse interest sets, worse for dense sets • Notification • Requires scan of Interest Set • /dev/poll: • Interest Set specified incrementally • More compact ready set
POSIX.4 Real Time Signals • RT signals are queued • Multiple signals of same type can be delivered • RT signals carry a data payload (siginfo) • Provides the context of the signal • sigwaitinfo() system call: • Dequeues signals • Avoids overhead of calling signal handler • Signal can be blocked
1. Associate RT Signal 4.sigwaitinfo() 3. EnQueue Signal 5. DeQueue Signal 2. Network Event Using Real Time Signals for Network I/O • Interest Set specified incrementally • No scanning of Interest Set required Server Kernel Signal Queue Interest Set Sockets
Outline • Motivation • Event-based Servers • Linux Event-Dispatch Mechanisms • Evaluation: Handling concurrent connections • RT signals and Signal-per-fd enhancement • Evaluation: Handling request load • Concluding Remarks
Evaluation: Handling Concurrent Connections • Dispatch overhead and latency as a function of number of concurrent connections • Experimental Setup • 400 MHz P3 Linux 2.4.0-test7 server • μ -server using select(),/dev/poll or RT signals • 10 clients running httperf • Fixed request rate, increasing number of connections
Server CPU Usage 500 req/s • RT signal overhead independent of no. of concurrent connections
Response Time 500 req/s • RT signal response time independent of no. of concurrent connections
Drop 3 Network Event Network Event Network Event Limitations of Real Time Signals • Signal Queue Overflow: • New events lost • Can lead to “hung server” • Unfair Allocation of Signal Queue Server 3 3 2 Kernel Signal Queue Interest Set Sockets 1 2 3 4
Handling Signal Queue Overflow • Fallback mechanism • select(), poll(), etc. • Reconstruct current state • Issues • Server complexity • Overhead of maintaining explicit interest sets • Potential performance penalty
1 Discard Network Event Network Event Network Event RT Signal Enhancement:Signal-per-fd • Goals: • Avoid signal queue overflows • Fair Allocation of signal queue • Solution: Enqueue only one signal per socket Server 3 2 Kernel Signal Queue Interest Set Sockets 1 2 3 4
Signal-per-fd • Idea: • Signal queue length same as fdset size • Bitmap used to efficiently determine presence/absence of signal in queue • Advantages: • Simpler Server Implementation • No signal queue overflows • No need for fallback mechanisms • Fair Allocation of Signal Queue Resource • Avoids too fine-grained event notification • Coalesce multiple events for a socket
Outline • Motivation • Event-based Servers • Linux Event-Dispatch Mechanisms • Evaluation: Handling concurrent connections • RT signals and Signal-per-fd enhancement • Evaluation: Handling request load • Concluding Remarks
Server Throughput 6000 idle connections • Linear scaling of RT signals, signal-per-fd
Server CPU Usage 6000 idle connections • Linear Scaling of RT signals, signal-per-fd
Related Work • Event-Delivery API [BMD99] • Performance studies: • select() [BM98], /dev/poll [PL00] • RT signals [PLT00] • Web Servers: • Event-based: Flash [PDZ99], phhttpd [Brown99] • In-kernel: TUX, khttpd, AFPA [JKNRT01] • Future: Linux 2.5 Asynchronous I/O?
Summary • Scalability issues with Linux Event-dispatch mechanisms • Real Time Signals are scalable • Performance independent of number of concurrent connections • Signal Queue Overflow Problems • Signal-per-fd enhancement • potentially improves performance • reduces server complexity • provides fairness • Patch available at http://www.netli.com/links