Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Jul 2015 23:38:10 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        Garrett Cooper <yaneurabeya@gmail.com>
Cc:        "freebsd-arch@freebsd.org" <freebsd-arch@freebsd.org>
Subject:   Re: CFT/CFR: NUMA policy branch
Message-ID:  <CAJ-Vmokym0_M=owRuR1uAcfAnzme-0xULs%2BYShQ7GXa7V9F6Vg@mail.gmail.com>
In-Reply-To: <D60A4F17-D573-4C0D-AD8B-2C3710A67DA6@gmail.com>
References:  <CAJ-Vmo=SnqXTF5m65haKqrVf699zinyXs%2BQdvR6V88CW7vooCw@mail.gmail.com> <CAJ-VmonyTfSxj%2BD=FN3TUCO33w4vGqh1REQqx-8rd-JcArfqSA@mail.gmail.com> <CAJ-Vmo=ON9bEngDoMFK-kJR=qVvcX%2BEeQXx%2BUoEsh1npMHjESQ@mail.gmail.com> <D60A4F17-D573-4C0D-AD8B-2C3710A67DA6@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
There's a phabricator review. It's not up to date, because:

* it broke for a while, and
* kib requested he be sent patches, not a phabricator review.



-a


On 7 July 2015 at 23:13, Garrett Cooper <yaneurabeya@gmail.com> wrote:
> On Jul 5, 2015, at 19:06, Adrian Chadd <adrian@freebsd.org> wrote:
>
>> Hi,
>>
>> I've done another update. kib@ has been beating me with the clue stick a=
 bit.
>>
>> https://github.com/freebsd/freebsd/compare/master...erikarn:local/adrian=
_numa_policy
>>
>> * (kib) (numactl.c) fix up sorting of include files
>> * (kib) (numactl.c) consistent use of values when calling err()
>> * (kib) (numactl.c) consistently wrap lines at 78 characters, don't
>> prematurely wrap lines
>> * (kib) don't use the old-style BSD licence mentioning "regents", use
>> the updated one
>> * (kib) (vm_domain.c) don't break out after iterating a few times and
>> have the API be unpredictable - so now the API will always succeed in
>> reading a vm_policy
>>
>> I've tested the policies (first-touch, fixed-domain, round-robin) and
>> they all still work as advertised, both on threads and processes.
>>
>> I'd appreciate more reviews and some further testing.
>
> Please create a dummy pull request or post the code up on Phabricator.
>
> - Please put some of the items like policy_to_str and str_to_policy in a =
library.
> - Please use that code in the kernel as well for sysctl_vm_default_policy=
 to reduce duplication.
> - Please note reasoning for why `options MAXMEMDOM=3D16` in numa(4).
> - Why are checking for `if (p)` before calling PROC_UNLOCK(p) in sys_numa=
_getaffinity, but not sys_numa_setaffinity?
> - sys_numa_setaffinity and sys_numa_getaffinity look similar. Could somet=
hing be implemented like sysctl(3) for handling getting/setting of affiniti=
es all in one shot?
> - `if (p)` should be `if (p !=3D NULL)`, etc per style(9).
> - Is there a way that the affinity could be inherited/not inherited acros=
s threads, similar to what ktrace -i does? If so, how does one do that?
> - In vm_domain_rr_selectdomain, should this use atomic(9), i.e. can multi=
ple threads access/mangle the value of td_dom_rr_idx in parallel?
> - In vm_domain_policy_validate, couldn=E2=80=99t you remove all of the in=
termediary `return (-1)`=E2=80=99s as long as you put `break;`s in the swit=
ch/case statements?
> - Should vm_domain_policy_cleanup/vm_domain_policy_init be implemented? I=
f so, what should they have in there?
> - Would it make sense for `struct vm_domain_iterator` to be a queue(9)-li=
ke type (just based on the name alone)? If not, what data structure do you =
anticipate it having, e.g. tree, queue, directed graph, etc?
> - In vm_domain_iterator_run, vi->n is always decremented after the vi->n =
<=3D 0 run is done =E2=80=94 why not move that outside the switch-case stat=
ement?
> - Why did you hand roll `vm_domain_iterator_isdone` in `vm_domain_iterato=
r_run` up at the top?
> - The parameter names for functions/syscalls can be omitted in the declar=
ations.
> - The change to vm_page.c seems like it could be committed separate from =
the NUMA changes.
> - `However without it'll kernel panic below - the code didn=E2=80=99t` ->=
 `However without the following check, the kernel will panic below; the cod=
e didn=E2=80=99t`
> - vm_domain_iterator_run seems like it could use one of the queue(9) data=
 structures.
> - Why is OPT_TID 1001?
> - `int error;` should come after `cpuset_t set;` per alignment and style(=
9).
> - `atoi` parsing is better handled via strtoll, etc.
>
> Thanks!
> -NGie



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmokym0_M=owRuR1uAcfAnzme-0xULs%2BYShQ7GXa7V9F6Vg>