Revision 494de90098784b8e2797598cefdd34188884ec2e authored by Mel Gorman on 03 July 2008, 04:27:51 UTC, committed by Linus Torvalds on 03 July 2008, 16:22:59 UTC
The non-NUMA case of build_zonelist_cache() would initialize the
zlcache_ptr for both node_zonelists[] to NULL.

Which is problematic, since non-NUMA only has a single node_zonelists[]
entry, and trying to zero the non-existent second one just overwrote the
nr_zones field instead.

As kswapd uses this value to determine what reclaim work is necessary,
the result is that kswapd never reclaims.  This causes processes to
stall frequently in low-memory situations as they always direct reclaim.
This patch initialises zlcache_ptr correctly.

Signed-off-by: Mel Gorman <mel@csn.ul.ie>
Tested-by: Dan Williams <dan.j.williams@intel.com>
[ Simplified patch a bit ]
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent c461a97
Raw File
numastat.txt

Numa policy hit/miss statistics

/sys/devices/system/node/node*/numastat

All units are pages. Hugepages have separate counters.

numa_hit			A process wanted to allocate memory from this node,
					and succeeded.
numa_miss			A process wanted to allocate memory from this node,
					but ended up with memory from another.
numa_foreign		A process wanted to allocate on another node,
				    but ended up with memory from this one.
local_node			A process ran on this node and got memory from it.
other_node			A process ran on this node and got memory from another node.
interleave_hit 		Interleaving wanted to allocate from this node
					and succeeded.

For easier reading you can use the numastat utility from the numactl package
(ftp://ftp.suse.com/pub/people/ak/numa/numactl*). Note that it only works
well right now on machines with a small number of CPUs.

back to top