Date: Wed, 20 Jan 2016 17:03:09 +0900 From: Ryota Ozaki <ozak...@netbsd.org>
I measured several cases of softint-based if_input implementation and other implementations including vanilla and polling-based packet processing (POC). Here are the results of the measurements (TL;TR): https://gist.github.com/ozaki-r/975b06216a54a084debc I'm having a little bit of a hard time following these graphs. Can you explain how I should read them? E.g., what does polling-rx w/o ip_pktq RX/TX = 148809 / 148809 pps, 100M / 100Mbps |######### 100.0% RX/TX = 253096 / 297597 pps, 170M / 200Mbps |################# 85.0% mean? Small concern about your no-ip_pktq patch: with it, you acquire and release softnet_lock for every packet, whereas without it, the ip_pktq softintr handler acquires softnet_lock once, processes all packets in the pcq in a batch, and then releases softnet_lock. Maybe that's not an issue since pcq_get already involves atomics, but it stuck out at me a little bit.