Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 28 Mar 2015 21:31:47 +0300
From:      Slawa Olhovchenkov <slw@zxy.spb.ru>
To:        Adrian Chadd <adrian@freebsd.org>
Cc:        "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>
Subject:   Re: irq cpu binding
Message-ID:  <20150328183147.GC23643@zxy.spb.ru>
In-Reply-To: <CAJ-Vmok=0=C%2BHLvLXEM5pbYp_zP6C498wudAfEA40s4AVpGa_w@mail.gmail.com>
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> <CAJ-Vmok=0=C%2BHLvLXEM5pbYp_zP6C498wudAfEA40s4AVpGa_w@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Mar 28, 2015 at 11:23:56AM -0700, Adrian Chadd wrote:

> 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   -

# procstat -ta | grep ix0
    0 100065 kernel           ix0 que            6    8 run     -         
    0 100067 kernel           ix0 que            7    8 run     -         
    0 100069 kernel           ix0 que            8    8 run     -         
    0 100071 kernel           ix0 linkq          7    8 sleep   -         
   12 100064 intr             irq270: ix0:que    6    8 run     -         
   12 100066 intr             irq271: ix0:que    7    8 run     -         
   12 100068 intr             irq272: ix0:que    8    8 run     -         
   12 100070 intr             irq273: ix0:link   0    8 wait    -         

As you see -- I am already pined all.

# cpuset -g -x 270
irq 270 mask: 6
# cpuset -g -t 100065
tid 100065 mask: 6
# cpuset -g -t 100064
tid 100064 mask: 6

> # 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.)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150328183147.GC23643>