The claim was: slower than tasklets.
I already answered that in detail. In sum, a driver cannot define its
own softirq. Softirqs are not modular.
Tasklets are the closest thing to softirqs for a driver.
I agree completely. Wanna implement this? I will kiss your feet, and
multi-core CPU vendors will worship you as a demi-god.
Until such time, we must deal with the network stack as it exists today,
and the network drivers as they exist and work today.
Good news: this is becoming the norm for modern NICs, especially 10Gbps.
Plenty of NICs already exist that support multiple RX rings (persumably
one per CPU), and newer NICs will raise individual MSI[-X] interrupts
based on the RX ring into which a packet was received.
In this area, NIC vendors are way ahead of the Linux net stack.
The Linux net stack is unfortunately not threaded enough to sanely deal
with dividing /flows/ up across multiple CPUs, even if the NIC does
support multiple transmit and receive queues. [side note: initial
multi-queue TX is being worked on, on netdev]
You focused on the example rather than the key phrase: tasklet is
single thread by definition and purpose.
Wanting to change that without analysis of the impact illustrates the
apples-to-oranges change being proposed.
I do not disagree with these theoretical musings :)
I care the most about the "who will do all this work?" question. In
network driver land, these changes impact hot paths. I am lazy, and
don't care to revisit each network driver hot path and carefully re-tune
each based on this proposal. Who is volunteering?
Jeff
-