Date: Tue, 27 Jul 2010 20:33:50 +0000 (UTC) From: John Baldwin <jhb@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/amd64/include vmparam.h src/sys/arm/include vmparam.h src/sys/i386/include vmparam.h src/sys/ia64/include vmparam.h src/sys/mips/include vmparam.h src/sys/powerpc/include vmparam.h src/sys/sparc64/include vmparam.h src/sys/sun4v/include ... Message-ID: <201007272035.o6RKZ0ch008899@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
jhb 2010-07-27 20:33:50 UTC
FreeBSD src repository
Modified files:
sys/amd64/include vmparam.h
sys/arm/include vmparam.h
sys/i386/include vmparam.h
sys/ia64/include vmparam.h
sys/mips/include vmparam.h
sys/powerpc/include vmparam.h
sys/sparc64/include vmparam.h
sys/sun4v/include vmparam.h
sys/sys pcpu.h
sys/vm vm_phys.c vm_phys.h
Log:
SVN rev 210550 on 2010-07-27 20:33:50Z by jhb
Very rough first cut at NUMA support for the physical page allocator. For
now it uses a very dumb first-touch allocation policy. This will change in
the future.
- Each architecture indicates the maximum number of supported memory domains
via a new VM_NDOMAIN parameter in <machine/vmparam.h>.
- Each cpu now has a PCPU_GET(domain) member to indicate the memory domain
a CPU belongs to. Domain values are dense and numbered from 0.
- When a platform supports multiple domains, the default freelist
(VM_FREELIST_DEFAULT) is split up into N freelists, one for each domain.
The MD code is required to populate an array of mem_affinity structures.
Each entry in the array defines a range of memory (start and end) and a
domain for the range. Multiple entries may be present for a single
domain. The list is terminated by an entry where all fields are zero.
This array of structures is used to split up phys_avail[] regions that
fall in VM_FREELIST_DEFAULT into per-domain freelists.
- Each memory domain has a separate lookup-array of freelists that is
used when fulfulling a physical memory allocation. Right now the
per-domain freelists are listed in a round-robin order for each domain.
In the future a table such as the ACPI SLIT table may be used to order
the per-domain lookup lists based on the penalty for each memory domain
relative to a specific domain. The lookup lists may be examined via a
new vm.phys.lookup_lists sysctl.
- The first-touch policy is implemented by using PCPU_GET(domain) to
pick a lookup list when allocating memory.
Reviewed by: alc
Revision Changes Path
1.61 +7 -0 src/sys/amd64/include/vmparam.h
1.15 +7 -0 src/sys/arm/include/vmparam.h
1.50 +7 -0 src/sys/i386/include/vmparam.h
1.22 +7 -0 src/sys/ia64/include/vmparam.h
1.8 +7 -0 src/sys/mips/include/vmparam.h
1.19 +7 -0 src/sys/powerpc/include/vmparam.h
1.22 +7 -0 src/sys/sparc64/include/vmparam.h
1.8 +7 -0 src/sys/sun4v/include/vmparam.h
1.45 +1 -0 src/sys/sys/pcpu.h
1.15 +140 -7 src/sys/vm/vm_phys.c
1.8 +9 -0 src/sys/vm/vm_phys.h
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201007272035.o6RKZ0ch008899>
