Skip to content

RFC Reduce MAX_NR_ZONES and remove useless zones.

Christoph Lameter lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest8 patches 23 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/8Rework mmzone.h: Make DMA32 and HIGHMEM optionalarch/ia64/Kconfig arch/x86_64/Kconfig include/linux/gfp.h +3 more+108 -461 reply
2/8Make display of highmem counters conditional on CONFIG_HIGHMEMdrivers/base/node.c fs/proc/proc_misc.c mm/page_alloc.c+12 -00 replies
3/8Move HIGHMEM counter into highmem.c/.hinclude/linux/highmem.h include/linux/swap.h mm/highmem.c +2 more+5 -26 replies
4/8Remove display of counters for not available zonesinclude/linux/vmstat.h mm/vmstat.c+28 -240 replies
5/8swap_prefetch: Make use of ZONE_HIGHMEM dependend on CONFIG_HIGHMEMmm/swap_prefetch.c+4 -20 replies
6/8Fix MAX_NR_ZONES array initializations in various archesarch/alpha/mm/init.c arch/frv/mm/init.c arch/h8300/mm/init.c +8 more+11 -110 replies
7/8Fix strange uses of MAX_NR_ZONESarch/i386/mm/init.c arch/x86_64/mm/init.c+2 -20 replies
8/8Fix i386 SRAT check for MAX_NR_ZONESmm/swap_prefetch.c+4 -22 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [RFC 0/8] Reduce MAX_NR_ZONES and remove useless zones.

I keep seeing zones on various platforms that are never used and wonder why we compile support for them into the kernel.

IA64 on SGI for example only uses ZONE_DMA other IA64 platforms can also use ZONE_NORMAL. So we have 50% useless zones. Large amounts of memory go to waste with systems with a few hundred nodes and a few hundred processors.

My x86_64 system seems to only use ZONE_DMA and ZONE_DMA32. I never see pages in ZONE_NORMAL (probably because I have less than 4G memory).

And ZONE_HIGHMEM on a 64 bit system? We can address all memory. I keep seeing all the highmem counters as zero on ia64 and x86_64 and even on i386 systems.

Then it seems that ZONE_DMA32 is only used on x86_64 but we compile it into the kernel for all platforms.

This patch makes ZONE_DMA32 and ZONE_HIGHMEM support optional. MAX_NR_ZONES will be 2 for most non i386 platforms and even for i386 without CONFIG_HIGHMEM set.

I tested this on IA64 and x86_64. Compiles fine on i386 with and without CONFIG_HIGHMEM set.

The patchset consists of 8 patches that are following this message.

One could go even further than this patchset and also make ZONE_DMA optional because some platforms do not need a separate DMA zone and can do DMA to all of memory. This could reduce MAX_NR_ZONES to 1.