6

I am building a CentOS 5.4 system that boots off a compact flash card using a card reader that emulates an IDE drive. It literally takes about an hour to boot. The ultra-slow part occurs when Grub is loading the kernel. Once that's done, the rest of the boot process only takes about a minute to get to a login prompt. Does anyone have any suggestions?

I suspect that it may have to do with UDMA. Everything IDE-related in my BIOS seems to checkout. The read performance hdparm is telling me 1.77 MB/s. Ouch! (But even at that rate, it still shouldn't take an hour to decompress and load the kernel)

 [root@server ~]# hdparm -tT /dev/hdc

/dev/hdc:
 Timing cached reads:   2444 MB in  2.00 seconds = 1222.04 MB/sec
 Timing buffered disk reads:    6 MB in  3.39 seconds =   1.77 MB/sec

Trying to enable DMA is a no-go though:

[root@server ~]# hdparm -d1 /dev/hdc

/dev/hdc:
 setting using_dma to 1 (on)
 HDIO_SET_DMA failed: Operation not permitted
 using_dma    =  0 (off)

Here's some command outputs that might help:

System

[root@server ~]# uname -a
Linux server.localdomain 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:47:32 EDT 2009 i686 i686 i386 GNU/Linux

PCI info:

[root@server ~]# lspci -v
00:00.0 Host bridge: Intel Corporation 82945G/GZ/P/PL Memory Controller Hub (rev 02)
        Subsystem: Intel Corporation 82945G/GZ/P/PL Memory Controller Hub
        Flags: bus master, fast devsel, latency 0
        Capabilities: [e0] Vendor Specific Information

00:02.0 VGA compatible controller: Intel Corporation 82945G/GZ Integrated Graphics Controller (rev 02) (prog-if 00 [VGA controller])
        Subsystem: Intel Corporation 82945G/GZ Integrated Graphics Controller
        Flags: bus master, fast devsel, latency 0, IRQ 10
        Memory at fdf00000 (32-bit, non-prefetchable) [size=512K]
        I/O ports at ff00 [size=8]
        Memory at d0000000 (32-bit, prefetchable) [size=256M]
        Memory at fdf80000 (32-bit, non-prefetchable) [size=256K]
        Capabilities: [90] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-
        Capabilities: [d0] Power Management version 2

00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 01) (prog-if 00 [UHCI])
        Subsystem: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1
        Flags: bus master, medium devsel, latency 0, IRQ 16
        I/O ports at fe00 [size=32]

00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 01) (prog-if 00 [UHCI])
        Subsystem: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2
        Flags: bus master, medium devsel, latency 0, IRQ 17
        I/O ports at fd00 [size=32]

00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 01) (prog-if 00 [UHCI])
        Subsystem: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3
        Flags: bus master, medium devsel, latency 0, IRQ 18
        I/O ports at fc00 [size=32]

00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 01) (prog-if 00 [UHCI])
        Subsystem: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4
        Flags: bus master, medium devsel, latency 0, IRQ 19
        I/O ports at fb00 [size=32]

00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01) (prog-if 20 [EHCI])
        Subsystem: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller
        Flags: bus master, medium devsel, latency 0, IRQ 16
        Memory at fdfff000 (32-bit, non-prefetchable) [size=1K]
        Capabilities: [50] Power Management version 2
        Capabilities: [58] Debug port

00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1) (prog-if 01 [Subtractive decode])
        Flags: bus master, fast devsel, latency 0
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=32
        I/O behind bridge: 0000d000-0000dfff
        Memory behind bridge: fde00000-fdefffff
        Prefetchable memory behind bridge: 00000000fdd00000-00000000fdd00000
        Capabilities: [50] #0d [0000]

00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)
        Subsystem: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge
        Flags: bus master, medium devsel, latency 0
        Capabilities: [e0] Vendor Specific Information

00:1f.2 IDE interface: Intel Corporation 82801GB/GR/GH (ICH7 Family) SATA IDE Controller (rev 01) (prog-if 80 [Master])
        Subsystem: Intel Corporation 82801GB/GR/GH (ICH7 Family) SATA IDE Controller
        Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 17
        I/O ports at <unassigned>
        I/O ports at <unassigned>
        I/O ports at <unassigned>
        I/O ports at <unassigned>
        I/O ports at f800 [size=16]
        Capabilities: [70] Power Management version 2

00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 01)
        Subsystem: Intel Corporation 82801G (ICH7 Family) SMBus Controller
        Flags: medium devsel, IRQ 17
        I/O ports at 0500 [size=32]

