numa
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
- Started Nov 1999 by Kanoj Sarcar <kanoj@sgi.com>
- The intent of this file is to have an uptodate, running commentary
- from different people about NUMA specific code in the Linux vm.
- What is NUMA? It is an architecture where the memory access times
- for different regions of memory from a given processor varies
- according to the "distance" of the memory region from the processor.
- Each region of memory to which access times are the same from any
- cpu, is called a node. On such architectures, it is beneficial if
- the kernel tries to minimize inter node communications. Schemes
- for this range from kernel text and read-only data replication
- across nodes, and trying to house all the data structures that
- key components of the kernel need on memory on that node.
- Currently, all the numa support is to provide efficient handling
- of widely discontiguous physical memory, so architectures which
- are not NUMA but can have huge holes in the physical address space
- can use the same code. All this code is bracketed by CONFIG_DISCONTIGMEM.
- The initial port includes NUMAizing the bootmem allocator code by
- encapsulating all the pieces of information into a bootmem_data_t
- structure. Node specific calls have been added to the allocator.
- In theory, any platform which uses the bootmem allocator should
- be able to to put the bootmem and mem_map data structures anywhere
- it deems best.
- Each node's page allocation data structures have also been encapsulated
- into a pg_data_t. The bootmem_data_t is just one part of this. To
- make the code look uniform between NUMA and regular UMA platforms,
- UMA platforms have a statically allocated pg_data_t too (contig_page_data).
- For the sake of uniformity, the variable "numnodes" is also defined
- for all platforms. As we run benchmarks, we might decide to NUMAize
- more variables like low_on_memory, nr_free_pages etc into the pg_data_t.
- The NUMA aware page allocation code currently tries to allocate pages
- from different nodes in a round robin manner. This will be changed to
- do concentratic circle search, starting from current node, once the
- NUMA port achieves more maturity. The call alloc_pages_node has been
- added, so that drivers can make the call and not worry about whether
- it is running on a NUMA or UMA platform.