All of lore.kernel.org
 help / color / mirror / Atom feed
From: Con Kolivas <kernel@kolivas.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, ck@vds.kolivas.org
Subject: Re: [PATCH] mm: swap prefetch more improvements
Date: Tue, 15 May 2007 09:24:19 +1000	[thread overview]
Message-ID: <200705150924.20757.kernel@kolivas.org> (raw)
In-Reply-To: <20070514160123.4b1ab108.akpm@linux-foundation.org>

On Tuesday 15 May 2007 09:01, Andrew Morton wrote:
> On Tue, 15 May 2007 08:43:35 +1000
>
> Con Kolivas <kernel@kolivas.org> wrote:
> > On Tuesday 15 May 2007 08:00, Andrew Morton wrote:
> > > On Mon, 14 May 2007 10:50:54 +1000
> > >
> > > Con Kolivas <kernel@kolivas.org> wrote:
> > > > akpm, please queue on top of "mm: swap prefetch improvements"
> > > >
> > > > ---
> > > > Failed radix_tree_insert wasn't being handled leaving stale kmem.
> > > >
> > > > The list should be iterated over in the reverse order when
> > > > prefetching.
> > > >
> > > > Make the yield within kprefetchd stronger through the use of
> > > > cond_resched.
> > >
> > > hm.
> > >
> > > > -		might_sleep();
> > > > -		if (!prefetch_suitable())
> > > > +		/* Yield to anything else running */
> > > > +		if (cond_resched() || !prefetch_suitable())
> > > >  			goto out_unlocked;
> > >
> > > So if cond_resched() happened to schedule away, we terminate this
> > > swap-tricking attempt.  It's not possible to determine the reasons for
> > > this from the code or from the changelog (==bad).
> > >
> > > How come?
> >
> > Hmm I thought the line above that says "yield to anything else running"
> > was explicit enough. The idea is kprefetchd shouldn't run if any other
> > real activity is happening just about anywhere, and a positive
> > cond_resched would indicate likely activity so we just put kprefetchd
> > back to sleep.
>
> But kprefetchd runs as SCHED_BATCH.  Doesn't that mean that some low-prio
> background thing (seti?) will disable swap-prefetch?
>
> I mean, if swap-prefetch is actually useful, then it'll still be useful if
> the machine happens to be doing some computational work.  It's not obvious
> to me that there is linkage between "doing CPU work" and "prefetching is
> presently undesirable".

set_tsk_need_resched which is the trigger for a cond_resched occurring won't 
be set just by a cpu bound task constantly running in the background as far 
as I can see. It's only if some wakeup has triggered a set_tsk_need_resched. 
ie prefetching still happens here with setiathome or equivalent running in my 
testing. It might be overkill but from what I can see here it is no 
impediment to prefetching occurring. I'll think about it some more and do 
more testing but it seems ok to me.

-- 
-ck

WARNING: multiple messages have this Message-ID (diff)
From: Con Kolivas <kernel@kolivas.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, ck@vds.kolivas.org
Subject: Re: [PATCH] mm: swap prefetch more improvements
Date: Tue, 15 May 2007 09:24:19 +1000	[thread overview]
Message-ID: <200705150924.20757.kernel@kolivas.org> (raw)
In-Reply-To: <20070514160123.4b1ab108.akpm@linux-foundation.org>

On Tuesday 15 May 2007 09:01, Andrew Morton wrote:
> On Tue, 15 May 2007 08:43:35 +1000
>
> Con Kolivas <kernel@kolivas.org> wrote:
> > On Tuesday 15 May 2007 08:00, Andrew Morton wrote:
> > > On Mon, 14 May 2007 10:50:54 +1000
> > >
> > > Con Kolivas <kernel@kolivas.org> wrote:
> > > > akpm, please queue on top of "mm: swap prefetch improvements"
> > > >
> > > > ---
> > > > Failed radix_tree_insert wasn't being handled leaving stale kmem.
> > > >
> > > > The list should be iterated over in the reverse order when
> > > > prefetching.
> > > >
> > > > Make the yield within kprefetchd stronger through the use of
> > > > cond_resched.
> > >
> > > hm.
> > >
> > > > -		might_sleep();
> > > > -		if (!prefetch_suitable())
> > > > +		/* Yield to anything else running */
> > > > +		if (cond_resched() || !prefetch_suitable())
> > > >  			goto out_unlocked;
> > >
> > > So if cond_resched() happened to schedule away, we terminate this
> > > swap-tricking attempt.  It's not possible to determine the reasons for
> > > this from the code or from the changelog (==bad).
> > >
> > > How come?
> >
> > Hmm I thought the line above that says "yield to anything else running"
> > was explicit enough. The idea is kprefetchd shouldn't run if any other
> > real activity is happening just about anywhere, and a positive
> > cond_resched would indicate likely activity so we just put kprefetchd
> > back to sleep.
>
> But kprefetchd runs as SCHED_BATCH.  Doesn't that mean that some low-prio
> background thing (seti?) will disable swap-prefetch?
>
> I mean, if swap-prefetch is actually useful, then it'll still be useful if
> the machine happens to be doing some computational work.  It's not obvious
> to me that there is linkage between "doing CPU work" and "prefetching is
> presently undesirable".

set_tsk_need_resched which is the trigger for a cond_resched occurring won't 
be set just by a cpu bound task constantly running in the background as far 
as I can see. It's only if some wakeup has triggered a set_tsk_need_resched. 
ie prefetching still happens here with setiathome or equivalent running in my 
testing. It might be overkill but from what I can see here it is no 
impediment to prefetching occurring. I'll think about it some more and do 
more testing but it seems ok to me.

-- 
-ck

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2007-05-14 23:28 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-14  0:50 [PATCH] mm: swap prefetch more improvements Con Kolivas
2007-05-14  0:50 ` Con Kolivas
2007-05-14 22:00 ` Andrew Morton
2007-05-14 22:00   ` Andrew Morton
2007-05-14 22:43   ` Con Kolivas
2007-05-14 22:43     ` Con Kolivas
2007-05-14 23:01     ` Andrew Morton
2007-05-14 23:01       ` Andrew Morton
2007-05-14 23:24       ` Con Kolivas [this message]
2007-05-14 23:24         ` Con Kolivas
2007-05-14 23:37       ` [ck] " Michael Chang
2007-05-14 23:37         ` Michael Chang
2007-05-15  9:58   ` Peter Zijlstra
2007-05-15  9:58     ` Peter Zijlstra
2007-05-15 12:43     ` Con Kolivas
2007-05-15 12:43       ` 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=200705150924.20757.kernel@kolivas.org \
    --to=kernel@kolivas.org \
    --cc=akpm@linux-foundation.org \
    --cc=ck@vds.kolivas.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.