On Saturday, January 19, 2013 8:19:19 pm Adrian Chadd wrote: > On 19 January 2013 08:14, John Baldwin <j...@freebsd.org> wrote: > > > However, I did describe an alternate setup where you can fix this. Part of > > the key is to get various NICs to share a single logical queue of tasks. > > You > > could simulate this now by having all the deferred tasks share a single > > taskqueue with a pool of tasks, but that will still not fully cooperate with > > ithreads. To do that you have to get the interrupt handlers themselves into > > the shared taskqueue. Some changes I have in a p4 branch allow you to do > > that > > by letting interrupt handlers reschedule themselves (avoiding the need for a > > separate task and preventing the task from running concurrently with the > > interrupt handler) and providing some (but not yet all) of the framework to > > allow multiple devices to share a single work queue backed by a shared pool > > of > > threads. > > How would that work when I want to pin devices to specific cores?
Note that the setup allows you to bind things however you want. By default it uses the current model (each IRQ uses a dedicated queue with a single thread). The idea is to provide the flexbility so that you can glue things together in whatever way makes the most sense. In a router that tends to get into livelock using a shared queue may make more sense. However, you are not forced to use that for other workloads where it does not. -- John Baldwin _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"