Introduction:

====================================================================================================================

NUMA ( Non-Uniform Memory Access ) is topology in which, time taken in accessing a memory dependes upon
the local node or remote node memory. With the help of numa libraries or numactl command we could able
to use the numa topology such that we can run an application on a specified node ( node affinity ) and
also, we can apply memory policies such that an application running on a node can get memory alloctaion
from any specified nodes memory. So, we can use the policies offered by numa libraries or numactl command
to either decrease the memory latencies or increase the memory bandwidth by properly applying polcies.

Please refer http://lse.sourceforge.net/numa/ to know the basics of numa and refer
http://www.novell.com/collateral/4621437/4621437.pdf to understand the usage of numactl and numa libraries.

We can always get the latest package from http://oss.sgi.com/projects/libnuma/.

Testcase Description:
====================================================================================================================
numa01.sh shell script holds all the numa testcases and support_numa.c will help numa01.sh as and when needed.

Testcase1:
Verifies the node affinity and memory affinity by running the support_numa process which will allocate 1MB of memory.

TestCase2:
Verifies the preferred node memory policy which will allocate memory from the node we specify. This
testcase will use the support_numa process for the verfication.

TestCase3:
Verifies the preferred node memory policy which will allocate shared memory from the node we specify. This
testcase will use the support_numa process for the verfication.

TestCase4:
Verifies the memory interleaving policy which will distribute the memory evenly among all nodes. This
testcase will use the support_numa process for the verfication.

TestCase5:
Verifies the memory interleaving policy which will distribute the memory evenly among all nodes. This
testcase will use the support_numa process for the verfication.

TestCase6:
Verifies the physical cpu affinity which runs the process support_numa on the specified physical cpu number.

TestCase7:
Verifies the local allocation policy which always allocates memory from the local node. This testcase
will use the support_numa process for the verfication.

TestCase8:
Verifies the memory interleaving policy which will distribute the memory evenly among all nodes. This
testcase will use memhog for the verfication.

TestCase9:
Verifies the numa_node_size api with hardware checking.

TestCase10:
Verifieds the NUMA migratepages policy.

TestCase11:
Verifies the hugepage memory allocated from the node we specify.

TestCase12:
Verifies the preferred node policy with THP memory allocating from the node we specify.

Pre-requisites
====================================================================================================================
 * libnuma should be installed on the NUMA machine before executing theses testcases
 * Testcases will not run by default in LTP-runall, they also skip on non-numa machines
