Re: software suspend in 2.5.70-mm3.

Pavel Machek (pavel@suse.cz)
Sun, 8 Jun 2003 20:29:20 +0200


Hi!

> > 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");
> }

If this does something then... well... shrink_all_memory needs to be
fixed.

> --- 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)

Comment in balance_pgdat saying what the time means would be
nice... And calling it time is pretty misleading: its frequency.

Pavel

-- 
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]
-
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/