ATA disk performance (ICH2 controller), some tests and comparison with Linux 2.6.5

Jeremy Chadwick freebsd at jdc.parodius.com
Sat Sep 25 14:45:16 PDT 2004


A few things from my perspective:

1)  Using dd to test disk performance is somewhat of a misnomer.  You
should consider a tool like bonnie++ instead (ports/benchmarks/bonnie++).

2)  Using block sizes of 512 bytes is pretty absurd.  Try other block
sizes, preferably 8KB, 16KB, 32KB, and 64KB.  You may find disk
performance is quite a bit better in such cases.

3)  I happen to agree with Arne -- Linux is probably tricking you into
believing the disk performance is higher than what it is due to memory
caching.

4)  There was a recent thread about ICH2-related issues (I believe
performance was one of them) here on freebsd-current:

http://lists.freebsd.org/mailman/htdig/freebsd-current/2004-September/036841.html

5)  I have no idea what's up with the ATA channel re-init.  Soren should
(and probably will) chime in here.

6)  I'm still amazed people have systems in production that use ICH2.
AFAIK, the chipset is deprecated.

-- 
| Jeremy Chadwick                                 jdc at parodius.com |
| Parodius Networking                        http://www.parodius.com/ |
| UNIX Systems Administrator                   Mountain View, CA, USA |
| Making life hard for others since 1977.                             |

On Sat, Sep 25, 2004 at 10:59:43PM +0200, Mauro Triulzi wrote:
> Hello,
> 
> I post some tests about the performance of my ATA disk (which is not 
> very spectacular under FREEBSD 6.0).
> Notice that the write performance improves considerably after 
> reinitializing the ATA channel. I've given a comparison with
> the performance under Linux (kernel 2.6.5) which is far better (with 
> identical HW of course, since I can boot
> both Linux 2.6.5 and FreeBSD current). Can someone help me to explain 
> this facts or tell me what I am doing wrong?
> 
> Kind regards, Mauro
> 
> i) System & hardware
> 
> foo# uname -a
> FreeBSD foo.bar.com 6.0-CURRENT FreeBSD 6.0-CURRENT #0: Sat Sep 25 
> 17:54:29 CEST 2004     
> triulzi at foo.bar.com:/usr/src/sys/i386/compile/MYKERNEL  i386
> 
> source tree actualized and built today, all debugging options disabled.
> 
> My HW:
> 
> foo# pciconf -v -l
> (...)
> atapci0 at pci0:31:1:      class=0x010180 card=0x01451028 chip=0x244b8086 
> rev=0x04 hdr=0x00
>    vendor   = 'Intel Corporation'
>    device   = '82801BA (ICH2) UltraATA/100 IDE Controller'
>    class    = mass storage
>    subclass = ATA
> (...)
> 
> Mode (before reinitialization, see below)
> 
> foo# atacontrol mode 0
> Master = UDMA100
> Slave  = BIOSPIO
> 
> Kernel parameters (also before reinitialization):
> foo# sysctl hw.ata.
> 
> hw.ata.ata_dma: 1
> hw.ata.wc: 1
> hw.ata.atapi_dma: 1
> 
> ii) TESTS: all tests with 512B blocks read/write
> 
> a) under FreeBSD
> 
> Write test:
> 
> foo# date && dd if=/dev/zero of=deleteme.now count=1000000 && date
> Sat Sep 25 22:04:02 CEST 2004
> 1000000+0 records in
> 1000000+0 records out
> 512000000 bytes transferred in 34.238161 secs (14954074 bytes/sec)
> Sat Sep 25 22:04:36 CEST 2004
> 
> Read test:
> 
> foo# date && dd if=/dev/ad0s3g of=/dev/null count=1000000 && date
> Sat Sep 25 22:08:13 CEST 2004
> 1000000+0 records in
> 1000000+0 records out
> 512000000 bytes transferred in 125.686697 secs (4073621 bytes/sec)
> Sat Sep 25 22:10:18 CEST 2004
> 
> Reinitialize the ATA channel:
> 
> foo# atacontrol reinit 0
> Master:  ad0 <IC35L060AVV207-0/V22OA63A> ATA/ATAPI revision 6
> Slave:       no device present
> 
> Write test after reinitialization:
> 
> foo# date && dd if=/dev/zero of=deleteme.now count=1000000 && date
> Sat Sep 25 22:12:30 CEST 2004
> 1000000+0 records in
> 1000000+0 records out
> 512000000 bytes transferred in 15.110452 secs (33883831 bytes/sec)
> Sat Sep 25 22:12:45 CEST 2004
> 
> (about twice faster!! Why?)
> 
> Read test after reinitialization:
> 
> foo# date && dd if=/dev/ad0s3f of=/dev/null count=1000000 && date
> Sat Sep 25 22:14:51 CEST 2004
> 1000000+0 records in
> 1000000+0 records out
> 512000000 bytes transferred in 125.860301 secs (4068002 bytes/sec)
> Sat Sep 25 22:16:56 CEST 2004
> 
> (read from another device to avoid caching effects)
> 
> Reinitialization of the ATA channel has effects only on write performance.
> Read performance is very bad.
> 
> b) Now the same under Linux (kernel 2.6.5)
> 
> Write performance
> 
> linux:/usr # date && dd if=/dev/zero of=deleteme.now count=1000000 && date
> Sat Sep 25 21:38:30 CEST 2004
> 1000000+0 records in
> 1000000+0 records out
> Sat Sep 25 21:38:35 CEST 2004
> 
> deleteme.now is about 488 MB, rate about 100 MB/sec!!
> 
> Read performance
> 
> linux:/usr # date && dd if=/dev/hda11 of=/dev/null count=1000000 && date
> Sat Sep 25 21:41:31 CEST 2004
> 1000000+0 records in
> 1000000+0 records out
> Sat Sep 25 21:41:43 CEST 2004
> 
> that is about 40MB/sec!! (/dev/hda11 read for the first time, to avoid 
> caching).
> 
> Kind regards,
> Mauro
> 
> 
> _______________________________________________
> freebsd-current at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"


More information about the freebsd-current mailing list