High Performance SSH/SCP - HPN-SSH when?

Corinna Vinschen vinschen at redhat.com
Wed Apr 5 20:56:27 EST 2006

On Apr  4 16:52, Chris Rapier wrote:
> Corinna Vinschen wrote:
> > On Mar 25 23:37, Chris Rapier wrote:
> >> [http://www.psc.edu/networking/projects/hpn-ssh/]
> >> Development is on going and new version of the patch will be available 
> >> shortly. This new version of the patch will hopefully address a 
> >> performance issue in LAN transfers.
> > 
> > Not sure if it's ok to discuss this here. However, we have some
> > performance problems on Cygwin with the vanilla version of OpenSSH.  The
> > main problem is the size of the read buffers in the client loop, resp.
> > client_process_net_input/client_process_input.  The buffer size is a
> > fixed 8K.  For some reason this degrades performance on Windows
> > enormously, when a copy is made from a remote machine to the local
> > machine, like this:
> I'm guessing that this is probably an issue in the implementation of 
> cygwin. Following the code I would again guess that its probably the 
> memcpy in buffer_append doing it. Perhaps many small memcpy's being more 
> expensive than a few larger ones in the cygwin environment? Is there 
> some sort of trace functionality under cygwin?

memcpy and memmove are optimized handcoded assembler functions, so I
don't think they are the culprit.  Unfortunaltely, the trace
functionality in Cygwin doesn't cover these functions.

> > I also tried the HPN patch, but it doesn't help for this specific
> > situation.  The HPN patch does not touch the application's read buffer
> > size and it turns out that neither changing the underlying SO_RCVBUF
> > buffer sizes nor changing TCP_NODELAY have a really relaxing effect on
> > this situation (less than 10%).  
> > 
> > On the contrary, keeping the application buffers at 8K, the performance
> > even degrades with the HPN patch:
> > 
> >   cygwin> scp linux:file .
> >   file   100%  118MB   1.0MB/s   01:58
> So this is an additional decrease in performance if the HPN patch is 
> used with 8k buffers? What can you tell me about the path? Does it have 
> a very low RTT? The available version of HPN (HPN11) polls the SO_RCVBUF 

The RTT is in the <1ms scale.

> once every window so in low RTT environments the additional cycles spent 
> on this could have an impact. The beta version of the patch (HPN12) 
> provides a switch to disabled buffer polling. I'm still working on this 
> issue (recreating the problems consistently has been an issue for me) 
> but you might want to look at the HPN12 patch set.

I won't have time to test extensively until next week.  But I'll come
back to this.


Corinna Vinschen
Cygwin Project Co-Leader
Red Hat

More information about the openssh-unix-dev mailing list