[CentOS] Very slow disk performance on CentOS 4.5

Fri Aug 31 15:44:35 UTC 2007
Alfred von Campe <alfred at von-campe.com>

I recently moved my CentOS 4.5 disk from a Lenovo ThinkCentre M52  
(3.2 GHz Pentium 4) to a Lenovo ThinkCentre M55 (3.4 GHz Core 2  
Duo).  I had to install the SMP kernel, but other than that  
everything just worked.  I did have an issue with accidentally  
initializing my /boot partition, but that was my own fault.

But the system was not feeling right.  Some things just seemed to be  
slower, but I couldn't put my finger on it.  Today, I noticed that  
disk I/O was very slow to one of the disks (the boot drive, /dev/ 
hda).  It took over 18 minutes to unzip a set of files that used to  
take just under 2 minutes on the old system.  Sure enough, if I  
copied the files to the second drive (/dev/sda), I was able to unzip  
them in under 2 minutes again.

When I accidentally clobbered the /boot partition, I learned that  
there were two IDE controllers on this motherboard, which explained  
why one SATA drive was named /dev/hda and the other SATA drive /dev/ 
sda.   But I find it hard to believe that there would be such a  
performance difference between the two controllers/drivers/disks.   
And I know the slow disk worked just fine before I moved it to the  
new system.

Any ideas what could cause a drive to be so slow?  Could it be that  
DMA is disabled on the drive (see the output of hdparm below)?  Also,  
why does hdparm work for one disk but not the other?

Thanks for any pointers,
Alfred


# lspci
00:00.0 Host bridge: Intel Corporation 82Q963/Q965 Memory Controller  
Hub (rev 02)
00:01.0 PCI bridge: Intel Corporation 82Q963/Q965 PCI Express Root  
Port (rev 02)
00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB  
UHCI Contoller #4 (rev 02)
00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB  
UHCI Controller #5 (rev 02)
00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2  
EHCI Controller #2 (rev 02)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio  
Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI  
Express Port 1 (rev 02)
00:1c.4 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI  
Express Port 5 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB  
UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB  
UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB  
UHCI Controller #3 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2  
EHCI Controller #1 (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev f2)
00:1f.0 ISA bridge: Intel Corporation 82801HB/HR (ICH8/R) LPC  
Interface Controller (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801H (ICH8 Family) 4 port  
SATA IDE Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus  
Controller (rev 02)
00:1f.5 IDE interface: Intel Corporation 82801H (ICH8 Family) 2 port  
SATA IDE Controller (rev 02)
01:00.0 VGA compatible controller: nVidia Corporation G70 [GeForce  
7300 GT] (rev a1)
03:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5755  
Gigabit Ethernet PCI Express (rev 02)
0a:0a.0 Serial controller: NetMos Technology PCI 9835 Multi-I/O  
Controller (rev 01)


00:1f.2 IDE interface: Intel Corporation 82801H (ICH8 Family) 4 port  
SATA IDE Controller (rev 02) (prog-if 8a [Master SecP PriP])
         Subsystem: Lenovo: Unknown device 1011
         Flags: bus master, 66Mhz, medium devsel, latency 0, IRQ 177
         I/O ports at <unassigned>
         I/O ports at <unassigned>
         I/O ports at <unassigned>
         I/O ports at <unassigned>
         I/O ports at 30d0 [size=16]
         I/O ports at 30c0 [size=16]
         Capabilities: [70] Power Management version 3

00:1f.5 IDE interface: Intel Corporation 82801H (ICH8 Family) 2 port  
SATA IDE Controller (rev 02) (prog-if 85 [Master SecO PriO])
         Subsystem: Lenovo: Unknown device 1011
         Flags: bus master, 66Mhz, medium devsel, latency 0, IRQ 185
         I/O ports at 3428 [size=8]
         I/O ports at 341c [size=4]
         I/O ports at 3420 [size=8]
         I/O ports at 3418 [size=4]
         I/O ports at 30f0 [size=16]
         I/O ports at 30e0 [size=16]
         Capabilities: [70] Power Management version 3

# hdparm /dev/hda
/dev/hda:
multcount    = 16 (on)
IO_support   =  0 (default 16-bit)
unmaskirq    =  0 (off)
using_dma    =  0 (off)
keepsettings =  0 (off)
readonly     =  0 (off)
readahead    = 256 (on)
geometry     = 24792/255/63, sectors = 203928109056, start = 0

# hdparm /dev/sda
/dev/sda:
HDIO_GET_MULTCOUNT failed: Inappropriate ioctl for device
IO_support   =  0 (default 16-bit)
readonly     =  0 (off)
readahead    = 256 (on)
geometry     = 9730/255/63, sectors = 80032038912, start = 0