[X2go-Dev] libssh, nagle, and performance issues

John A. Sullivan III jsullivan at opensourcedevel.com
Sat Sep 17 03:35:17 CEST 2011


On Fri, 2011-09-16 at 23:17 +0200, Mike Gabriel wrote:
> Hi John, hi Alex,
> 
> On Fr 16 Sep 2011 21:56:38 CEST "John A. Sullivan III" wrote:
> 
> > Hello, all.  Since moving to the newer clients using libssh, I've
> > noticed what appears to be a performance degradation.  It smells like
> > Nagle coalescing packets, e.g., most of the screen will paint, then it
> > will pause a moment, and then the rest will paint.  Is there any chance
> > we have neglected to disable Nagle when invoking libssh?
> >
> > This appears to have affected the SNMP over SSH project:
> > http://books.google.com/books?id=S62is2vVoVgC&pg=PA29&lpg=PA29&dq=libssh
> > +nagle&source=bl&ots=F8Iw-pvQxd&sig=f5dfy0K0ewzSZOhqzTJRSKsDKZ8&hl=en&ei=KppzTrCZD4LJgQeMxLzzDA&sa=X&oi=book_result&ct=result&resnum=1&sqi=2&ved=0CBwQ6AEwAA#v=onepage&q=libssh%20nagle&f=false
> >
> > This is in section 4.1. The difference was a latency of over 800ms to
> > one of under 60ms.  That seems to be about what I am seeing. There is a
> > delay of roughly a second and then the rest of the screen comes through.
> > Thanks - John
> 
> Indeed the TCP_NODELAY (which means: turn Nagle off) is not set for  
> the ssh tunnel in X2goClient. It probably is for the SSH connection  
> itself, as the SNMP patch has been reported to libssh upstream and  
> their patch suggestion has been sensible. However, for the SSH tunnels  
> built up for X2go this TCP_NODELAY option does perhaps not get set.
> 
> @Alex: would this patch fix that in x2goclient???
> 
> diff --git a/sshprocess.cpp b/sshprocess.cpp
> index 9e72e8f..03ee9b6 100644
> --- a/sshprocess.cpp
> +++ b/sshprocess.cpp
> @@ -88,6 +88,7 @@ void SshProcess::tunnelLoop()
>       const char y=1;
>   #endif
>       setsockopt(serverSocket, SOL_SOCKET, SO_REUSEADDR,&y, sizeof(int));
> +    setsockopt(serverSocket, IPPROTO_TCP, TCP_NODELAY,&y, sizeof(int));
> 
>       address.sin_family=AF_INET;
>       address.sin_addr.s_addr=INADDR_ANY;
> 
> 
> @John: could you get the latest sources of x2goclient from our Git:
> 
> git clone git://code.x2go.org/x2goclient.git
> 
> and run debuild -uc -us (plus fullfill build-deps before) on a Debian  
> squeeze or above system and check if the patch fixes your delays???
> 
> Best+Thanks,
> Mike
<snip>
Thanks for digging that out, Mike.  I'm going to mark this mail so I
don't forget it as I likely won't have a chance to do this before
Monday.  Perhaps we'll have confirmation from Alex by then - John




More information about the x2go-dev mailing list