[PATCH 0/2]: Software RX flow seperation
From: David Miller <davem@davemloft.net>
Date: 2008-09-18 02:34:51
The other day I got wind that Jens Axboe had this cool facility he was testing in his block development tree that allows scheduling softirq work on remote cpus cheaply. So I ran home from kernel summit as fast as I could and started trying to make it generic and then try and use it for networking packet receive processing. These patches suck as-is, on the networking side. For example, I do flow seperation for netif_rx(), which for loopback is a lose for every benchmark I've tried. For things like tbench on localhost the cpus are already loaded already and the RX flow seperation just adds more overhead, increases latency, and decreases bandwidth. That's easy to change, just make netif_rx() use target_cpu = smp_processor_id(); But for non-NAPI hardware devices it might still make sense. Next, adding the "struct call_single_data" object to the sk_buff is also negatively effecting performance. I have some ideas to cure that, for example I've always wanted sk_buff to use a struct list_head instead of it's by-hand list implementation hacks. But this patch might improve some routing, firewalling, and IPSEC gateway configurations when using cards that don't support RX flow seperation in hardware.