aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/vm/numa
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-16 18:20:36 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-16 18:20:36 -0400
commit1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch)
tree0bba044c4ce775e45a88a51686b5d9f90697ea9d /Documentation/vm/numa
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
Diffstat (limited to 'Documentation/vm/numa')
-rw-r--r--Documentation/vm/numa41
1 files changed, 41 insertions, 0 deletions
diff --git a/Documentation/vm/numa b/Documentation/vm/numa
new file mode 100644
index 000000000000..4b8db1bd3b78
--- /dev/null
+++ b/Documentation/vm/numa
@@ -0,0 +1,41 @@
1Started Nov 1999 by Kanoj Sarcar <kanoj@sgi.com>
2
3The intent of this file is to have an uptodate, running commentary
4from different people about NUMA specific code in the Linux vm.
5
6What is NUMA? It is an architecture where the memory access times
7for different regions of memory from a given processor varies
8according to the "distance" of the memory region from the processor.
9Each region of memory to which access times are the same from any
10cpu, is called a node. On such architectures, it is beneficial if
11the kernel tries to minimize inter node communications. Schemes
12for this range from kernel text and read-only data replication
13across nodes, and trying to house all the data structures that
14key components of the kernel need on memory on that node.
15
16Currently, all the numa support is to provide efficient handling
17of widely discontiguous physical memory, so architectures which
18are not NUMA but can have huge holes in the physical address space
19can use the same code. All this code is bracketed by CONFIG_DISCONTIGMEM.
20
21The initial port includes NUMAizing the bootmem allocator code by
22encapsulating all the pieces of information into a bootmem_data_t
23structure. Node specific calls have been added to the allocator.
24In theory, any platform which uses the bootmem allocator should
25be able to to put the bootmem and mem_map data structures anywhere
26it deems best.
27
28Each node's page allocation data structures have also been encapsulated
29into a pg_data_t. The bootmem_data_t is just one part of this. To
30make the code look uniform between NUMA and regular UMA platforms,
31UMA platforms have a statically allocated pg_data_t too (contig_page_data).
32For the sake of uniformity, the function num_online_nodes() is also defined
33for all platforms. As we run benchmarks, we might decide to NUMAize
34more variables like low_on_memory, nr_free_pages etc into the pg_data_t.
35
36The NUMA aware page allocation code currently tries to allocate pages
37from different nodes in a round robin manner. This will be changed to
38do concentratic circle search, starting from current node, once the
39NUMA port achieves more maturity. The call alloc_pages_node has been
40added, so that drivers can make the call and not worry about whether
41it is running on a NUMA or UMA platform.