260 likes | 376 Views
Performance Issues in WWW Servers. Erich Nahum, Tsipora Barzilai, Dilip D. Kandlur IEEE/ACM Transactions on Networking, Vol. 10, No.1, Feb, 2002. Presented By Kunhao Zhou. Motivation. Problems of WWW Overloaded server Congestion in network Poorly-behaved client
E N D
Performance Issues in WWW Servers Erich Nahum, Tsipora Barzilai, Dilip D. Kandlur IEEE/ACM Transactions on Networking, Vol. 10, No.1, Feb, 2002 Presented By Kunhao Zhou
Motivation • Problems of WWW • Overloaded server • Congestion in network • Poorly-behaved client • Why we need improvement? • Customer satisfaction • Save money$$$ • …
Outline • Overview • WWW transactions • WWW optimizations • Tests • Conclusion
Overview • New socket functions • acceptex(), transmitfile() in NT, send_file() in HPUX • Per-byte optimizations • Zero-copy(eliminating copies), eliminating checksums • Per-connection optimizations • Piggybacking FIN’s • Delaying ACK
Outline • Overview • WWW transactions • WWW optimizations • Tests • Conclusion
WWW Transactions Each transaction in WWW server include: 1. accept() new connection 2. getsockname() get peer name 3. read() the HTTP request 4. setsockopt() disable the Nagle algorithm 5. gettimeofday() determine the time 6. Parse the request 7. stat() obtain file status
WWW Transactions (cont.) 8. open() the requested file 9. read() file descriptor 10. write() socket to send HTTP header 11. write() socket to send file 12. close() file 13. close() socket 14. write() log file
Outline • Overview • WWW transactions • WWW optimizations • Tests • Conclusion
Outline • Overview • WWW transactions • WWW optimizations • Tests • Test-bed • Proposed socket function • Per-byte optimizations • Per-connection optimizations • Conclusion
Experiment Test-bed • Hardware • IBM 43P RS/6000 with 128MB RAM, 200-MHz PowerPC 604e processor, 4-100mb Ethernet network cards. 1 Server, 3 clients. • OS • AIX 4.3.1 • Web Server • Flash-Poll
Proposed Socket Functions • acceptex() Minor improvement!
Proposed Socket Functions • send_file() (single_copy) Performance degraded!
Per-Byte Optimizations • Zero-copy send_file() • Cache mbuf • If files are in cache, send the cache • Separate buffer management from VM • Eliminate checksum. • AIX feature
Per-Byte Optimizations • Zero-copy Improved a lot!
Per-Byte Optimizations • Eliminate checksum Improved!
Per-Connection Optimizations FIN can be sent earlier
Per-Connection Optimizations • Combine the FIN With data. • send_file() offers a close option • Add option PRU_SEND_DISCONNECT to pru_usrreq(), allowing TCP layer send and close in one function call • Save one packet transfer
Per-Connection Optimizations • Combine the FIN with data Throughput HTTP ops/sec Small transfer improved!
Per-Connection Optimizations ACK can be delayed
Per-Connection Optimizations • TCP cumulative ACK • Change tcp_input()
Per-Connection Optimizations • Delay ACK Small transfer improved!
Total Performance Increase Considerable improvement!
Outline • Overview • WWW transactions • WWW optimizations • Experiments • Conclusion
Conclusion • New socket functions • Little increase • Per-byte optimizations • Big improvement • Per-connection optimizations • Big improvement • These features were implemented in AIX 4.3.2