On Wed, May 26, 2004 at 09:42:55AM +0200, Paul Slootman wrote:
> What is a typical value for "len-total"?

The most typical value is "4".  Once a file starts to transfer, values
are typically several K (I've seen up to 32K, but only on larger files).

I had been thinking that a better algorithm for setting the max value
correctly for both large and small values of bwlimit would be good.
Maybe something like this:

--- io.c        15 May 2004 19:31:10 -0000      1.121
+++ io.c        26 May 2004 09:48:27 -0000
@@ -47,6 +47,7 @@ static time_t last_io;
 static int no_flush;
 
 extern int bwlimit;
+extern size_t bwlimit_writemax;
 extern int verbose;
 extern int io_timeout;
 extern int am_server;
@@ -812,6 +813,8 @@ static void writefd_unbuffered(int fd,ch
                if (FD_ISSET(fd, &w_fds)) {
                        int ret;
                        size_t n = len-total;
+                       if (bwlimit && n > bwlimit_writemax)
+                               n = bwlimit_writemax;
                        ret = write(fd,buf+total,n);
 
                        if (ret < 0) {
--- options.c   24 May 2004 18:38:05 -0000      1.152
+++ options.c   26 May 2004 09:48:27 -0000
@@ -83,6 +83,7 @@ int safe_symlinks = 0;
 int copy_unsafe_links = 0;
 int size_only = 0;
 int bwlimit = 0;
+size_t bwlimit_writemax = 0;
 int delete_after = 0;
 int only_existing = 0;
 int opt_ignore_existing = 0;
@@ -728,6 +729,12 @@ int parse_arguments(int *argc, const cha
        if (do_progress && !verbose)
                verbose = 1;
 
+       if (bwlimit) {
+               bwlimit_writemax = (size_t)bwlimit * 128;
+               if (bwlimit_writemax < 512)
+                       bwlimit_writemax = 512;
+       }
+
        if (files_from) {
                char *colon;
                if (*argc != 2 && !(am_server && am_sender && *argc == 1)) {

This makes the calculation more like the original for larger bwlimit
values, but tries to avoid making really small TCP packets for smaller
bwlimit values (which was a concern someone expressed a while back).
The above logic for setting bwlimit_writemax should probably be tuned
with actual testing (it's currently just an arbitrary "this looks good"
choice).

..wayne..
-- 
To unsubscribe or change options: http://lists.samba.org/mailman/listinfo/rsync
Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html

Reply via email to