Messages in this thread |  | | | Date | Tue, 19 Oct 2010 10:35:37 +0800 | | From | Wu Fengguang <> | | Subject | Re: Deadlock possibly caused by too_many_isolated. |
| |
> @@ -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
|  |