"cpuset -n prefer:?" --what values for "?" are supposed to be allowed? (only 1 is, despite two numa domains)
Mark Millard
marklmi at yahoo.com
Wed Sep 11 18:14:51 UTC 2019
On 2019-Sep-11, at 10:11, Mark Millard <marklmi at yahoo.com> wrote:
> On 2019-Sep-11, at 08:15, Mark Johnston <markj at freebsd.org> wrote:
>
>> On Wed, Sep 11, 2019 at 07:57:26AM -0700, Mark Millard wrote:
>>>
>>>
>>> On 2019-Sep-11, at 07:31, Mark Johnston <markj at freebsd.org> wrote:
>>>
>>>> On Tue, Sep 10, 2019 at 10:58:05PM -0700, Mark Millard wrote:
>>>>> In a context with:
>>>>>
>>>>> # cpuset -g
>>>>> pid -1 mask: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27
>>>>> pid -1 domain policy: first-touch mask: 0, 1
>>>>>
>>>>> I get:
>>>>>
>>>>> # cpuset -l0 -n prefer:0 COMMAND
>>>>> cpuset: setdomain: Invalid argument
>>>>>
>>>>> # cpuset -l0 -n prefer:2 COMMAND
>>>>> cpuset: setdomain: Invalid argument
>>>>>
>>>>> But one prefer:? value does allow the COMMAND
>>>>> to run:
>>>>>
>>>>> # cpuset -l0 -n prefer:1 COMMAND
>>>>>
>>>>> This seem odd to me. Am I missing something?
>>>>>
>>>>> For reference: I'm using a ThreadRipper 1950X
>>>>> with a head -r351227 based context for this
>>>>> activity. The above happens to have been run
>>>>> in a Windows 10 Pro HyperV session, instead
>>>>> of in a native-boot of the same media. (A
>>>>> native-boot would have had 32 CPUs.)
>>>>
>>>> Can you please show the output of "sysctl vm.phys_segs" from this
>>>> setup?
>>>
>>> Sure:
>>
>> I was wondering if you had only one domain populated, but it seems not
>> to be the case. Could you try updating to r351672 or later and see if
>> the behaviour persists?
>
> It may be a bit before I do that.
>
> FYI: I had set MAXMEMDOM to match the number of
> actual domains for the context:
>
> /usr/src/sys/amd64/conf/GENERIC-DBG:options MAXMEMDOM=2
> /usr/src/sys/amd64/conf/GENERIC-NODBG:options MAXMEMDOM=2
>
> (These kernel configuration files include GENERIC.)
Not that the below is the problem that I reported, but
cpuset_modify_domain has an oddity. In the below, note
the "root->" use followed by the "root &&" test: the
root-> use would have failed first. Should the && be
"dset &&" instead? Should "root &&" just be removed for
being redundant?
793 root = cpuset_getroot(set);
794 mtx_lock_spin(&cpuset_lock);
795 dset = root->cs_domain;
796 /*
797 * Verify that we have access to this set of domains.
798 */
799 if (root && !domainset_valid(dset, domain)) {
800 error = EINVAL;
801 goto out;
802 }
===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)
More information about the freebsd-current
mailing list