From: Nick Piggin <npiggin@suse.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Peter Zijlstra <peterz@infradead.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Pierre Tardy <tardyp@gmail.com>, Ingo Molnar <mingo@elte.hu>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Tom Zanussi <tzanussi@gmail.com>,
Paul Mackerras <paulus@samba.org>,
linux-kernel@vger.kernel.org, arjan@infradead.org,
ziga.mahkovec@gmail.com, davem <davem@davemloft.net>,
linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Christoph Lameter <cl@linux-foundation.org>,
Tejun Heo <tj@kernel.org>, Jens Axboe <jens.axboe@oracle.com>
Subject: Re: Unexpected splice "always copy" behavior observed
Date: Thu, 20 May 2010 01:44:31 +1000 [thread overview]
Message-ID: <20100519154431.GC2516@laptop> (raw)
In-Reply-To: <alpine.LFD.2.00.1005190828050.23538@i5.linux-foundation.org>
On Wed, May 19, 2010 at 08:30:10AM -0700, Linus Torvalds wrote:
>
>
> On Thu, 20 May 2010, Nick Piggin wrote:
> >
> > Well I mean a full invalidate -- invalidate_mapping_pages -- so there is
> > literally no pagecache there at all.
>
> Umm. That won't work. Think mapped pages. You can't handle them
> atomically, so somebody will page-fault them in.
>
> So you'd have to have a "invalidate_and_replace()" to do it atomically
> while holding the mapping spinlock or something.
>
> And WHAT IS THE POINT? That will be about a million times slower than
> just doing the effing copy in the first place!
>
> Memory copies are _not_ slow. Not compared to taking locks and doing TLB
> invalidates.
No I never thought it would be a good idea to try to avoid all races
or anything. Obviously some cases *cannot* be easily invalidated, if
there is a ref on the page or whatever, so the fallback code has to
be there anyway.
So you would just invalidate and try to insert your page. 99.something%
of the time it will work fine. If the insert fails, fall back to
copying.
And hey you *may* even want a heuristic that avoids trying to invalidate
if the page is mapped, due to cost of TLB flushing and faulting etc.
WARNING: multiple messages have this Message-ID (diff)
From: Nick Piggin <npiggin@suse.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Peter Zijlstra <peterz@infradead.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Pierre Tardy <tardyp@gmail.com>, Ingo Molnar <mingo@elte.hu>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Tom Zanussi <tzanussi@gmail.com>,
Paul Mackerras <paulus@samba.org>,
linux-kernel@vger.kernel.org, arjan@infradead.org,
ziga.mahkovec@gmail.com, davem <davem@davemloft.net>,
linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Christoph Lameter <cl@linux-foundation.org>,
Tejun Heo <tj@kernel.org>, Jens Axboe <jens.axboe@oracle.com>
Subject: Re: Unexpected splice "always copy" behavior observed
Date: Thu, 20 May 2010 01:44:31 +1000 [thread overview]
Message-ID: <20100519154431.GC2516@laptop> (raw)
In-Reply-To: <alpine.LFD.2.00.1005190828050.23538@i5.linux-foundation.org>
On Wed, May 19, 2010 at 08:30:10AM -0700, Linus Torvalds wrote:
>
>
> On Thu, 20 May 2010, Nick Piggin wrote:
> >
> > Well I mean a full invalidate -- invalidate_mapping_pages -- so there is
> > literally no pagecache there at all.
>
> Umm. That won't work. Think mapped pages. You can't handle them
> atomically, so somebody will page-fault them in.
>
> So you'd have to have a "invalidate_and_replace()" to do it atomically
> while holding the mapping spinlock or something.
>
> And WHAT IS THE POINT? That will be about a million times slower than
> just doing the effing copy in the first place!
>
> Memory copies are _not_ slow. Not compared to taking locks and doing TLB
> invalidates.
No I never thought it would be a good idea to try to avoid all races
or anything. Obviously some cases *cannot* be easily invalidated, if
there is a ref on the page or whatever, so the fallback code has to
be there anyway.
So you would just invalidate and try to insert your page. 99.something%
of the time it will work fine. If the insert fails, fall back to
copying.
And hey you *may* even want a heuristic that avoids trying to invalidate
if the page is mapped, due to cost of TLB flushing and faulting etc.
--
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>
next prev parent reply other threads:[~2010-05-19 15:44 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-18 15:34 Unexpected splice "always copy" behavior observed Mathieu Desnoyers
2010-05-18 15:34 ` Mathieu Desnoyers
2010-05-18 15:51 ` Nick Piggin
2010-05-18 15:51 ` Nick Piggin
2010-05-18 15:56 ` Christoph Lameter
2010-05-18 15:56 ` Christoph Lameter
2010-05-18 16:00 ` Nick Piggin
2010-05-18 16:00 ` Nick Piggin
2010-05-18 16:13 ` Nick Piggin
2010-05-18 16:13 ` Nick Piggin
2010-05-18 15:53 ` Steven Rostedt
2010-05-18 15:53 ` Steven Rostedt
2010-05-18 16:10 ` Steven Rostedt
2010-05-18 16:10 ` Steven Rostedt
2010-05-18 16:25 ` Linus Torvalds
2010-05-18 16:25 ` Linus Torvalds
2010-05-19 6:31 ` Nick Piggin
2010-05-19 6:31 ` Nick Piggin
2010-05-19 14:39 ` Linus Torvalds
2010-05-19 14:39 ` Linus Torvalds
2010-05-19 14:56 ` Steven Rostedt
2010-05-19 14:56 ` Steven Rostedt
2010-05-19 14:59 ` Linus Torvalds
2010-05-19 14:59 ` Linus Torvalds
2010-05-19 15:12 ` Steven Rostedt
2010-05-19 15:12 ` Steven Rostedt
2010-05-19 15:51 ` Mathieu Desnoyers
2010-05-19 15:51 ` Mathieu Desnoyers
2010-05-19 15:33 ` Miklos Szeredi
2010-05-19 15:33 ` Miklos Szeredi
2010-05-19 15:45 ` Steven Rostedt
2010-05-19 15:45 ` Steven Rostedt
2010-05-19 15:55 ` Nick Piggin
2010-05-19 15:55 ` Nick Piggin
2010-05-19 16:01 ` Mathieu Desnoyers
2010-05-19 16:01 ` Mathieu Desnoyers
2010-05-19 16:36 ` Steven Rostedt
2010-05-19 16:36 ` Steven Rostedt
2010-05-19 15:57 ` Mathieu Desnoyers
2010-05-19 15:57 ` Mathieu Desnoyers
2010-05-19 16:27 ` Nick Piggin
2010-05-19 16:27 ` Nick Piggin
2010-05-19 19:14 ` Mathieu Desnoyers
2010-05-19 19:14 ` Mathieu Desnoyers
2010-05-19 19:31 ` Linus Torvalds
2010-05-19 19:31 ` Linus Torvalds
2010-05-19 21:49 ` Mathieu Desnoyers
2010-05-19 21:49 ` Mathieu Desnoyers
2010-05-20 0:04 ` Linus Torvalds
2010-05-20 0:04 ` Linus Torvalds
2010-05-20 1:56 ` Mathieu Desnoyers
2010-05-20 1:56 ` Mathieu Desnoyers
2010-05-20 14:18 ` Linus Torvalds
2010-05-20 14:18 ` Linus Torvalds
2010-05-20 14:18 ` Linus Torvalds
2010-05-19 20:59 ` Rick Sherm
2010-05-19 20:59 ` Rick Sherm
2010-05-19 15:17 ` Nick Piggin
2010-05-19 15:17 ` Nick Piggin
2010-05-19 15:30 ` Linus Torvalds
2010-05-19 15:30 ` Linus Torvalds
2010-05-19 15:44 ` Nick Piggin [this message]
2010-05-19 15:44 ` Nick Piggin
2010-05-19 15:28 ` Miklos Szeredi
2010-05-19 15:28 ` Miklos Szeredi
2010-05-19 15:32 ` Linus Torvalds
2010-05-19 15:32 ` Linus Torvalds
2010-05-19 15:56 ` Miklos Szeredi
2010-05-19 15:56 ` Miklos Szeredi
2010-05-19 16:01 ` Linus Torvalds
2010-05-19 16:01 ` Linus Torvalds
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=20100519154431.GC2516@laptop \
--to=npiggin@suse.de \
--cc=acme@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=arjan@infradead.org \
--cc=cl@linux-foundation.org \
--cc=davem@davemloft.net \
--cc=fweisbec@gmail.com \
--cc=jens.axboe@oracle.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@elte.hu \
--cc=paulus@samba.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tardyp@gmail.com \
--cc=tj@kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=tzanussi@gmail.com \
--cc=ziga.mahkovec@gmail.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 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.