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