Messages in this thread Patch in this message |  | | Date | 5 Nov 2001 00:07:53 +0100 | From | jogi@planetzo ... | Subject | Re: Linux-2.4.14-pre8.. |
| |
On Sun, Nov 04, 2001 at 10:35:35PM +0100, Stephan von Krawczynski wrote: > On 4 Nov 2001 22:06:41 +0100 jogi@planetzork.ping.de wrote: > > > On Sun, Nov 04, 2001 at 10:53:43AM -0800, Linus Torvalds wrote: > > > > Hello, > > > > with the complete patch (s.b.) the kernel did kill processes while running > > make -j100. So I tried only the second part of the patch (the SetPage-part) > > and here are the results (this time only the make -j100 part: > > > > 2.4.14-pre8vmscan2: 6:12.06 > > 2.4.14-pre8vmscan2: 6:41.43 > > 2.4.14-pre8vmscan2: 6:53.22 > > 2.4.14-pre8vmscan2: 7:12.03 > > 2.4.14-pre8vmscan2: 5:49.82 > > Hello,
Hello Stephan,
> can you try attached patch together with pre6 or pre7? I don't know if it > applies to pre8. > And post the results in the mailinglist please.
I tried the patch you sent me and here are the results with -pre8+patch:
2.4.14-pre8vmscan3: 6:53.11 2.4.14-pre8vmscan3: 6:40.20 2.4.14-pre8vmscan3: 9:52.39 2.4.14-pre8vmscan3: 6:16.98 2.4.14-pre8vmscan3: 6:48.35
Regards,
Jogi
PS: The patch Stephan sent me is attached. PPS: The second chunk did not apply cleanly so I applied it by hand.
--
Well, yeah ... I suppose there's no point in getting greedy, is there?
<< Calvin & Hobbes >> --- linux-orig/mm/vmscan.c Thu Nov 1 15:33:58 2001 +++ linux/mm/vmscan.c Fri Nov 2 13:50:31 2001 @@ -290,7 +290,7 @@ static int FASTCALL(swap_out(unsigned int priority, unsigned int gfp_mask, zone_t * classzone)); static int swap_out(unsigned int priority, unsigned int gfp_mask, zone_t * classzone) { - int counter, nr_pages = SWAP_CLUSTER_MAX; + int counter, nr_pages = SWAP_CLUSTER_MAX * DEF_PRIORITY / priority; struct mm_struct *mm; counter = mmlist_nr; @@ -334,7 +334,7 @@ { struct list_head * entry; int max_scan = nr_inactive_pages / priority; - int max_mapped = nr_pages*10; + int max_mapped = SWAP_CLUSTER_MAX * DEF_PRIORITY / priority; spin_lock(&pagemap_lru_lock); while (--max_scan >= 0 && (entry = inactive_list.prev) != &inactive_list) { @@ -469,16 +469,10 @@ spin_unlock(&pagecache_lock); UnlockPage(page); page_mapped: - if (--max_mapped >= 0) - continue; + if (max_mapped > 0) + max_mapped--; + continue; - /* - * Alert! We've found too many mapped pages on the - * inactive list, so we start swapping out now! - */ - spin_unlock(&pagemap_lru_lock); - swap_out(priority, gfp_mask, classzone); - return nr_pages; } /* @@ -514,6 +508,14 @@ break; } spin_unlock(&pagemap_lru_lock); + + /* + * Alert! We've found too many mapped pages on the + * inactive list, so we start swapping out - delayed! + * -skraw + */ + if (max_mapped==0 && nr_pages>0) + swap_out(priority, gfp_mask, classzone); return nr_pages; } |  |