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

Oleksandr Shneyder oleksandr.shneyder at obviously-nice.de
Mon Sep 19 09:51:16 CEST 2011


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.

>>
>> @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>
> Hmm . . . I wonder if this explains why the Windows client performance
> is so much worse than Linux.  I assumed it was an X to GDI translation
> issue but the symptoms I described in scrolling through Evolution mail
> are press several keystrokes and one actions, then a long pause, then
> the rest of the keystrokes follow as if they've been buffered - John
> 
> _______________________________________________
> X2go-Dev mailing list
> X2go-Dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/x2go-dev

I can imagine, that it can be problem in libssh on Windows. Can you try
to build a new libssh.dll on your system? However, I still cannot
reproduce your issue on my windows client :(

regards,
Alex
-- 
Oleksandr Shneyder
Dipl. Informatik
X2go Core Developer Team

email:  oleksandr.shneyder at obviously-nice.de
web: www.obviously-nice.de

--> X2go - everywhere at home

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
URL: <http://lists.x2go.org/pipermail/x2go-dev/attachments/20110919/e77918ac/attachment.pgp>


More information about the x2go-dev mailing list