On Tue, May 28, 2013 at 07:51:37PM +0200, Michael Gmelin wrote:
> On Tue, 28 May 2013 15:16:00 +0100
> RW <rwmailli...@googlemail.com> wrote:
> 
> > On Tue, 28 May 2013 15:14:52 +0200
> > John Marino wrote:
> > 
> > > All
> > > patches only take 74 seconds to download[2] so there is no sympathy
> > > for your obviously single data point anecdote, 
> > 
> > Well at the point you provided one data-point there was only one data
> > point. And it was like pulling teeth to get you to eliminate the
> > alternative explanations. Was it really too much to ask that you
> > provided some actual evidence. 
> > 
> > > you're clearly doing
> > > something wrong.  You need to stop complaining and start think about
> > > folks with slow connections[3] who also rebuild Vim frequently. 
> > 
> > Don't make things up. I never said anything about frequent rebuilds,
> > the patches all get redownloaded on the next rebuild. 
> 
> The real issue is not the number of patches, but the fact that every
> single patch is downloaded by invoking the fetch(1) command, creating
> lots of overhead not limited to the fetch command itself. The ports
> system wasn't designed for such an amount of distfiles in a single
> port I guess.
> 
> I just timed fetching the patches through ports vs. fetching over
> HTTP/1.1 using ftp/curl vs calling fetch directly. The VIM tarball was
> already downloaded, so this is really just the patches (plus
> downloading 6mb is barely noticeable on a fast line). It's a slow
> machine on a fast line.
> 
> Fetch:
> [user@server /usr/ports/editors/vim]$ time sudo make fetch
> ....
> real    4m57.327s
> user    0m17.010s
> sys     0m39.588s
> 
> Curl:
> [user@server /tmp]$ longcurlcommandline 
> ....
> real    0m15.291s
> user    0m0.026s
> sys     0m0.272s
> 
> Fetch on the command line (after initial make fetch, so this is only
> measuring transmission of the files):
> cd /usr/ports/editors/distfiles
> time for name in 7.3.*; do
>   fetch http://artfiles.org/vim.org/patches/7.3/$name
> done
> ....
> real    1m25.329s
> user    0m0.660s
> sys     0m3.174s
> 
> So just the fact we're invoking fetch for every file costs us about one
> minute - I assume the time lost is much bigger on a slow line with
> long latency. The remaining 3.5 minutes are spent somewhere in the
> ports infrastructure and clearly depend on the performance of the
> machine used. For comparison I timed "make fetch" on a reasonably fast
> server (good IO, fast datacenter connection), make fetch still took
> about 120 seconds(!).
> 
> So the bottomline is:
> - Using HTTP/1.1 and keepalive could safe a lot of time
> - The ports infrastructure creates a lot of overhead per patch file
> 
> Maybe there's something we can do to improve the situation.
> 
> Cheers,
> Michael
> 
> PS: I don't use vim myself and have no stake in this discussion
> whatsoever.

Someone in this thread proposed to change the port to use phttpget, so I
gave it a try using a German mirror nearby with 6 Mbit/s downlink:

$ time /usr/libexec/phttpget ftp.vim.ossmirror.de $(eval echo 
/pub/vim/patches/7.3/{$(make -C /usr/ports/editors/vim -VPATCHFILES | sed 's/\ 
/,/g')})
http://ftp.vim.ossmirror.de//pub/vim/patches/7.3/7.3.001: 200 OK
http://ftp.vim.ossmirror.de//pub/vim/patches/7.3/7.3.002: 200 OK
http://ftp.vim.ossmirror.de//pub/vim/patches/7.3/7.3.003: 200 OK
http://ftp.vim.ossmirror.de//pub/vim/patches/7.3/7.3.004: 200 OK
http://ftp.vim.ossmirror.de//pub/vim/patches/7.3/7.3.005: 200 OK
[...]
http://ftp.vim.ossmirror.de//pub/vim/patches/7.3/7.3.974: 200 OK
http://ftp.vim.ossmirror.de//pub/vim/patches/7.3/7.3.984: 200 OK
http://ftp.vim.ossmirror.de//pub/vim/patches/7.3/7.3.985: 200 OK
http://ftp.vim.ossmirror.de//pub/vim/patches/7.3/7.3.1000: 200 OK

real    0m12.509s
user    0m0.154s
sys     0m0.089s


That's really nice! 

Compare this to the current version using fetch(1):

 time make PATCH_SITES=http://ftp.vim.ossmirror.de/pub/vim/patches/7.3/ fetch
===>  Found saved configuration for vim-7.3.669_1
===>   vim-7.3.1014 depends on file: /usr/local/sbin/pkg - found
=> 7.3.002 doesn't seem to exist in /usr/ports/distfiles/vim.
=> Attempting to fetch http://ftp.vim.ossmirror.de/pub/vim/patches/7.3/7.3.002
7.3.002                                       100% of 1610  B   16 MBps 00m00s
=> 7.3.003 doesn't seem to exist in /usr/ports/distfiles/vim.
=> Attempting to fetch http://ftp.vim.ossmirror.de/pub/vim/patches/7.3/7.3.003
7.3.003                                       100% of 1299  B 1281 kBps 00m00s
=> 7.3.004 doesn't seem to exist in /usr/ports/distfiles/vim.
[...]
=> 7.3.984 doesn't seem to exist in /usr/ports/distfiles/vim.
=> Attempting to fetch http://ftp.vim.ossmirror.de/pub/vim/patches/7.3/7.3.984
7.3.984                                       100% of 1706  B 2852 kBps 00m00s
=> 7.3.985 doesn't seem to exist in /usr/ports/distfiles/vim.
=> Attempting to fetch http://ftp.vim.ossmirror.de/pub/vim/patches/7.3/7.3.985
7.3.985                                       100% of 1691  B   14 MBps 00m00s
=> 7.3.1000 doesn't seem to exist in /usr/ports/distfiles/vim.
=> Attempting to fetch http://ftp.vim.ossmirror.de/pub/vim/patches/7.3/7.3.1000
7.3.1000                                      100% of 1637  B 1715 kBps 00m00s
===> Fetching all distfiles required by vim-7.3.1014 for building

Total time                              : 3:48.55s
CPU utilisation (percentage)            : 54.5%


That's much slower using the same mirror.


Attachment: pgpJAsBTpip0v.pgp
Description: PGP signature

Reply via email to