Re: Feedback Request: yum-plugin-multithread

Seth Vidal <[email protected]>
Newsgroups gmane.linux.rpm.yum
Message-ID <[email protected]>

On Thu, 18 Feb 2010, Michael Schultz wrote:

> Hello all,
>
> In my "spare time," I wrote a simple yum-plugin that uses the pycurl
> library to download the RPM packages as a predownload hook.  The goal
> is to better use the client connection bandwidth by downloading multiple
> packages at a time.  I looked through the history of this and the dev list,
> but only saw an attempt by someone hacking something into yum itself.  This
> was shot down, with the suggestion to write it as a plugin and make use of
> pycurl to handle the downloads.  I saw no follow-ups, so here I am.
>
> From a high-level, this plugin uses pycurl and downloads all the packages
> max_connections (16) at a time before the yum client processes downloads.
> Once all packages are downloaded, control is returned to yum, which sees
> that it has all the packages and begins the transactions as normal.
>
> Right now the plugin is still in its infancy, so I am looking for quick
> feedback.  You can download the plugin from:
> http://dev.beyond-syntax.com/yum/multithread.py
> (for an example config file just replace .py with .conf).  There are a few
> things I would like to fix up, but haven't figured out how:
>
>  - Better output would be nice, but I'm not sure how to get there.
>  - It should integrate with fastestmirror (since it orders the repos), but
>    it would be nice to integrate with presto too, not sure how.
>  - Reordering downloads, starting biggest ones first and letting smaller
>    ones fill the download during that time.
>  - Distribute the downloads over more than just one mirror (if not already).
>
> In my completely unscientific testing, I took a VM snapshot and ran yum
> without presto and specified '--downloadonly'.  The update was 94 packages,
> totaling 102 Megabytes.  (Both runs use the same mirror.)
>  - Multithread plugin downloaded all packages in 34 seconds.
>  - Normal yum downloaded all packages in 53 seconds.
>
> Obviously, this is strongly dependent on the connection and server
> capabilities, but I would assume any Fedora/RPM mirror will have
> bandwidth >> client bandwidth.  By creating more connections, multithread
> consumes more bandwidth to speed up the overall throughput.
>
> Questions, comments, observations?

Great!

This work notwithstanding - if you'd like to work on adding curlMulti() 
support generally to urlgrabber - you'd be MOST welcome.

-sv
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.