MQ Patch.
John-Mark Gurney
jmg at funkthat.com
Wed Oct 30 06:41:14 UTC 2013
Andre Oppermann wrote this message on Tue, Oct 29, 2013 at 22:25 +0100:
> b) the driver assigns the DMA rings to particular cores which by that,
> through
> a critnest++ can drive them lockless. The drivers (*if_transmit) will
> look
> up the core it got called on and push the traffic out on that DMA ring.
> The problem is the actual upper stacks affinity which is not guaranteed.
> This has to consequences: there may be reordering of packets of the same
> flow because the protocols send function happens to be called from a
> different core the second time. Or the drivers (*if_transmit) has to
> switch to the right core to complete the transmit for this flow if the
> upper stack migrated/bounced around. It is rather difficult to assure
> full affinity from userspace down through the upper stack and then to
> the driver.
I'll point you to the paper:
http://arxiv.org/abs/1106.0443
Please don't reorder packets.
Binding TX queues to cores seems not very useful, sure you can do a
lockless implementation, but is running the scheduler to change cpu's
really cheaper than paying the cost of migrating the lock?
I'll admit I haven't run benchmarks, but I doubt it.
--
John-Mark Gurney Voice: +1 415 225 5579
"All that I will do, has been done, All that I have, has not."
More information about the freebsd-net
mailing list