Messages in this thread Patch in this message | | | Date | Sat, 5 Jan 2002 16:17:27 +0100 | From | Stephan von Krawczynski <> | Subject | Re: 1gb RAM + 1gb SWAP + make -j bzImage = OOM |
| |
On Fri, 4 Jan 2002 17:24:18 -0800 Phil Oester <kernel@theoesters.com> wrote:
> On Fri, Jan 04, 2002 at 04:42:43PM -0800, Nicholas Knight wrote: > > The one catch is that -j is specified without a number. > > [snip superfluous description of what 'make -j' implies] > > > number, your system is dead. A user issue because it seems the user is > > using the option without fully comprehending the consequences. > > eh? Trust me - i understand the implications of make -j. It's not an unreasonable test, especially on a machine with 1gb ram/swap. For reference, read Rik's email regarding his reverse VM patch:> > http://marc.theaimsgroup.com/?l=linux-kernel&m=101007711817127&w=2 > > Might be enlightening
I guess this testcase is somewhat driving in the direction of Martins test with some setis running, meaning it has a lot of standard processes that need files and try to work out something. Can you try Martins patch at your side, redo the -j story and give us a result? I attached it for an easy go :-)
Thanks, Stephan
--- linux.virgin/mm/vmscan.c Mon Dec 31 12:46:25 2001 +++ linux/mm/vmscan.c Thu Jan 3 19:43:02 2002 @@ -394,9 +394,9 @@ if (PageDirty(page) && is_page_cache_freeable(page) && page->mapping) { /* * It is not critical here to write it only if - * the page is unmapped beause any direct writer + * the page is unmapped because any direct writer * like O_DIRECT would set the PG_dirty bitflag - * on the phisical page after having successfully + * on the physical page after having successfully * pinned it and after the I/O to the page is finished, * so the direct writes to the page cannot get lost. */ @@ -480,11 +480,14 @@ /* * Alert! We've found too many mapped pages on the - * inactive list, so we start swapping out now! + * inactive list. + * Move referenced pages to the active list. */ - spin_unlock(&pagemap_lru_lock); - swap_out(priority, gfp_mask, classzone); - return nr_pages; + if (PageReferenced(page)) { + del_page_from_inactive_list(page); + add_page_to_active_list(page); + } + continue; } /* @@ -521,6 +524,9 @@ } spin_unlock(&pagemap_lru_lock); + if (max_mapped <= 0 && nr_pages > 0) + swap_out(priority, gfp_mask, classzone); + return nr_pages; } | |