Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
NUMA(4)			    Kernel Interfaces Manual		       NUMA(4)

NAME
       NUMA -- Non-Uniform Memory Access

SYNOPSIS
       options MAXMEMDOM
       options NUMA

DESCRIPTION
       Non-Uniform  Memory  Access is a	computer architecture design which in-
       volves unequal costs between processors,	memory and  IO	devices	 in  a
       given system.

       In a NUMA architecture, the latency to access specific memory or	IO de-
       vices depends upon which	processor the memory or	device is attached to.
       Accessing  memory  local	to a processor is faster than accessing	memory
       that is connected to one	of the other processors.   FreeBSD  implements
       NUMA-aware  memory  allocation policies.	 By default it attempts	to en-
       sure that allocations are balanced across each domain.  Users may over-
       ride the	default	domain selection policy	using cpuset(1).

       NUMA support is enabled when the	NUMA option is specified in the	kernel
       configuration file.  Each  platform  defines  the  MAXMEMDOM  constant,
       which  specifies	 the  maximum  number of supported NUMA	domains.  This
       constant	may be specified in the	kernel configuration file.  NUMA  sup-
       port  can be disabled at	boot time by setting the vm.numa.disabled tun-
       able to 1.  Other values	for this tunable are currently ignored.

       Thread  and   process   NUMA   policies	 are   controlled   with   the
       cpuset_getdomain(2)  and	 cpuset_setdomain(2)  syscalls.	 The cpuset(1)
       tool is available for starting processes	with a non-default policy,  or
       to  change the policy of	an existing thread or process.	See SMP(4) for
       information about CPU to	domain mapping.

       Systems with non-uniform	access to I/O devices may mark	those  devices
       with  the local VM domain identifier.  Drivers can find out their local
       domain information by calling bus_get_domain(9).

   MIB Variables
       The operation of	NUMA is	controlled and exposes information with	 these
       sysctl(8) MIB variables:

       vm.ndomains
	       The number of VM	domains	which have been	detected.

       vm.phys_locality
	       A  table	indicating the relative	cost of	each VM	domain to each
	       other.  A value of 10 indicates equal  cost.   A	 value	of  -1
	       means the locality map is not available or no locality informa-
	       tion is available.

       vm.phys_segs
	       The map of physical memory, grouped by VM domain.

IMPLEMENTATION NOTES
       The  current  NUMA implementation is VM-focused.	 The hardware NUMA do-
       mains are mapped	into a contiguous, non-sparse VM domain	space,	start-
       ing from	0.  Thus, VM domain information	(for example, the domain iden-
       tifier)	is  not	 necessarily the same as is found in the hardware spe-
       cific information.  Policy information  is  available  in  both	struct
       thread and struct proc.

SEE ALSO
       cpuset(1),    cpuset_getaffinity(2),   cpuset_setaffinity(2),   SMP(4),
       bus_get_domain(9)

HISTORY
       NUMA first appeared in FreeBSD 9.0 as a first-touch  allocation	policy
       with  a	fail-over  to round-robin allocation and was not configurable.
       It was then modified in FreeBSD 10.0 to implement a round-robin alloca-
       tion policy and was also	not configurable.

       The  numa_getaffinity(2)	 and  numa_setaffinity(2)  syscalls  and   the
       numactl(1)  tool	 first	appeared  in  FreeBSD 11.0 and were removed in
       FreeBSD 12.0.  The current implementation appeared in FreeBSD 12.0.

AUTHORS
       This manual page	written	by Adrian Chadd	<adrian@FreeBSD.org>.

NOTES
       No statistics are kept to indicate how often NUMA  allocation  policies
       succeed or fail.

FreeBSD	13.2		       October 22, 2018			       NUMA(4)

NAME | SYNOPSIS | DESCRIPTION | IMPLEMENTATION NOTES | SEE ALSO | HISTORY | AUTHORS | NOTES

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=numa&manpath=FreeBSD+14.2-RELEASE+and+Ports>

home | help