Interaction with the OS Network poll() / select() on a busy cache spend more time actually checking each FD 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 the default UNIX kernels have very high MSL lifetimes In a lot of cases the data can be piped straight from server to client without going through the convoluted trip Deferred reads waste a lot (15%) of possible read events, and should be removed and replaced with correct rather than lazy read scheduling An event-driven network IO system would be perfect