Re: Linux 2.6.9-ac16

Chuck Ebbert
2004-12-21T09:20:06Z

Chris Friesen wrote:

> Chuck Ebbert wrote:
>
> > Nobody has found an answer for the freezes, which persist even in the latest
> > 2.6.10-rc but there's a vm_writeout throttling patch in -ac that I haven't tried.
>
> Heh. Figures. Those freezes are what bothers me most, since I've already got a
> patch that protects critical processes from being OOM-killed as long as they're
> sane.

I backported this patch to 2.6.9 but haven't tested it yet. It requires the
'spurious oomkill' patch I posted earlier in this thread. Early reports
are that it stops the freezes during heavy paging.

Also appended is a newer patch from Andrew that may help as well. It's obviously
correct but I haven't done anything with it yet so it may not apply to 2.6.9.

===================================================================================
# mm_swap_token_timeout.patch
#
# Disable token-based thrashing control when token
# timeout is zero and make zero the default value.
#
# NOTE: On 2.6.9 there is no way to change the
# token timeout at runtime like there is on 2.6.10.
# You must edit mm/thrash.c instead.
#
# Patch by Con Kolivas for 2.6.10-rc3 20 Dec 2004
# Backported to 2.6.9 by Chuck Ebbert
#
--- 2.6.9.1/mm/rmap.c
+++ 2.6.9.2/mm/rmap.c
@@ -395,6 +395,9 @@ int page_referenced(struct page *page, i
{
int referenced = 0;

+ if (!SWAP_TOKEN_TIMEOUT)
+ ignore_token = 1;
+
if (page_test_and_clear_young(page))
referenced++;

--- 2.6.9.1/mm/thrash.c
+++ 2.6.9.2/mm/thrash.c
@@ -19,7 +19,10 @@ unsigned long swap_token_check;
struct mm_struct * swap_token_mm = &init_mm;

#define SWAP_TOKEN_CHECK_INTERVAL (HZ * 2)
-#define SWAP_TOKEN_TIMEOUT (HZ * 300)
+#define SWAP_TOKEN_TIMEOUT 0
+/*
+ * Currently disabled; Needs further code to work at HZ * 300.
+ */

/*
* Take the token away if the process had no page faults
===================================================================================
# We haven't been incrementing local variable total_scanned since the
# scan_control stuff went in. That broke kswapd throttling.
#
# Signed-off-by: Andrew Morton <akpm@osdl.org>
# ---
#
# 25-akpm/mm/vmscan.c | 1 +
# 1 files changed, 1 insertion(+)
#
# diff -puN mm/vmscan.c~vmscan-total_scanned-fix mm/vmscan.c
--- 25/mm/vmscan.c~vmscan-total_scanned-fix 2004-12-20 12:47:25.855643408 -0800
+++ 25-akpm/mm/vmscan.c 2004-12-20 12:47:25.860642648 -0800
@@ -1063,6 +1063,7 @@ scan:
shrink_slab(sc.nr_scanned, GFP_KERNEL, lru_pages);
sc.nr_reclaimed += reclaim_state->reclaimed_slab;
total_reclaimed += sc.nr_reclaimed;
+ total_scanned += sc.nr_scanned;
if (zone->all_unreclaimable)
continue;
if (zone->pages_scanned >= (zone->nr_active +
===================================================================================
--
Please take it as a sign of my infinite respect for you,
that I insist on you doing all the work.
-- Rusty Russell