From: Jan Kara <jack@suse.cz>
To: Ashif Harji <asharji@cs.uwaterloo.ca>
Cc: Nick Piggin <npiggin@suse.de>, linux-kernel@vger.kernel.org
Subject: Re: do_generic_mapping_read performance issue
Date: Mon, 12 Mar 2007 18:35:00 +0100 [thread overview]
Message-ID: <20070312173500.GF23532@duck.suse.cz> (raw)
In-Reply-To: <Pine.GSO.4.64.0703121247210.7679@cpu102.cs.uwaterloo.ca>
On Mon 12-03-07 13:05:17, Ashif Harji wrote:
>
> On Mon, 12 Mar 2007, Jan Kara wrote:
>
> >On Mon 12-03-07 15:39:00, Nick Piggin wrote:
> >>On Mon, Mar 12, 2007 at 03:20:12PM +0100, Jan Kara wrote:
> >>> Hi,
> >>>
> >>>>Hi, I am encountering a performance problem, which I have tracked into
> >>>>the
> >>>>Linux kernel. The problem occurs with my experimental web server that
> >>>>uses
> >>>>sendfile to repeatedly transmit files. The files are based on the
> >>>>static
> >>>>portion of the SPECweb99 fileset and range in size to model a reasonable
> >>>>workload. With this workload, a significant number of the requests are
> >>>>for files of size 4 KB or less.
> >>>>
> >>>>I have determined that the performance problems occurs in the function
> >>>>do_generic_mapping_read in file mm/filemap.c for kernel version
> >>>>2.6.20.1.
> >>>>Here is the specific code fragment:
> >>>>
> >>>> /*
> >>>> * When (part of) the same page is read multiple times
> >>>> * in succession, only mark it as accessed the first time.
> >>>> */
> >>>> if (prev_index != index)
> >>>> mark_page_accessed(page);
> >>> Actually, the code is like that certainly for two years :).
> >>
> >>Did it always use ra->prev_page? ISTR it using pos%PAGE_SIZE == 0 at some
> >>stage (ie. read from the start of a page -- obviously that also has
> >>holes).
> > Yes, at least in 2.6.12-rc5 which is the first one in git :).
> >
> >>>>I was wondering if anyone could explain why the call to
> >>>>mark_page_accessed
> >>>>is conditional? That is, what problem it is trying to solve. It would
> >>>>seem
> >>>>that in many scenarios, if the same page is accessed repeatedly, then it
> >>>>would be appropriate to keep that page cached.
> >>> I also don't know why the condition is there but it's there at least
> >>>for two years so I'm not sure anybody remembers ;). Nick, do you have
> >>>an idea?
> >>
> >>Yeah it is there because that is basically how our "use once" detection
> >>handles the case where an app does not read in chunks that are PAGE_SIZE
> >>multiples and PAGE_SIZE aligned.
> > OK, I see. Then I'm not sure the check does more good than bad. Because
> >if we happen to reread the same chunk several times, then the check does a
> >wrong thing...
>
> I would like to submit a patch to fix the performance problem. The
> simplest solution is to remove the check. Even in the situation where an
> application does not read in PAGE_SIZE multiples as described above, if
> the page is accessed frequently it should remain in the cache. However, I
> am open to suggestions for a more sophisticated scheme.
Well, yes, that's an obvious solution. I just wanted to make sure that
such change won't break some other load. But so far it seems it won't...
Honza
--
Jan Kara <jack@suse.cz>
SuSE CR Labs
next prev parent reply other threads:[~2007-03-12 17:29 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-09 22:03 Ashif Harji
2007-03-12 14:20 ` Jan Kara
2007-03-12 14:39 ` Nick Piggin
2007-03-12 15:13 ` Jan Kara
2007-03-12 17:05 ` Ashif Harji
2007-03-12 17:35 ` Jan Kara [this message]
2007-03-13 18:43 ` Ashif Harji
2007-03-13 18:55 ` Jan Kara
2007-03-14 19:58 ` [PATCH] mm/filemap.c: unconditionally call mark_page_accessed Ashif Harji
2007-03-14 20:55 ` Dave Kleikamp
2007-03-14 21:33 ` Andreas Mohr
2007-03-14 22:08 ` Dave Kleikamp
2007-03-15 1:36 ` Xiaoning Ding
2007-03-15 5:22 ` Ashif Harji
2007-03-15 12:46 ` Dave Kleikamp
2007-03-15 12:50 ` Nick Piggin
2007-03-15 19:07 ` Andrew Morton
2007-03-15 21:49 ` Andrea Arcangeli
2007-03-15 22:06 ` Andrew Morton
2007-03-15 23:15 ` Andrea Arcangeli
2007-03-15 15:00 ` Rik van Riel
2007-03-15 17:37 ` Valdis.Kletnieks
2007-03-15 18:35 ` Rik van Riel
2007-03-16 3:51 ` Valdis.Kletnieks
2007-03-16 4:09 ` Rik van Riel
2007-03-16 14:20 ` Anton Blanchard
2007-03-15 10:39 ` Peter Zijlstra
2007-03-15 12:38 ` Nick Piggin
2007-03-15 15:06 ` Rik van Riel
2007-03-15 15:56 ` Chuck Ebbert
2007-03-15 16:29 ` Nick Piggin
2007-03-15 17:04 ` Rik van Riel
2007-03-15 17:44 ` Hugh Dickins
2007-03-15 20:01 ` Nick Piggin
2007-03-15 22:59 ` Andrea Arcangeli
2007-03-15 23:15 ` Dave Kleikamp
2007-03-15 23:28 ` Andrea Arcangeli
2007-03-15 19:55 ` Ashif Harji
2007-03-15 20:07 ` Nick Piggin
2007-03-15 20:31 ` Andreas Mohr
2007-03-12 16:46 ` do_generic_mapping_read performance issue Ashif Harji
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=20070312173500.GF23532@duck.suse.cz \
--to=jack@suse.cz \
--cc=asharji@cs.uwaterloo.ca \
--cc=linux-kernel@vger.kernel.org \
--cc=npiggin@suse.de \
/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
all inboxes | Powered by JetHome®