Performance bottlenecks Interaction with the OS Network poll() and select() on a busy cache spend more time actually checking each file descriptor than squid doing the actual network work Squid does a lot of pre-buffering itself of server and client sockets rather than letting the OS handle it Squid sockets are generally short-lived, and by default UNIX kernels have very high TCP socket lifetimes (2MSL time) In a lot of cases, data can be piped straight from server to client(s) rather than going a convoluted trip first Deferred reads waste a lot (15%) of possible reads, and should be removed and replaced with correct rather than lazy read scheduling An event-driven network IO system would be perfect (a la FreeBSD and Windows)