Re: [1/13] add __GFP_NOKILL

Andrew Morton
2002-09-26T06:26:05Z

Andrea just disabled out_of_memory().

We need to find out why these oom-killings are happening
in the first place. They probably all have a common cause.

Please arrange to dump the state of all zones and page_states[]
when it happens.

Adding:

static struct page_state wli_state;

get_page_state(struct page_state *ps)
{
...
*wli = *ps;
return;
}

in page_alloc.c makes the latter easier.

As we discussed, be suspicious of your fallback lists. Otherwise
it _might_ be the zone-unaware throttling. I want to know, please,
before I go and add lots of sleep/wakeup gunk to try_to_free_pages()
and end_page_writeback().

Critical question: how much dirty memory is in the normal
zone? To determine this, look at the last three functions
in mm/page_writeback.c. Make them do

atomic_inc/dec(&page_zone(page)->nr-dirty);

thanks.

Also it is important to know the size of the active/inactive
lists in those zones.