Permit init(8) use its own cpuset group.
Alexander V. Chernikov
melifaro at FreeBSD.org
Wed Jun 4 19:18:39 UTC 2014
On 04.06.2014 19:06, John Baldwin wrote:
> On Monday, June 02, 2014 12:48:50 pm Konstantin Belousov wrote:
>> On Mon, Jun 02, 2014 at 06:52:10PM +0400, Alexander V. Chernikov wrote:
>>> Hello list!
>>>
>>> Currently init(8) uses group 1 which is root group.
>>> Modifications of this group affects both kernel and userland threads.
>>> Additionally, such modifications are impossible, for example, in presence
>>> of multi-queue NIC drivers (like igb or ixgbe) which binds their threads
> to
>>> particular cpus.
>>>
>>> Proposed change ("init_cpuset" loader tunable) permits changing cpu
>>> masks for
>>> userland more easily. Restricting user processes to migrate to/from CPU
>>> cores
>>> used for network traffic processing is one of the cases.
>>>
>>> Phabricator: https://phabric.freebsd.org/D141 (the same version attached
>>> inline)
>>>
>>> If there are no objections, I'll commit this next week.
>> Why is the tunable needed ?
> Because some people already depend on doing 'cpuset -l 0 -s 1'. It is also
> documented in our manpages that processes start in cpuset 1 by default so
> that you can use 'cpuset -l 0 -s 1' to move all processes, etc.
>
> For the stated problem (bound ithreads in drivers), I would actually like to
> fix ithreads that are bound to a specific CPU to create a different cpuset
> instead so they don't conflict with set 1.
Yes, this seem to be much better approach.
Please take a look on the new patch (here or in the phabricator).
Comments:
Use different approach for modifyable root set:
* Make sets in 0..15 internal
* Define CPUSET_SET1 & CPUSET_ITHREAD in that range
* Add cpuset_lookup_builtin() to retrieve such cpu sets by id
* Create additional root set for ithreads
* Use this set in ithread_create()
* Change intr_setaffinity() to use cpuset_iroot (do we really need this)?
We can probably do the same for kprocs, but I'm unsure if we really need it.
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D141_3.diff
Type: text/x-patch
Size: 5640 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20140604/3975dd61/attachment.bin>
More information about the freebsd-hackers
mailing list