Re: [BENCHMARKS] Namesys VM patches improve kbuild

Nick Piggin
2004-01-22T23:01:07Z

Nikita Danilov wrote:

>Andrew Morton writes:
> > Nick Piggin <piggin@cyberone.com.au> wrote:
> > >
> > > Hi,
> > >
> > > The two namesys patches help kbuild quite a lot here.
> > > http://www.kerneltrap.org/~npiggin/vm/1/
> > >
> > > The patches can be found at
> > > http://thebsh.namesys.com/snapshots/LATEST/extra/
> >
> > I played with these back in July. Had a few stability problems then but
> > yes, they did speed up some workloads a lot.
>
>Yes, there were glaring bugs at that time, and they were fixed. I am
>using these patches all the time while stressing/testing reiser4.
>
> >
> >
> > > I don't have much to comment on the patches. They do include
> > > some cleanup stuff which should be broken out.
> >
>
>I think that shrink_list() is way too big, and too complex. All
>pre-writepage checks and ->writepage() call handling itself fits nicely
>to being separated into special function.
>
> > Yup. <dig, dig> See below - it's six months old though.
> >
> > > I don't really understand the dont-rotate-active-list patch:
> > > I don't see why we're losing LRU information because the pages
> > > that go to the head of the active list get their referenced
> > > bits cleared.
> >
> > Yes, I do think that the "LRU" is a bit of a misnomer - it's very
> > approximate and only really suits simple workloads. I suspect that once
> > things get hot and heavy the "lru" is only four-deep:
> > unreferenced/inactive, referenced/inactive, unreferenced/active and
> > referenced/active.
>
>Note that during referenced/inactive->unreferenced/active transition
>page is moved to the _head_ of the active list.
>
>refill_inactive_zone(), on the other hand, takes cold (not-referenced)
>mapped pages from the tail of active list and throws them to the head
>too. As a result:
>
>1. time that it takes for a page to migrate from the head to the tail of
>the active list varies, because irrelevant cold pages are added to the
>head of it. Hence, page_referenced() check at the tail of active list
>becomes worse estimation of the page hotness.
>

But those cold mapped pages are basically ignored until the
reclaim_mapped threshold, however they do continue to have their
referenced bits cleared - hence page_referenced check should
become a better estimation when reclaim_mapped is reached, right?

>
>2. CPU usage increases, because until reclaim_mapped level of pressure
>is reached, unreferenced mapped pages are scanned over and over again.
>

Yes I agree here.