linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Zlatko Calusic <Zlatko.Calusic@CARNet.hr>
To: Rik van Riel <H.H.vanRiel@phys.uu.nl>
Cc: "Stephen C. Tweedie" <sct@redhat.com>,
	Linus Torvalds <torvalds@transmeta.com>,
	Benjamin Redelings I <bredelin@ucsd.edu>,
	linux-kernel@vger.rutgers.edu, linux-mm@kvack.org
Subject: Re: [2.1.130-3] Page cache DEFINATELY too persistant... feature?
Date: 30 Nov 1998 16:12:18 +0100	[thread overview]
Message-ID: <871zmldxkd.fsf@atlas.CARNet.hr> (raw)
In-Reply-To: Rik van Riel's message of "Mon, 30 Nov 1998 13:37:37 +0100 (CET)"

Rik van Riel <H.H.vanRiel@phys.uu.nl> writes:

> On 27 Nov 1998, Zlatko Calusic wrote:
> > "Stephen C. Tweedie" <sct@redhat.com> writes:
> > 
> > > The real problem seems to be that shrink_mmap() can fail for two
> > > completely separate reasons.  First of all, we might fail to find a
> > > free page because all of the cache pages we find are recently
> > > referenced.  Secondly, we might fail to find a cache page at all.
> > 
> > Yesterday, I was trying to understand the very same problem you're
> > speaking of. Sometimes kswapd decides to swapout lots of things,
> > sometimes not.
> > 
> > I applied your patch, but it didn't solve the problem.
> > To be honest, things are now even slightly worse. :(
> 
> The 'fix' is to lower the borrow percentages for both
> the buffer cache and the page cache. If we don't do
> that (or abolish the percentages completely) kswapd
> doesn't have an incentive to switch from a succesful
> round of swap_out() -- which btw doesn't free any
> actual memory so kswapd just continues doing that --
> to shrink_mmap().

Yep, this is the conclusion of my experiments, too.

> 
> Another thing we might want to try is inserting the
> following test in do_try_to_free_page():
> 
> if (atomic_read(&nr_async_pages) >= pager_daemon.swap_cluster)
> 	state = 0;
> 
> This will switch kswapd to shrink_mmap() when we have enough
> pages queued for efficient swap I/O. Of course this 'fix'
> decreases swap throughput so we might want to think up something
> more clever instead...
> 

Exactly.

It is funny how we tried same things in order to find a solution. :)

I made the following change in do_try_to_free_page():

(writing from memory, notice the concept)

...
		case 2:
>>			swapouts++;
>>			if (swapouts > pager_daemon.swap_cluster) {
>>				swapouts = 0;
>>				state = 3;
>>			}
			if (swap_out(i, gfp_mask))
				return 1;
			state = 3;
		case 3:
			shrink_dcache_memory(i, gfp_mask);
			state = 0;
		i--;
		} while (i >= 0);


Unfortunately, this really killed swapout performance, so I dropped
the idea. Even letting swap_out do more passes, before changing state, 
didn't feel good.

One other idea I had, was to replace (code at the very beginning of
do_try_to_free_page()):

	if (buffer_over_borrow() || pgcache_over_borrow())
		shrink_mmap(i, gfp_mask);

with:

	if (buffer_over_borrow() || pgcache_over_borrow())
		state = 0;

While this looks like a good idea, it in fact makes kswapd a CPU hog,
and also doesn't help performance, because it makes limits too hard,
and there's slight debalance.

I'll keep hacking... :)
-- 
Posted by Zlatko Calusic           E-mail: <Zlatko.Calusic@CARNet.hr>
---------------------------------------------------------------------
	  If you don't think women are explosive, drop one!
--
This is a majordomo managed list.  To unsubscribe, send a message with
the body 'unsubscribe linux-mm me@address' to: majordomo@kvack.org

  reply	other threads:[~1998-11-29 20:06 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <199811261236.MAA14785@dax.scot.redhat.com>
     [not found] ` <Pine.LNX.3.95.981126094159.5186D-100000@penguin.transmeta.com>
1998-11-27 16:02   ` Stephen C. Tweedie
1998-11-27 17:19     ` Chip Salzenberg
1998-11-27 18:31     ` Linus Torvalds
1998-11-27 19:58     ` Zlatko Calusic
1998-11-30 11:15       ` Stephen C. Tweedie
1998-11-30 23:13         ` Zlatko Calusic
1998-11-30 12:37       ` Rik van Riel
1998-11-30 15:12         ` Zlatko Calusic [this message]
1998-11-30 19:29           ` Rik van Riel
1998-11-30 22:27             ` Zlatko Calusic
1998-11-30 23:11               ` Rik van Riel
1998-11-30 20:20           ` Andrea Arcangeli
1998-11-30 22:28             ` Zlatko Calusic
1998-11-28  7:31     ` Eric W. Biederman
1998-11-30 11:13       ` Stephen C. Tweedie
1998-11-30 15:08         ` Rik van Riel
1998-11-30 21:40         ` Eric W. Biederman
1998-11-30 22:00         ` Eric W. Biederman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=871zmldxkd.fsf@atlas.CARNet.hr \
    --to=zlatko.calusic@carnet.hr \
    --cc=H.H.vanRiel@phys.uu.nl \
    --cc=bredelin@ucsd.edu \
    --cc=linux-kernel@vger.rutgers.edu \
    --cc=linux-mm@kvack.org \
    --cc=sct@redhat.com \
    --cc=torvalds@transmeta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox