a3870a1826
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 |
||
---|---|---|
.. | ||
pc | ||
_align.h | ||
_bus.h | ||
_inttypes.h | ||
_limits.h | ||
_regset.h | ||
_stdint.h | ||
_types.h | ||
acpica_machdep.h | ||
asm.h | ||
atomic.h | ||
bootinfo.h | ||
bus_dma.h | ||
bus.h | ||
clock.h | ||
cpu.h | ||
cpufunc.h | ||
db_machdep.h | ||
dig64.h | ||
efi.h | ||
elf.h | ||
endian.h | ||
exec.h | ||
float.h | ||
floatingpoint.h | ||
fpu.h | ||
frame.h | ||
gdb_machdep.h | ||
ia64_cpu.h | ||
ieee.h | ||
ieeefp.h | ||
in_cksum.h | ||
intr.h | ||
intrcnt.h | ||
iodev.h | ||
kdb.h | ||
limits.h | ||
mca.h | ||
md_var.h | ||
memdev.h | ||
mutex.h | ||
pal.h | ||
param.h | ||
pcb.h | ||
pci_cfgreg.h | ||
pcpu.h | ||
pmap.h | ||
pmc_mdep.h | ||
proc.h | ||
profile.h | ||
pte.h | ||
ptrace.h | ||
reg.h | ||
reloc.h | ||
resource.h | ||
runq.h | ||
sal.h | ||
setjmp.h | ||
sf_buf.h | ||
sigframe.h | ||
signal.h | ||
smp.h | ||
stdarg.h | ||
sysarch.h | ||
ucontext.h | ||
unwind.h | ||
varargs.h | ||
vm.h | ||
vmparam.h |