Re: [PATCH 4/4] zone_reclaim_mode is always 0 by default

KOSAKI Motohiro
2009-05-14T08:20:50Z

(cc to Robin)

> KOSAKI Motohiro wrote:
> > Subject: [PATCH] zone_reclaim_mode is always 0 by default
> >
> > Current linux policy is, if the machine has large remote node distance,
> > zone_reclaim_mode is enabled by default because we've be able to assume to
> > large distance mean large server until recently.
> >
> > Unfrotunately, recent modern x86 CPU (e.g. Core i7, Opeteron) have P2P transport
> > memory controller. IOW it's NUMA from software view.
> >
> > Some Core i7 machine has large remote node distance and zone_reclaim don't
> > fit desktop and small file server. it cause performance degression.
> >
> > Thus, zone_reclaim == 0 is better by default. sorry, HPC gusy.
> > you need to turn zone_reclaim_mode on manually now.
>
> I'll believe that it causes a performance regression with the
> old zone_reclaim behaviour, however the way you tweaked
> zone_reclaim should make it behave a lot better, no?

Unfortunately no.
zone reclaim has two weakness by design.

1.
zone reclaim don't works well when workingset size > local node size.
but it can happen easily on small machine.
if it happen, zone reclaim drop own process's memory.

Plus, zone reclaim also doesn't fit DB server. its process has large
workingset.

2.
zone reclaim have inter zone balancing issue.

example: x86_64 2node 8G machine has following zone assignment

zone 0 (DMA32): 3GB
zone 0 (Normal): 1GB
zone 1 (Normal): 4GB

if the page is allocated from DMA32, you are lucky. DMA32 isn't reclaimed
so freqently. but if from zone0 Normal, you are unlucky.
it is very frequent reclaimed although it is small than other zone.

I know my patch change large server default. but I believe linux
default kernel parameter adapt to desktop and entry machine.