Re: [RFT][PATCH] even out background aging

2001-06-15 Thread Mike Galbraith

On Fri, 15 Jun 2001, Rik van Riel wrote:

> [Request For Testers:  please test this on your system...]
>
> Hi,
>
> the following patch makes use of the fact that refill_inactive()
> now calls swap_out() before calling refill_inactive_scan() and
> the fact that the inactive_dirty list is now reclaimed in a fair
> LRU order.
>
> Background scanning can now be replaced by a simple call to
> refill_inactive(), instead of the refill_inactive_scan(), which
> gave mapped pages an unfair advantage over unmapped ones.

Hi Rik,

While I was testing this suggestion (still actually) prior to your
RFT, the first thing I did was the straight substitution, but under
heavy load, the additional swap/aging when there is a ~persistant
shortage hurt ~fairly badly.  What I did instead, and shows no ill
effects under any load I've tried so far was...

/* If needed, try to free some memory. */
if (inactive_shortage() || free_shortage())
do_try_to_free_pages(GFP_KSWAPD, 0);
else {
/* Do background page aging. */
swap_out(DEF_PRIORITY, GFP_KSWAPD);
refill_inactive_scan(DEF_PRIORITY, 0);
}

I still had the benefit of idle pages being pushed to disk quickly
and staying there :)  IMHO, this is the first real candidate for a
sysctl tunable, as it's possibly not good for everyone.  As indicated
privately, I like the effect of this suggestion a lot, but laptop
people may not because of the infrequent and miniscule swapin (which
_might_ be an irritant _if_ they are doing enough work etc etc).

-Mike

(this report would have landed in your mailbox tomorrow.. I was too
slow.  sending it to lkml lest someone sees the same high load thing
I did and determine it's a loss unfairly)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



[RFT][PATCH] even out background aging

2001-06-15 Thread Rik van Riel

[Request For Testers:  please test this on your system...]

Hi,

the following patch makes use of the fact that refill_inactive()
now calls swap_out() before calling refill_inactive_scan() and
the fact that the inactive_dirty list is now reclaimed in a fair
LRU order.

Background scanning can now be replaced by a simple call to
refill_inactive(), instead of the refill_inactive_scan(), which
gave mapped pages an unfair advantage over unmapped ones.

The special-casing of the amount to scan in refill_inactive_scan()
is removed as well, there's absolutely no reason we'd need it with
the current VM balance.

regards,

Rik
--


--- linux-2.4.6-pre3/mm/vmscan.c.orig   Thu Jun 14 12:28:03 2001
+++ linux-2.4.6-pre3/mm/vmscan.cFri Jun 15 11:55:09 2001
@@ -695,13 +695,6 @@
int page_active = 0;
int nr_deactivated = 0;

-   /*
-* When we are background aging, we try to increase the page aging
-* information in the system.
-*/
-   if (!target)
-   maxscan = nr_active_pages >> 4;
-
/* Take the lock while messing with the list... */
spin_lock(_lru_lock);
while (maxscan-- > 0 && (page_lru = active_list.prev) != _list) {
@@ -978,7 +971,7 @@
recalculate_vm_stats();

/* Do background page aging. */
-   refill_inactive_scan(DEF_PRIORITY, 0);
+   refill_inactive(GFP_KSWAPD, 0);
}

run_task_queue(_disk);

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



[RFT][PATCH] even out background aging

2001-06-15 Thread Rik van Riel

[Request For Testers:  please test this on your system...]

Hi,

the following patch makes use of the fact that refill_inactive()
now calls swap_out() before calling refill_inactive_scan() and
the fact that the inactive_dirty list is now reclaimed in a fair
LRU order.

Background scanning can now be replaced by a simple call to
refill_inactive(), instead of the refill_inactive_scan(), which
gave mapped pages an unfair advantage over unmapped ones.

The special-casing of the amount to scan in refill_inactive_scan()
is removed as well, there's absolutely no reason we'd need it with
the current VM balance.

regards,

Rik
--


--- linux-2.4.6-pre3/mm/vmscan.c.orig   Thu Jun 14 12:28:03 2001
+++ linux-2.4.6-pre3/mm/vmscan.cFri Jun 15 11:55:09 2001
@@ -695,13 +695,6 @@
int page_active = 0;
int nr_deactivated = 0;

-   /*
-* When we are background aging, we try to increase the page aging
-* information in the system.
-*/
-   if (!target)
-   maxscan = nr_active_pages  4;
-
/* Take the lock while messing with the list... */
spin_lock(pagemap_lru_lock);
while (maxscan--  0  (page_lru = active_list.prev) != active_list) {
@@ -978,7 +971,7 @@
recalculate_vm_stats();

/* Do background page aging. */
-   refill_inactive_scan(DEF_PRIORITY, 0);
+   refill_inactive(GFP_KSWAPD, 0);
}

run_task_queue(tq_disk);

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: [RFT][PATCH] even out background aging

2001-06-15 Thread Mike Galbraith

On Fri, 15 Jun 2001, Rik van Riel wrote:

 [Request For Testers:  please test this on your system...]

 Hi,

 the following patch makes use of the fact that refill_inactive()
 now calls swap_out() before calling refill_inactive_scan() and
 the fact that the inactive_dirty list is now reclaimed in a fair
 LRU order.

 Background scanning can now be replaced by a simple call to
 refill_inactive(), instead of the refill_inactive_scan(), which
 gave mapped pages an unfair advantage over unmapped ones.

Hi Rik,

While I was testing this suggestion (still actually) prior to your
RFT, the first thing I did was the straight substitution, but under
heavy load, the additional swap/aging when there is a ~persistant
shortage hurt ~fairly badly.  What I did instead, and shows no ill
effects under any load I've tried so far was...

/* If needed, try to free some memory. */
if (inactive_shortage() || free_shortage())
do_try_to_free_pages(GFP_KSWAPD, 0);
else {
/* Do background page aging. */
swap_out(DEF_PRIORITY, GFP_KSWAPD);
refill_inactive_scan(DEF_PRIORITY, 0);
}

I still had the benefit of idle pages being pushed to disk quickly
and staying there :)  IMHO, this is the first real candidate for a
sysctl tunable, as it's possibly not good for everyone.  As indicated
privately, I like the effect of this suggestion a lot, but laptop
people may not because of the infrequent and miniscule swapin (which
_might_ be an irritant _if_ they are doing enough work etc etc).

-Mike

(this report would have landed in your mailbox tomorrow.. I was too
slow.  sending it to lkml lest someone sees the same high load thing
I did and determine it's a loss unfairly)

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/