bugConcurrent Versions System - Bugs: bug #48589, client and server don't set...


bug #48589: client and server don't set TCP_NODELAY, resulting in high latency of CVS commands

Submitter:  None
Submitted:  Thu 21 Jul 2016 10:17:10 PM UTC
Category:  Bug Fix (patch attached) Severity:  3 - Normal
Item Group:  None Status:  None
Privacy:  Public Assigned to:  None
Open/Closed:  Open Release: 
Fixed Release:  None Fixed Feature Release:  None
* Mandatory Fields

Add a New Comment Rich Markup

Thu 21 Jul 2016 10:17:10 PM UTC, original submission:  


I just noticed that the latency for simple CVS commands when contacting a remote server is quite high, for example on a repository with only one file, where the server is on the local machine but accessed through a pserver:

$ echo $CVSROOT
$ time cvs log bar
cvs log: Logging bar

real    0m0.095s
user    0m0.004s
sys     0m0.000s

The problem is that neither the client nor the server set TCP_NODELAY on the socket, and given the CVS protocol, this can result in high latency (see https://en.wikipedia.org/wiki/Nagle%27s_algorithm#Interactions_with_real-time_systems).

The attached patch sets TCP_NODELAY both client and server-side, and results in much lower latency:

cf@thinkpad:/tmp$ time ~/ccvs/src/cvs checkout bar
cvs checkout: Updating bar

real    0m0.020s
user    0m0.008s
sys     0m0.000s




(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:

Attached Files
file #37982:  cvs_tcp_nodelay.diff added by None (3KiB - text/x-patch)


Depends on the following items: None found

Items that depend on this one: None found


CC list is empty


There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

Only logged-in users can vote.


Follows 1 latest change.

Date Changed by Updated Field Previous Value => Replaced by
2016-07-21 None Attached File- Added cvs_tcp_nodelay.diff, #37982

Back to the top

Powered by Savane 3.13-4b48.
Corresponding source code