All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] zerocopy NFS for 2.5.36
@ 2002-10-16  3:44 Neil Brown
  2002-10-16  4:31 ` David S. Miller
  0 siblings, 1 reply; 20+ messages in thread
From: Neil Brown @ 2002-10-16  3:44 UTC (permalink / raw)
  To: Hirokazu Takahashi; +Cc: davem, linux-kernel, nfs

On Monday October 14, taka@valinux.co.jp wrote:
> >  I'm bit I'm not very sure about is the 'shadowsock' patch for having
> >  several xmit sockets, one per CPU.  What sort of speedup do you get
> >  from this?  How important is it really?
> 
> It's not so important.
> 
> davem> Personally, it seems rather essential for scalability on SMP.
> 
> Yes.
> It will be effective on large scale SMP machines as all kNFSd shares
> one NFS port. A udp socket can't send data on each CPU at the same
> time while MSG_MORE/UDP_CORK options are set.
> The UDP socket have to block any other requests during making a UDP frame.
> 

After thinking about this some more, I suspect it would have to be
quite large scale SMP to get much contention.
The only contention on the udp socket is, as you say, assembling a udp
frame, and it would be surprised if that takes a substantial faction
of the time to handle a request.

Presumably on a sufficiently large SMP machine that this became an
issue, there would be multiple NICs.  Maybe it would make sense to
have one udp socket for each NIC.  Would that make sense? or work?
It feels to me to be cleaner than one for each CPU.

NeilBrown

^ permalink raw reply	[flat|nested] 20+ messages in thread
* Re: [PATCH] zerocopy NFS for 2.5.36
@ 2002-09-19  0:16 Andrew Morton
  2002-09-19 13:15 ` [NFS] " Hirokazu Takahashi
  0 siblings, 1 reply; 20+ messages in thread
From: Andrew Morton @ 2002-09-19  0:16 UTC (permalink / raw)
  To: Alan Cox; +Cc: David S. Miller, taka, neilb, linux-kernel, nfs

Alan Cox wrote:
> 
> On Thu, 2002-09-19 at 00:00, David S. Miller wrote:
> > It was discussed long ago that csum_and_copy_from_user() performs
> > better than plain copy_from_user() on x86.  I do not remember all
> 
> The better was a freak of PPro/PII scheduling I think
> 
> > details, but I do know that using copy_from_user() is not a real
> > improvement at least on x86 architecture.
> 
> The same as bit is easy to explain. Its totally memory bandwidth limited
> on current x86-32 processors. (Although I'd welcome demonstrations to
> the contrary on newer toys)

Nope.  There are distinct alignment problems with movsl-based
memcpy on PII and (at least) "Pentium III (Coppermine)", which is
tested here:

copy_32 uses movsl.  copy_duff just uses a stream of "movl"s

Time uncached-to-uncached memcpy, source and dest are 8-byte-aligned:

akpm:/usr/src/cptimer> ./cptimer -d -s     
nbytes=10240  from_align=0, to_align=0
    copy_32: copied 19.1 Mbytes in 0.078 seconds at 243.9 Mbytes/sec
__copy_duff: copied 19.1 Mbytes in 0.090 seconds at 211.1 Mbytes/sec

OK, movsl wins.   But now give the source address 8+1 alignment:

akpm:/usr/src/cptimer> ./cptimer -d -s -f 1
nbytes=10240  from_align=1, to_align=0
    copy_32: copied 19.1 Mbytes in 0.158 seconds at 120.8 Mbytes/sec
__copy_duff: copied 19.1 Mbytes in 0.091 seconds at 210.3 Mbytes/sec

The "movl"-based copy wins.  By miles.

Make the source 8+4 aligned:

akpm:/usr/src/cptimer> ./cptimer -d -s -f 4
nbytes=10240  from_align=4, to_align=0
    copy_32: copied 19.1 Mbytes in 0.134 seconds at 142.1 Mbytes/sec
__copy_duff: copied 19.1 Mbytes in 0.089 seconds at 214.0 Mbytes/sec

So movl still beats movsl, by lots.

I have various scriptlets which generate the entire matrix.

I think I ended up deciding that we should use movsl _only_
when both src and dsc are 8-byte-aligned.  And that when you
multiply the gain from that by the frequency*size with which
funny alignments are used by TCP the net gain was 2% or something.

It needs redoing.  These differences are really big, and this
is the kernel's most expensive function.

A little project for someone.

The tools are at http://www.zip.com.au/~akpm/linux/cptimer.tar.gz

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2002-10-27 11:17 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <3D89176B.40FFD09B@digeo.com.suse.lists.linux.kernel>
     [not found] ` <20020919.221513.28808421.taka@valinux.co.jp.suse.lists.linux.kernel>
     [not found]   ` <3D8A36A5.846D806@digeo.com.suse.lists.linux.kernel>
2002-09-20  1:00     ` Re: [PATCH] zerocopy NFS for 2.5.36 Andi Kleen
2002-09-20  1:00       ` [NFS] " Andi Kleen
2002-09-20  1:09       ` Andrew Morton
2002-09-20  1:09         ` [NFS] " Andrew Morton
2002-09-20  1:23         ` Andi Kleen
2002-09-20  1:23           ` [NFS] " Andi Kleen
2002-09-20  1:27           ` David S. Miller
2002-09-20  2:06             ` Andi Kleen
2002-09-20  2:01               ` David S. Miller
2002-09-20  2:28                 ` Andi Kleen
2002-09-20  2:20                   ` David S. Miller
2002-09-20  2:35                     ` Andi Kleen
2002-10-16  3:44 Neil Brown
2002-10-16  4:31 ` David S. Miller
2002-10-17  2:03   ` [NFS] " Andrew Theurer
2002-10-17  2:31     ` Hirokazu Takahashi
2002-10-17 13:16       ` Andrew Theurer
2002-10-17 13:26         ` Hirokazu Takahashi
2002-10-17 14:10           ` [NFS] " Andrew Theurer
2002-10-17 16:26             ` Hirokazu Takahashi
2002-10-18  5:38               ` [NFS] " Trond Myklebust
2002-10-18  7:19                 ` Hirokazu Takahashi
2002-10-18 15:12                   ` Andrew Theurer
2002-10-19 20:34                     ` Hirokazu Takahashi
2002-10-22 21:16                       ` Andrew Theurer
2002-10-23  9:29                         ` [NFS] " Hirokazu Takahashi
2002-10-24 15:32                           ` Andrew Theurer
2002-10-27 11:10                             ` Hirokazu Takahashi
  -- strict thread matches above, loose matches on Subject: below --
2002-09-19  0:16 Andrew Morton
2002-09-19 13:15 ` [NFS] " Hirokazu Takahashi
2002-09-19 20:42   ` Andrew Morton
2002-09-19 21:12     ` David S. Miller

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.