Re: [PATCH 1/2] vmscan: promote shared file mapped pages

From: Konstantin Khlebnikov
Date: Mon Aug 08 2011 - 08:51:45 EST


Pekka Enberg wrote:
On Mon, Aug 8, 2011 at 3:18 PM, Konstantin Khlebnikov
<khlebnikov@xxxxxxxxxxxxx> wrote:
Pekka Enberg wrote:

Hi Konstantin,

On Mon, Aug 8, 2011 at 2:06 PM, Konstantin Khlebnikov
<khlebnikov@xxxxxxxxxx> wrote:

Commit v2.6.33-5448-g6457474 (vmscan: detect mapped file pages used only
once)
greatly decreases lifetime of single-used mapped file pages.
Unfortunately it also decreases life time of all shared mapped file
pages.
Because after commit v2.6.28-6130-gbf3f3bc (mm: don't mark_page_accessed
in fault path)
page-fault handler does not mark page active or even referenced.

Thus page_check_references() activates file page only if it was used
twice while
it stays in inactive list, meanwhile it activates anon pages after first
access.
Inactive list can be small enough, this way reclaimer can accidentally
throw away any widely used page if it wasn't used twice in short period.

After this patch page_check_references() also activate file mapped page
at first
inactive list scan if this page is already used multiple times via
several ptes.

Signed-off-by: Konstantin Khlebnikov<khlebnikov@xxxxxxxxxx>

Both patches seem reasonable but the changelogs don't really explain
why you're doing the changes. How did you find out about the problem?
Is there some workload that's affected? How did you test your changes?


I found this while trying to fix degragation in rhel6 (~2.6.32) from rhel5
(~2.6.18).
There a complete mess with>100 web/mail/spam/ftp containers,
they share all their files but there a lot of anonymous pages:
~500mb shared file mapped memory and 15-20Gb non-shared anonymous memory.
In this situation major-pagefaults are very costly, because all containers
share the same page.
In my load kernel created a disproportionate pressure on the file memory,
compared with the anonymous,
they equaled only if I raise swappiness up to 150 =)

These patches actually wasn't helped a lot in my problem,
but I saw noticable (10-20 times) reduce in count and average time of
major-pagefault in file-mapped areas.

Actually both patches are fixes for commit v2.6.33-5448-g6457474,
because it was aimed at one scenario (singly used pages),
but it breaks the logic in other scenarios (shared and/or executable pages)

It'd be nice to have such details in the changelogs. FWIW,

It's not quite honest, I did not do any measurements in the mainline kernel,
I only boot 3.1-rc1 with them on my laptop.
It would be nice to repeat the measurements from v2.6.30-5507-g8cab475,
but I do not have time for that right now.


Acked-by: Pekka Enberg<penberg@xxxxxxxxxx>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/