Re: Kernel falls apart under light memory pressure (i.e. linking vmlinux)

From: Andrew Lutomirski
Date: Fri May 20 2011 - 12:01:37 EST


On Fri, May 20, 2011 at 11:33 AM, Minchan Kim <minchan.kim@xxxxxxxxx> wrote:

> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index 8bfd450..a5c01e9 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -1430,7 +1430,10 @@ shrink_inactive_list(unsigned long nr_to_scan, struct zone *zone,
>
>        /* Check if we should syncronously wait for writeback */
>        if (should_reclaim_stall(nr_taken, nr_reclaimed, priority, sc)) {
> +               unsigned long nr_active;
>                set_reclaim_mode(priority, sc, true);
> +               nr_active = clear_active_flags(&page_list, NULL);
> +               count_vm_events(PGDEACTIVATE, nr_active);
>                nr_reclaimed += shrink_page_list(&page_list, zone, sc);
>        }
>
> --

I'm now running that patch *without* the pgdat_balanced fix or the
need_resched check. The VM_BUG_ON doesn't happen but I still get
incorrect OOM kills.

However, if I replace the check with:

if (false &&should_reclaim_stall(nr_taken, nr_reclaimed, priority, sc)) {

then my system lags under bad memory pressure but recovers without
OOMs or oopses.

Is that expected?

--Andy

> 1.7.1
>
> --
> Kind regards,
> Minchan Kim
>
--
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/