mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Akira Tsukamoto <at541@columbia.edu>
To: Andi Kleen <ak@suse.de>
Cc: linux-kernel@vger.kernel.org,
	Hirokazu Takahashi <taka@valinux.co.jp>,
	Andrew Morton <akpm@digeo.com>,
	Denis Vlasenko <vda@port.imtp.ilyichevsk.odessa.ua>
Subject: Re: [CFT][PATCH]  2.5.47 Athlon/Druon, much faster copy_user function
Date: Sat, 16 Nov 2002 16:55:31 -0500	[thread overview]
Message-ID: <20021116163707.1C5C.AT541@columbia.edu> (raw)
In-Reply-To: <20021116193003.A11205@wotan.suse.de>

On Sat, 16 Nov 2002 19:30:03 +0100
Andi Kleen <ak@suse.de> mentioned:
> On Sat, Nov 16, 2002 at 01:22:51PM -0500, Akira Tsukamoto wrote:
> > This is the main question for me that I was wondering for all week. 
> > My first version was using fsave and frstore, so 
> > just changing three lines will accomplish this.
> > Is it all I need?  Any thing elase needed to consider using fpu register?
> 
> You are currently corrupting the user's FPU state.

fsave and frstor should solve this problem, doesn't it?

> The proper way to save it is to use kernel_fpu_begin()

I looked into it.  kernel_fpu_begin/end are basically doing:
  1)preempt enable/disable
  2)fsave and frstor
It does not look a lot of overhead.

So what is missing in my patch is:
 1)Surround with kernel_fpu_begin/end.
 2)Change the threshold of the size from 256 to somewhere around 512.
   I removed the fsave/frstor, which was in my first version, to lower the 
   threshold because they had some overhead and if the copying size
   was smaller than 512, the org_copy became faster.
   I just need to reverse it.

Please let me know if anything esle is missing.

> > > > Also I'm pretty sure that using movntq (= forcing destination out of 
> > > > cache) is not a good strategy for generic copy_from_user(). It may 
> > > > be a win for the copies in write ( user space -> page cache ),
> > > 
> > > Yes, that why I included postfetch in the code because movntq does not leave 
> > > them in the L2 cache.

> > That looks rather wasteful - first force it out and then trying to get it in 
> > again. I have my doubts on it being a good strategy for speed.
>
> It tried both, use just normal mov or movq <-> use movntq + postfetch, and the later 
> was much much faster, because postfetch needs to read only every 64 bytes.

This is bench for read with my patch on 2.5.47
 read: buf(0x804e000) copied 24.0 Mbytes in 0.040 seconds at 604.7 Mbytes/sec
 read: buf(0x804e001) copied 24.0 Mbytes in 0.047 seconds at 509.5 Mbytes/sec
 read: buf(0x804e002) copied 24.0 Mbytes in 0.046 seconds at 516.8 Mbytes/sec
 read: buf(0x804e003) copied 24.0 Mbytes in 0.046 seconds at 516.4 Mbytes/sec

This is stock 2.5.47
 read: buf(0x804e000) copied 24.0 Mbytes in 0.086 seconds at 279.8 Mbytes/sec
 read: buf(0x804e001) copied 24.0 Mbytes in 0.105 seconds at 229.2 Mbytes/sec
 read: buf(0x804e002) copied 24.0 Mbytes in 0.104 seconds at 230.8 Mbytes/sec
 read: buf(0x804e003) copied 24.0 Mbytes in 0.105 seconds at 229.2 Mbytes/sec

About 200% faster.

Akira



      parent reply	other threads:[~2002-11-16 21:49 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-16  6:53 Akira Tsukamoto
2002-11-16 10:56 ` Andi Kleen
2002-11-16 18:22   ` Akira Tsukamoto
2002-11-16 18:30     ` Andi Kleen
2002-11-16 18:50       ` Akira Tsukamoto
2002-11-16 22:23         ` Hirokazu Takahashi
2002-11-16 21:55       ` Akira Tsukamoto [this message]

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=20021116163707.1C5C.AT541@columbia.edu \
    --to=at541@columbia.edu \
    --cc=ak@suse.de \
    --cc=akpm@digeo.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=taka@valinux.co.jp \
    --cc=vda@port.imtp.ilyichevsk.odessa.ua \
    /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®