irq cpu binding
Adrian Chadd
adrian at freebsd.org
Sat Mar 28 18:23:57 UTC 2015
Ah, I think that's because the taskqueues in the driver for deferred
handling aren't also being pinned.
I've talked to John about this - the problem is that all the
taskqueues for all the drivers run under one kernel process. Find out
their threadids and pin them too.
Eg:
# procstat -ta | grep em0
0 100024 kernel em0 que -1 8 sleep -
0 100025 kernel em0 txq -1 8 sleep -
# vmstat -ia | grep em
irq256: em0 68465 1
# cpuset -g -x 256
irq 256 mask: 0, 1
# cpuset -g -t 100024
tid 100024 mask: 0, 1
# cpuset -g -t 100025
tid 100025 mask: 0, 1
So you'd have to manually do that - there's no generic interface at
the moment to be able to ask a device driver to re-mask its taskqueue
thread(s) for a given queue and rewire its interrupt(s) for that
queue.
(That would be a nice smallish project to prototype, btw.)
-adrian
More information about the freebsd-hackers
mailing list