(Note: this list is stale.) List of easy optimization targets. - Introduced an unlocked read of the so_comp queue in accept() to see if there are items in the queue or not before doing the harder work. If non-blocking, we can return immediately. This may help applications like qmail which appear to do substantial polling of the accept queue. - Explore whether we see real benefits from the current break-out of socket locking: we have three primitives (SOCK_LOCK(so), SOCKBUF_LOCK(&so->so_rcv), SOCKBUF_LOCK(&so->so_snd)), and they could be coallesced or further broken out. - Investigate relationship between polling at SMP; in particular, investigate binding particular polling threads to particular interfaces and avoiding undue CPU migration during polling. In order to maintain ordering, it is likely desirable to map each interface to only one thread to serialize packet input from the interface. - Investigate breaking out pcbinfo inpcb chains based on various factors, including hashing, in order to reduce contention on pcbinfo chain locks. Also consider reference counting models for inpcbs. Note that the pcbinfo locks are sometimes used to protect so_pcb.