Post Reply 
 
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Using sanboot --no-describe to boot iso image is extremely slow compare to memdisk
2013-10-22, 05:26
Post: #1
Using sanboot --no-describe to boot iso image is extremely slow compare to memdisk
I am planning to migrate mixed Syslinux + iPXE environment to pure iPXE due to chaining between Syslinux and IPXE cause lot of problem.

I have a Windows PE ISO that allow me to boot into Windows PE and perform Windows installation via network.

The pure iPXE sanboot script works but it is extremely slow:

sanboot --no-describe http://server/win7_x64.iso
goto start


Using syslinux's memdisk boot into Windows PE is very fast:

kernel syslinux.602/bios/memdisk iso
initrd http://server/win7_x64.iso
boot


Any ideas?
Find all posts by this user
Quote this message in a reply
2013-10-22, 10:02
Post: #2
RE: Using sanboot --no-describe to boot iso image is extremely slow compare to memdisk
The only thing I can think of is that your web server doesn't support keep-alive or range-requests, which cause it to download the entire ISO every time it tries to access some part of it when using sanboot. But since your trying to boot WinPE, why aren't you using wimboot? There is a WinPE-specific howto here: http://ipxe.org/howto/winpe
Visit this user's website Find all posts by this user
Quote this message in a reply
2013-10-23, 01:57 (This post was last modified: 2013-10-23 02:07 by ccy.)
Post: #3
RE: Using sanboot --no-describe to boot iso image is extremely slow compare to memdisk
(2013-10-22 10:02)robinsmidsrod Wrote:  The only thing I can think of is that your web server doesn't support keep-alive or range-requests, which cause it to download the entire ISO every time it tries to access some part of it when using sanboot. But since your trying to boot WinPE, why aren't you using wimboot? There is a WinPE-specific howto here: http://ipxe.org/howto/winpe

I am using Apache httpd as web server. The KeepAlive is On by default.

The apache httpd access_log shows something that may help to rectify the problem.

Using syslinux/memdisk iso, the access_log shows:

Code:
192.168.0.74 - - [23/Oct/2013:08:51:05 +0800] "GET /windows.pe/win7_x64.iso HTTP/1.1" 200 218308608 "-" "iPXE/1.0.0+ (6f43b)"

If using sanboot for iso image, the access_log shows:

Code:
192.168.0.74 - - [23/Oct/2013:08:50:06 +0800] "GET /windows.pe/win7_x64.iso HTTP/1.1" 206 63488 "-" "iPXE/1.0.0+ (6f43b)"
192.168.0.74 - - [23/Oct/2013:08:50:06 +0800] "GET /windows.pe/win7_x64.iso HTTP/1.1" 206 63488 "-" "iPXE/1.0.0+ (6f43b)"
192.168.0.74 - - [23/Oct/2013:08:50:06 +0800] "GET /windows.pe/win7_x64.iso HTTP/1.1" 206 32768 "-" "iPXE/1.0.0+ (6f43b)"
192.168.0.74 - - [23/Oct/2013:08:50:06 +0800] "GET /windows.pe/win7_x64.iso HTTP/1.1" 206 63488 "-" "iPXE/1.0.0+ (6f43b)"
192.168.0.74 - - [23/Oct/2013:08:50:06 +0800] "GET /windows.pe/win7_x64.iso HTTP/1.1" 206 63488 "-" "iPXE/1.0.0+ (6f43b)"
192.168.0.74 - - [23/Oct/2013:08:50:06 +0800] "GET /windows.pe/win7_x64.iso HTTP/1.1" 206 63488 "-" "iPXE/1.0.0+ (6f43b)"
192.168.0.74 - - [23/Oct/2013:08:50:06 +0800] "GET /windows.pe/win7_x64.iso HTTP/1.1" 206 63488 "-" "iPXE/1.0.0+ (6f43b)"
192.168.0.74 - - [23/Oct/2013:08:50:06 +0800] "GET /windows.pe/win7_x64.iso HTTP/1.1" 206 63488 "-" "iPXE/1.0.0+ (6f43b)"
192.168.0.74 - - [23/Oct/2013:08:50:06 +0800] "GET /windows.pe/win7_x64.iso HTTP/1.1" 206 63488 "-" "iPXE/1.0.0+ (6f43b)"
192.168.0.74 - - [23/Oct/2013:08:50:06 +0800] "GET /windows.pe/win7_x64.iso HTTP/1.1" 206 63488 "-" "iPXE/1.0.0+ (6f43b)"
192.168.0.74 - - [23/Oct/2013:08:50:07 +0800] "GET /windows.pe/win7_x64.iso HTTP/1.1" 206 63488 "-" "iPXE/1.0.0+ (6f43b)"
192.168.0.74 - - [23/Oct/2013:08:50:10 +0800] "GET /windows.pe/win7_x64.iso HTTP/1.1" 206 63488 "-" "iPXE/1.0.0+ (6f43b)"

The first impression is the sanboot doesn't load the iso image as efficient as memdisk.

Is there any other configurations to set to make it work?
(2013-10-22 10:02)robinsmidsrod Wrote:  The only thing I can think of is that your web server doesn't support keep-alive or range-requests, which cause it to download the entire ISO every time it tries to access some part of it when using sanboot. But since your trying to boot WinPE, why aren't you using wimboot? There is a WinPE-specific howto here: http://ipxe.org/howto/winpe

Thanks. My httpd.conf KeepAlive was off. If I switch it ON, it load faster now. However, it still slower than memdisk by about 20%. I think it is due to the buffer size allocated for partial read.
Find all posts by this user
Quote this message in a reply
2013-10-23, 10:44
Post: #4
RE: Using sanboot --no-describe to boot iso image is extremely slow compare to memdisk
sanboot reads block by block, as they are requested, which is why you see multiple requests for 63488 bytes. memdisk downloads the entire ISO image into memory in one go. Obviously the memdisk option is faster if you require the entire image to be loaded, not just parts of it. The memdisk option uses more total memory (twice as much, if I recall), which might be an issue depending on the hardware you're dealing with (how much memory it has installed).

Glad you figured it out.
Visit this user's website Find all posts by this user
Quote this message in a reply
2013-10-23, 15:07
Post: #5
RE: Using sanboot --no-describe to boot iso image is extremely slow compare to memdisk
(2013-10-23 01:57)ccy Wrote:  Thanks. My httpd.conf KeepAlive was off. If I switch it ON, it load faster now. However, it still slower than memdisk by about 20%. I think it is due to the buffer size allocated for partial read.

Yes; keepalives will make a significant speed improvement.

For the fastest possible speed, you need to be using wimboot instead of attempting to SAN-boot an ISO. As a general rule, SAN-booting an ISO is almost always the wrong solution.

Michael
Visit this user's website Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 2 Guest(s)