Date: Sat, 28 Mar 2015 11:23:56 -0700 From: Adrian Chadd <adrian@freebsd.org> To: Slawa Olhovchenkov <slw@zxy.spb.ru> Cc: "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org> Subject: Re: irq cpu binding Message-ID: <CAJ-Vmok=0=C%2BHLvLXEM5pbYp_zP6C498wudAfEA40s4AVpGa_w@mail.gmail.com> In-Reply-To: <20150328181026.GB23643@zxy.spb.ru> References: <20150328112035.GZ23643@zxy.spb.ru> <CAJ-Vmo=sxtLgn1HABbWchu1Hm8kZ4Qy%2BscPeD7ezkkBzr%2BQijA@mail.gmail.com> <20150328154031.GA23643@zxy.spb.ru> <CAJ-VmokpWNy-arZ_=4hNbyAvzBYgDWu4F=vYSDwqPgpjaGHk=w@mail.gmail.com> <20150328181026.GB23643@zxy.spb.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmok=0=C%2BHLvLXEM5pbYp_zP6C498wudAfEA40s4AVpGa_w>