]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Allow empty NUMA memory domains to support Threadripper2
authorAndrew Gallatin <gallatin@FreeBSD.org>
Mon, 1 Oct 2018 14:14:21 +0000 (14:14 +0000)
committerAndrew Gallatin <gallatin@FreeBSD.org>
Mon, 1 Oct 2018 14:14:21 +0000 (14:14 +0000)
commit30c5525b3cd28170e736202510ab64d51aa703bf
treebc1ffae70e460a396beda9f42a5fb363ab5c13b5
parent15a087e55119214fbe129fbbef9a4e49bab6bc90
Allow empty NUMA memory domains to support Threadripper2

The AMD Threadripper 2990WX is basically a slightly crippled Epyc.
Rather than having 4 memory controllers, one per NUMA domain, it has
only 2  memory controllers enabled. This means that only 2 of the
4 NUMA domains can be populated with physical memory, and the
others are empty.

Add support to FreeBSD for empty NUMA domains by:

- creating empty memory domains when parsing the SRAT table,
    rather than failing to parse the table
- not running the pageout deamon threads in empty domains
- adding defensive code to UMA to avoid allocating from empty domains
- adding defensive code to cpuset to avoid binding to an empty domain
    Thanks to Jeff for suggesting this strategy.

Reviewed by: alc, markj
Approved by: re (gjb@)
Differential Revision: https://reviews.freebsd.org/D1683
sys/kern/kern_cpuset.c
sys/vm/uma_core.c
sys/vm/vm_kern.c
sys/vm/vm_pageout.c
sys/vm/vm_pagequeue.h
sys/x86/acpica/srat.c