[ipxe-devel] undionly.kpxe http download slow

Daniel Pittman daniel at puppetlabs.com
Mon Oct 28 17:05:37 UTC 2013

On Sun, Oct 27, 2013 at 8:10 AM, Levente LEVAI <levail at aviatronic.hu> wrote:
> I have tried recently to use the kernel/initrd commands to
> boot our system (kernel&initrd is fetched from an 'publicfile'
> http server).
> I found that the download is unduly slow. So I made a tcpdump of
> the download (on the http server) and I found the amount of fetched
> data per time unit decreasing exponentially with the total amount
> data fetched upto a given time.

We ran into something that may be the same problem using the Ruby
Sinatra HTTP "server" (< 1.4.4, which fixes this.)

It didn't include a "Content-Length" header in the HTTP response, just
sent an HTTP chunked file down to iPXE.  This led to insanely slow
downloads; once we patched Sinatra to include that header downloads
are comparable to TFTP performance.

Our theory, which we never investigated enough to verify, was that
this is some sort of memory management issue in the downloader, which
spends increasing amounts of time reallocating and moving memory
around as the download buffer grows.  (eg: over an hour for 170MB,
compared to less than a minute once Content-Length is included.)

You might verify if you get a content-length from the remote server,
and if possible, alter it to include that header and see if the
problem is resolved.

Since we didn't spend the time to actually confirm our theory, I have
been reluctant to report the bug, but better something than nothing, I
suppose. :)

Daniel Pittman
⎋ Puppet Labs Developer – http://puppetlabs.com
♲ Made with 100 percent post-consumer electrons

More information about the ipxe-devel mailing list