Index: sys/netinet/tcp_hostcache.c =================================================================== --- sys/netinet/tcp_hostcache.c +++ sys/netinet/tcp_hostcache.c @@ -657,6 +657,7 @@ " CWND SENDPIPE RECVPIPE HITS UPD EXP\n"); #define msec(u) (((u) + 500) / 1000) + len = 0; for (i = 0; i < V_tcp_hostcache.hashsize; i++) { THC_LOCK(&V_tcp_hostcache.hashbase[i].hch_mtx); TAILQ_FOREACH(hc_entry, &V_tcp_hostcache.hashbase[i].hch_bucket, @@ -683,8 +684,17 @@ hc_entry->rmx_hits, hc_entry->rmx_updates, hc_entry->rmx_expire); + if (++len >= 16) { + THC_UNLOCK(&V_tcp_hostcache.hashbase[i].hch_mtx); + sbuf_drain(&sb); + len = 0; + THC_LOCK(&V_tcp_hostcache.hashbase[i].hch_mtx); + } } THC_UNLOCK(&V_tcp_hostcache.hashbase[i].hch_mtx); + if (len > 0) + sbuf_drain(&sb); + len = 0; } #undef msec error = sbuf_finish(&sb);