Re: Linux 2.6.9-ac16

Nick Piggin
2004-12-22T00:00:26Z

Any chance this can get into 2.6 before Linus fires off 2.6.10?

Chuck Ebbert wrote:
> Chuck Ebbert wrote:
>
>
>> 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.
>
>
> OK here's one that actually compiles. (3AM was not a good time to be
> making patches.)
>
> # mm_swap_token_disable.patch
> # include/linux/swap.h -0 +1
> # mm/rmap.c -0 +3
> # mm/thrash.c -1 +4
> #
> # NOTE: On 2.6.9 there is no sysctl to change
> # swap_token_default_timeout.
> #
> # Based on a patch by Con Kolivas for 2.6.10
> # Backported to 2.6.9 by Chuck Ebbert <76306.1226@compuserve.com>
> #
> --- 2.6.9.1/include/linux/swap.h
> +++ 2.6.9.2/include/linux/swap.h
> @@ -230,6 +230,7 @@
>
> /* linux/mm/thrash.c */
> extern struct mm_struct * swap_token_mm;
> +extern unsigned long swap_token_default_timeout;
> extern void grab_swap_token(void);
> extern void __put_swap_token(struct mm_struct *);
>
> --- 2.6.9.1/mm/rmap.c
> +++ 2.6.9.2/mm/rmap.c
> @@ -394,6 +394,9 @@ int page_referenced(struct page *page, i
> {
> int referenced = 0;
>
> + if (!swap_token_default_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,11 @@ 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.
> + */
> +unsigned long swap_token_default_timeout = SWAP_TOKEN_TIMEOUT;
>
> /*
> * Take the token away if the process had no page faults
> _