Smoother bandwidth limiting

Mikko Rauhala mjr at
Tue Feb 4 12:06:05 EST 2003


I'm using a cable modem with a slow uplink, and therefore when I want to
transfer large amounts of data upstream, I tend to use rsync with
--bwlimit. However, the stock rsync seems to send a bit too much data at
once for comfort, momentarily blocking my meager upstream enough to
bother latency and downstream data transfer (through not getting through
enough ack packets when rsync data fills the cabel modem buffer).

I tried a quick kludge, simply limiting the size of a single write()
operation so that the write/sleep cycle happens more often, yielding (I
hoped) a more steady flow of data, so that the cabel modem buffer
wouldn't contain too much data at any point. Through comparing
interactive session use before and after the patch, I would have to
conclude that this kludge worked in my Debian GNU/Linux (unstable) box.

Now, the point is that I like the kludge and I'd like rsync proper to
adopt perhaps a lesser-kludgeish command line option (or something) for
this kind of functionality, if you're so inclined. Might be useful to
others in similiar circumstances.

Here's my quick kludge (just a one-liner really, thanks to a proper
write loop structure), which probably can reduce performance in the
general case through using more writes, but has worked nicely for me
(against 2.5.5 from Debian's sources; and yes, the "1024" is a magic

--- io.c.old    2002-03-22 07:14:44.000000000 +0200
+++ io.c        2003-02-04 02:50:14.000000000 +0200
@@ -440,7 +440,7 @@
                if (FD_ISSET(fd, &w_fds)) {
                        int ret;
                        size_t n = len-total;
-                       ret = write(fd,buf+total,n);
+                       ret = write(fd,buf+total,(n<1024?n:1024));
                        if (ret == -1 && errno == EINTR) {

Mikko Rauhala   - mjr at     - <URL:>
Transhumanist   - WTA member     - <URL:>
Singularitarian - SIAI supporter - <URL:>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url :

More information about the rsync mailing list