Re: Deadlock possibly caused by too_many_isolated.

From: Wu Fengguang
Date: Mon Oct 18 2010 - 22:35:45 EST


> @@ -2054,10 +2069,11 @@ rebalance:
> goto got_pg;
>
> /*
> - * If we failed to make any progress reclaiming, then we are
> - * running out of options and have to consider going OOM
> + * If we failed to make any progress reclaiming and there aren't
> + * many parallel reclaiming, then we are unning out of options and
> + * have to consider going OOM
> */
> - if (!did_some_progress) {
> + if (!did_some_progress && !too_many_isolated_zone(preferred_zone)) {
> if ((gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY)) {
> if (oom_killer_disabled)
> goto nopage;

This is simply wrong.

It disabled this block for 99% system because there won't be enough
tasks to make (!too_many_isolated_zone == true). As a result the LRU
will be scanned like mad and no task get OOMed when it should be.

Thanks,
Fengguang
--
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/