From: Con Kolivas <kernel@kolivas.org>
To: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: linux-kernel@vger.kernel.org, ck@vds.kolivas.org
Subject: Re: [PATCH] vm - swap_prefetch-15
Date: Fri, 7 Oct 2005 22:08:01 +1000 [thread overview]
Message-ID: <200510072208.01357.kernel@kolivas.org> (raw)
In-Reply-To: <84144f020510070431n3b18250eo9d4777844a448b8a@mail.gmail.com>
On Fri, 7 Oct 2005 21:31, Pekka Enberg wrote:
> Hi,
>
> On 10/7/05, Con Kolivas <kernel@kolivas.org> wrote:
> > Good point, thanks! Any and all feedback is appreciated.
>
> Well, since you asked :-)
>
> > +/*
> > + * How many pages to prefetch at a time. We prefetch SWAP_CLUSTER_MAX *
> > + * swap_prefetch per PREFETCH_INTERVAL, but prefetch ten times as much
> > at a + * time in laptop_mode to minimise the time we keep the disk
> > spinning. + */
> > +#define PREFETCH_PAGES() (SWAP_CLUSTER_MAX * swap_prefetch * \
> > + (1 + 9 * laptop_mode))
>
> This looks strange. Please either drop the parenthesis from PREFETCH_PAGES
> or make it a real static inline function.
I have seen this sort of macro style before in the kernel where () just makes
it clear that it is a function but a real static inline is ok with me.
> > +/*
> > + * Find the zone with the most free pages, recheck the watermarks and
> > + * then directly allocate the ram. We don't want prefetch to use
> > + * __alloc_pages and go calling on reclaim.
> > + */
> > +static struct page *prefetch_get_page(void)
> > +{
>
> Should this be put in mm/page_alloc.c? It is, after all, a special-purpose
> page allocator. That way you wouldn't have to export zone_statistics and
> buffered_rmqueue.
Makes sense but it is only used in the CONFIG_SWAP_PREFETCH case so it would
end up as a static inline in swap.h to avoid ending being #ifdefed in
page_alloc.c. Do you think that's preferable to having it in
swap_prefetch.c ?
>
> > +/*
> > + * trickle_swap is the main function that initiates the swap
> > prefetching. It + * first checks to see if the busy flag is set, and does
> > not prefetch if it + * is, as the flag implied we are low on memory or
> > swapping in currently. + * Otherwise it runs till PREFETCH_PAGES() are
> > prefetched.
> > + * This function returns 1 if it succeeds in a cycle of prefetching, 0
> > if it + * is interrupted or -1 if there is nothing left to prefetch.
> > + */
> > +static int trickle_swap(void)
> > +{
>
> This could perhaps use a three-state enum as return value. I find return
> value checks in kprefetchd() slightly confusing.
Good idea.
Thanks!
Con
next prev parent reply other threads:[~2005-10-07 12:08 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-06 14:01 [PATCH] vm - swap_prefetch-15 Con Kolivas
2005-10-06 14:13 ` [PATCH] vm - swap_prefetch-15 docs Con Kolivas
2005-10-07 10:03 ` [PATCH] vm - swap_prefetch-15 Pekka Enberg
2005-10-07 10:54 ` Con Kolivas
2005-10-07 11:31 ` Pekka Enberg
2005-10-07 12:08 ` Con Kolivas [this message]
2005-10-07 12:26 ` Pekka J Enberg
2005-10-07 12:33 ` Con Kolivas
2005-10-07 12:49 ` Pekka J Enberg
2005-10-07 14:44 ` [ck] " Gustavo Barbieri
2005-10-07 18:28 ` Rudo Thomas
2005-10-07 18:40 ` Gustavo Barbieri
2005-10-07 11:46 ` Paolo Ciarrocchi
2005-10-07 12:18 ` Con Kolivas
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=200510072208.01357.kernel@kolivas.org \
--to=kernel@kolivas.org \
--cc=ck@vds.kolivas.org \
--cc=linux-kernel@vger.kernel.org \
--cc=penberg@cs.helsinki.fi \
/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