01:04.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
        Subsystem: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
        Flags: bus master, medium devsel, latency 32, IRQ 18
        I/O ports at de00 [size=256]
        Memory at fdeff000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [50] Power Management version 2

01:06.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
        Subsystem: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
        Flags: bus master, medium devsel, latency 32, IRQ 17
        I/O ports at dc00 [size=256]
        Memory at fdefe000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [50] Power Management version 2

01:07.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
        Subsystem: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
        Flags: bus master, medium devsel, latency 32, IRQ 19
        I/O ports at da00 [size=256]
        Memory at fdefd000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [50] Power Management version 2

hdparm ouput:

[root@server ~]# hdparm  /dev/hdc   

/dev/hdc:
 multcount    =  0 (off)
 IO_support   =  0 (default 16-bit)
 unmaskirq    =  0 (off)
 using_dma    =  0 (off)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 8146/16/63, sectors = 8211168, start = 0

[root@server ~]# hdparm -I /dev/hdc

/dev/hdc:

ATA device, with non-removable media
        Model Number:       InnoDisk Corp. - iCF4000 4GB            
        Serial Number:      20091023AACA70000753
        Firmware Revision:  081107  
Standards:
        Supported: 5 
        Likely used: 6
Configuration:
        Logical         max     current
        cylinders       8146    8146
        heads           16      16
        sectors/track   63      63
        --
        CHS current addressable sectors:    8211168
        LBA    user addressable sectors:    8211168
        device size with M = 1024*1024:        4009 MBytes
        device size with M = 1000*1000:        4204 MBytes (4 GB)
Capabilities:
        LBA, IORDY(can be disabled)
        Standby timer values: spec'd by Vendor
        R/W multiple sector transfer: Max = 2   Current = 2
        DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 
             Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4 
             Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
        Enabled Supported:
           *    Power Management feature set
           *    WRITE_BUFFER command
           *    READ_BUFFER command
           *    NOP cmd
           *    CFA feature set
           *    Mandatory FLUSH_CACHE
HW reset results:
        CBLID- above Vih
        Device num = 0
CFA power mode 1:
        enabled and required by some commands
        Maximum current = 100ma
Checksum: correct

Edit: It's taking about 5 minutes to just get past the "GRUB loading stage 2..." message. I've come to the conclusion that the problem is likely either: bootloader, BIOS/firmware, or a hardware issue. I've played with all relevant BIOS settings without any luck and replaced my IDE cable in case I had a bad one. I have a new compact flash card (a different brand) on order, but it'll be a few days before it gets here. I'm also currently running Memtest86 to see if I have an odd issue with my RAM. Once that's done, I'll see if there's a firmware update available for my motherboard.

1
  • Do you have a separate boot partition?
    – TonyUser
    Mar 14, 2010 at 20:37

4 Answers 4

4

Problem solved!

Oddly enough, disabling UDMA in the BIOS fixed the problem.

Thanks goes to this Ubuntu thread for having the answer. And thanks to everyone here for their suggestions as well!

0

You most likely dont have the correct driver built in the kernel. Also, make sure your IDE controller is enabled in the BIOS.

Otherwise, please post the content of /var/log/dmesg

Thanks

2
  • 2
    The more I work on this, the more obvious that the problem seems to with the bootloader (or something prior to the bootloader: BIOS or hardware problems) since it's painfully slow before the kernel is even loaded. Also, if my IDE controller were disabled in the BIOS, I wouldn't be booting, period.
    – jamieb
    Mar 14, 2010 at 19:57
  • There is chance it boot, small chances but it still have some, depending on the motherboard, I've had an Aopen doing this after a bios update. Please post the /var/log/dmesg I'm curious
    – Embreau
    Mar 14, 2010 at 20:02
0

Try the GRUB testload command on the kernel file - is that also slow?

1
  • I let it try to boot with that option and it took over an hour to run before I gave up and rebooted. I get "GRUB loading stage 2..." for about five minutes and then it attempts to run whatever is in grub.conf. I'm really at a loss here... Doing the DVDROM-based install doesn't take all that long, and I can boot fine if I install to a SATA drive instead.
    – jamieb
    Mar 14, 2010 at 19:55
0

I feel your disk buffer is very slow!! rest of thing look ok to me..

Timing buffered disk reads:    6 MB in  3.39 seconds =   1.77 MB/sec

following is from my running server with SATA

[root@rajat Rajat]# hdparm -tT /dev/sda 

/dev/sda:
 Timing cached reads:   2368 MB in  2.00 seconds = 1184.65 MB/sec
 Timing buffered disk reads:  198 MB in  3.01 seconds =  65.73 MB/sec

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .