Hi Alex,

On Mo 19 Sep 2011 09:51:16 CEST Oleksandr Shneyder wrote:

Am 17.09.2011 03:39, schrieb John A. Sullivan III:
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;

I don't think that that can be helpful. This part of code is only for
reverse tunnel which is used for FS forwarding and Pulse Audio.


I took another close look at the code of sshProcess.cpp. The patch is applied to the method sshProcess::tunnelLoop. This method only gets execute in sshProcess::startTunnel.

The call is:

<quote>
if (!reverse)
  tunnelLoop();
else
{
    <blablabla>
}
</quote>

So this makes me think that tunnelLoop() is not for reverse tunneling but for the graphics tunnel.

Could you take another look please?

Thanks,
Mike

--

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

GnuPG Key ID 0xB588399B
mail: [email protected], http://das-netzwerkteam.de

freeBusy:
https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.xfb

Attachment: pgpTuEAltmhS3.pgp
Description: Digitale PGP-Unterschrift

_______________________________________________
X2go-Dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/x2go-dev

Reply via email to