Messages in this thread Patch in this message | | | Date | Sun, 8 Jun 2003 10:26:26 +0800 | From | hugang <> | Subject | Re: software suspend in 2.5.70-mm3. |
| |
On Tue, 3 Jun 2003 20:55:51 +0200 Pavel Machek <pavel@ucw.cz> wrote:
> Locating Ben's patch and forward-porting > it would be way better...
I was tried Ben's patch, It's cool, Very stable in my laptop.
Here is two patch. * suspend.c can swap more pages into swap space. * vmscan.c can make swap faster.
--- linux-2.5.70/kernel/suspend.c.old Sun Jun 8 11:09:41 2003 +++ linux-2.5.70/kernel/suspend.c Sun Jun 8 10:54:55 2003 @@ -621,9 +621,17 @@ */ static void free_some_memory(void) { + unsigned int count = 10; + printk("Freeing memory: "); - while (shrink_all_memory(10000)) + while (count) { + unsigned int ret = shrink_all_memory(4 * 1024 * 1024 / PAGE_SIZE); + if (ret == 0) { + count--; + continue; + } printk("."); + } printk("|\n"); } --- linux-2.5.70/mm/vmscan.c.old Sun Jun 8 11:08:27 2003 +++ linux-2.5.70/mm/vmscan.c Sun Jun 8 11:02:27 2003 @@ -882,7 +882,8 @@ * dead and from now on, only perform a short scan. Basically we're polling * the zone for when the problem goes away. */ -static int balance_pgdat(pg_data_t *pgdat, int nr_pages, struct page_state *ps) +static int balance_pgdat(pg_data_t *pgdat, int nr_pages, + struct page_state *ps, unsigned int time) { int to_free = nr_pages; int priority; @@ -930,7 +931,7 @@ } if (all_zones_ok) break; - blk_congestion_wait(WRITE, HZ/10); + blk_congestion_wait(WRITE, HZ/time); } return nr_pages - to_free; } @@ -984,7 +985,7 @@ schedule(); finish_wait(&pgdat->kswapd_wait, &wait); get_page_state(&ps); - balance_pgdat(pgdat, 0, &ps); + balance_pgdat(pgdat, 0, &ps, 10); } } @@ -1020,7 +1021,7 @@ struct page_state ps; get_page_state(&ps); - freed = balance_pgdat(pgdat, nr_to_free, &ps); + freed = balance_pgdat(pgdat, nr_to_free, &ps, 200); ret += freed; nr_to_free -= freed; if (nr_to_free <= 0) -- Hu Gang / Steve Email : huagng@soulinfo.com, steve@soulinfo.com GPG FinePrint: 4099 3F1D AE01 1817 68F7 D499 A6C2 C418 86C8 610E http://soulinfo.com/~hugang/HuGang.asc ICQ# : 205800361 Registered Linux User : 204016 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |