diff options
| author | Andrew Morton <akpm@digeo.com> | 2002-10-07 20:38:46 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-10-07 20:38:46 -0700 |
| commit | 76a0722ffe4c7b7832ec07f9e9de1c6e58c31d74 (patch) | |
| tree | 905f7938bacc0a3053d0e571c0c08338cb76a331 /kernel | |
| parent | 4b4b90a7f898c69855751a7ac6554955f9eeef13 (diff) | |
[PATCH] node-local mem_map for ia32 discontigmem
From Martin Bligh.
This patch remaps the lmem_map (struct page) arrays for each node onto
their own nodes. This is non-trivial, since all of ZONE_NORMAL, and
hence permanently mapped KVA resides on node 0.
Very early in the boot sequence, it calculates the size of the lmem_map
arrays (rounding up to the nearest large page size), and reserves a
suitable amount of permanent KVA by shifting down max_low_pfn to create
a gap between max_low_pfn and highstart_pfn (both of which are normally
about 896Mb).
It then uses the new set_pmd_pfn function to set up the pmds correctly
so that the large pages point at the physical addresses reserved from
the remote nodes.
Tested on NUMA-Q and some ratty old i386 PC kicking around under my
desk (on 2.5.36-mm1). Was good for a 20% improvement in system time on
kernel compile when I initially benchmarked it against 2.5.32 or
something - due to a reduction in inter-node traffic, better
interconnect cache usage and locality. Should have no effect on any
system other than i386 NUMA systems.
Diffstat (limited to 'kernel')
0 files changed, 0 insertions, 0 deletions
