From: Zlatko Calusic <Zlatko.Calusic@CARNet.hr>
To: "Eric W. Biederman" <ebiederm+eric@npwt.net>
Cc: "Stephen C. Tweedie" <sct@redhat.com>, linux-mm@kvack.org
Subject: Re: More info: 2.1.108 page cache performance on low memory
Date: 13 Jul 1998 20:29:33 +0200 [thread overview]
Message-ID: <87lnpxy582.fsf@atlas.CARNet.hr> (raw)
In-Reply-To: ebiederm+eric@npwt.net's message of "13 Jul 1998 13:08:56 -0500"
ebiederm+eric@npwt.net (Eric W. Biederman) writes:
> >>>>> "ST" == Stephen C Tweedie <sct@redhat.com> writes:
>
> ST> Hi all,
> ST> OK, a bit more benchmarking is showing bad problems with page ageing.
> ST> I've been running 2.1 with a big ramdisk and without, with page ageing
> ST> and without. The results for a simple compile job (make a few
> ST> dependency files then compile four .c files) look like this:
>
> ST> 2.0.34, 6m ram: 1:22
>
> ST> 2.1.108, 16m ram, 10m ramdisk:
> ST> With page cache ageing: Not usable (swap death during boot.)
> ST> Without cache ageing: 8:47
>
> ST> 2.1.108, 6m ram:
> ST> With page cache ageing: 4:14
> ST> Without cache ageing: 3:22
I agree that ageing of the page cache has a bad impact on the
performance.
Benchmarking disks reveals much lower read speed, mostly thanks to
unneeded excessive swapping produced by outswapping pages that will be
again swapped in, in few seconds (page cache likes to take 90% of
memory when copying large files). This produces lots of redundant head
movement (not to mention copying pages...) which effectively cuts read
speed to half.
I personally run a system with heavily patched VM subsystem, at least
for the last three months.
Sad thing is that my patch mostly undo latest changes. :(
Just to mention, I have 64MB of physical memory, and my machine is
definitely not memory starved, but it also suffers from some of the
recent VM changes.
>
> O.k. Just a few thoughts.
> 1) We have a minimum size for the buffer cache in percent of physical pages.
> Setting the minimum to 0% may help.
>
> 2) If we play with LRU list it may be most practical use page->next and page->prev
> fields for the list, and for truncate_inode_pages && invalidate_inode_pages
> do something like:
> for(i = 0; i < inode->i_size; i+= PAGE_SIZE) {
> page = find_in_page_cache(inode, i);
> if (page)
> /* remove it */
> ;
> }
> And remove the inode->i_pages list. This should be roughly equivalent
> to the bforgets needed by truncate anyway so should impose not large
> peformance penalty.
>
> Personally I think it is broken to set the limits of cache sizes
> (buffer & page) to anthing besides: max=100% min=0% by default.
Exactly.
That (removing cache limits) is one of my favorite changes.
Free memory == unused memory == bad policy!
There is no reason why any of the caches would not utilize all of the
free memory at any given moment.
But, we must be very careful to swap out only unneeded pages if we
decide to enlarge cache on the behalf of the text and data pages.
>
> But now that we have this hand tuneing option in addition to auto
> tuning we should experiment with it as well.
>
If anybody want to see, I can provide benchmark results, but I'm not
prepared to compile another kernel image if nobody's interested. :)
Regards!
--
Posted by Zlatko Calusic E-mail: <Zlatko.Calusic@CARNet.hr>
---------------------------------------------------------------------
10 out of 5 doctors feel it's OK to be skitzo!
--
This is a majordomo managed list. To unsubscribe, send a message with
the body 'unsubscribe linux-mm me@address' to: majordomo@kvack.org
next prev parent reply other threads:[~1998-07-13 18:30 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
1998-07-13 16:53 Stephen C. Tweedie
1998-07-13 18:08 ` Eric W. Biederman
1998-07-13 18:29 ` Zlatko Calusic [this message]
1998-07-14 17:32 ` Stephen C. Tweedie
1998-07-16 12:31 ` Zlatko Calusic
1998-07-14 17:30 ` Stephen C. Tweedie
1998-07-18 1:10 ` Eric W. Biederman
1998-07-18 13:28 ` Zlatko Calusic
1998-07-18 16:40 ` Eric W. Biederman
1998-07-20 9:15 ` Zlatko Calusic
1998-07-22 10:40 ` Stephen C. Tweedie
1998-07-23 10:06 ` Zlatko Calusic
1998-07-23 12:22 ` Stephen C. Tweedie
1998-07-23 14:07 ` Zlatko Calusic
1998-07-23 17:18 ` Stephen C. Tweedie
1998-07-23 19:33 ` Zlatko Calusic
1998-07-27 10:57 ` Stephen C. Tweedie
1998-07-26 14:49 ` Eric W Biederman
1998-07-27 11:02 ` Stephen C. Tweedie
1998-08-02 5:19 ` Eric W Biederman
1998-08-17 13:57 ` Stephen C. Tweedie
1998-08-17 15:35 ` Stephen C. Tweedie
1998-08-20 12:40 ` Eric W. Biederman
1998-07-20 15:58 ` Stephen C. Tweedie
1998-07-22 10:36 ` Stephen C. Tweedie
1998-07-22 18:01 ` Rik van Riel
1998-07-23 10:59 ` Stephen C. Tweedie
1998-07-22 10:33 ` Stephen C. Tweedie
1998-07-23 10:59 ` Zlatko Calusic
1998-07-23 12:23 ` Stephen C. Tweedie
1998-07-23 15:06 ` Zlatko Calusic
1998-07-23 15:17 ` Benjamin C.R. LaHaise
1998-07-23 15:25 ` Zlatko Calusic
1998-07-23 17:27 ` Benjamin C.R. LaHaise
1998-07-23 19:17 ` Dr. Werner Fink
1998-07-23 17:12 ` Stephen C. Tweedie
1998-07-23 17:42 ` Zlatko Calusic
1998-07-23 19:12 ` Dr. Werner Fink
1998-07-27 10:40 ` Stephen C. Tweedie
1998-07-23 19:51 ` Rik van Riel
1998-07-24 11:21 ` Zlatko Calusic
1998-07-24 14:25 ` Rik van Riel
1998-07-24 17:01 ` Zlatko Calusic
1998-07-24 21:55 ` Rik van Riel
1998-07-25 13:05 ` Zlatko Calusic
1998-07-27 10:54 ` Stephen C. Tweedie
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=87lnpxy582.fsf@atlas.CARNet.hr \
--to=zlatko.calusic@carnet.hr \
--cc=ebiederm+eric@npwt.net \
--cc=linux-mm@kvack.org \
--cc=sct@redhat.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