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

Mike Gabriel mike.gabriel at das-netzwerkteam.de
Fri Sep 16 23:17:29 CEST 2011


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


-- 

DAS-NETZWERKTEAM
mike gabriel, dorfstr. 27, 24245 barmissen
fon: +49 (4302) 281418, fax: +49 (4302) 281419

GnuPG Key ID 0xB588399B
mail: mike.gabriel at das-netzwerkteam.de, http://das-netzwerkteam.de

freeBusy:
https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.xfb
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: Digitale PGP-Unterschrift
URL: <http://lists.x2go.org/pipermail/x2go-dev/attachments/20110916/0ea1685c/attachment.pgp>


More information about the x2go-dev mailing list