#hdparm /dev/hda /dev/hda: multcount = 0 (off) IO_support = 0 (default 16-bit) unmaskirq = 0 (off) using_dma = 1 (on) keepsettings = 0 (off) readonly = 0 (off) readahead = 256 (on) geometry = 16383/255/63, sectors = 78165360, start = 0 #hdparm /dev/hdb /dev/hdb: multcount = 0 (off) IO_support = 0 (default 16-bit) unmaskirq = 0 (off) using_dma = 1 (on) keepsettings = 0 (off) readonly = 0 (off) readahead = 256 (on) geometry = 65535/16/63, sectors = 78165360, start = 0 #hdparm -I /dev/hda /dev/hda: ATA device, with non-removable media Model Number: ST340014A Serial Number: 5JX50M16 Firmware Revision: 3.06 Standards: Used: ATA/ATAPI-6 T13 1410D revision 2 Supported: 6 5 4 3 Configuration: Logical max current cylinders 16383 65535 heads 16 1 sectors/track 63 63 -- CHS current addressable sectors: 4128705 LBA user addressable sectors: 78165360 LBA48 user addressable sectors: 78165360 device size with M = 1024*1024: 38166 MBytes device size with M = 1000*1000: 40020 MBytes (40 GB) Capabilities: LBA, IORDY(can be disabled) bytes avail on r/w long: 4 Queue depth: 1 Standby timer values: spec'd by Standard R/W multiple sector transfer: Max = 16 Current = ? Recommended acoustic management value: 128, current value: 0 DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 udma5 Cycle time: min=120ns recommended=120ns PIO: pio0 pio1 pio2 pio3 pio4 Cycle time: no flow control=240ns IORDY flow control=120ns Commands/features: Enabled Supported: * READ BUFFER cmd * WRITE BUFFER cmd * Host Protected Area feature set * Look-ahead * Write cache * Power Management feature set Security Mode feature set * SMART feature set * FLUSH CACHE EXT command * Mandatory FLUSH CACHE command * Device Configuration Overlay feature set * 48-bit Address feature set SET MAX security extension * DOWNLOAD MICROCODE cmd * SMART self-test * SMART error logging Security: supported not enabled not locked not frozen not expired: security count not supported: enhanced erase HW reset results: CBLID- above Vih Device num = 0 determined by the jumper Checksum: correct #hdparm -I /dev/hdb /dev/hdb: ATA device, with non-removable media Model Number: ST340810A Serial Number: 5FBDBQPA Firmware Revision: 3.64 Standards: Supported: 6 5 4 3 Likely used: 6 Configuration: Logical max current cylinders 16383 16383 heads 16 16 sectors/track 63 63 -- CHS current addressable sectors: 16514064 LBA user addressable sectors: 78165360 device size with M = 1024*1024: 38166 MBytes device size with M = 1000*1000: 40020 MBytes (40 GB) Capabilities: LBA, IORDY(can be disabled) bytes avail on r/w long: 4 Queue depth: 1 Standby timer values: spec'd by Standard R/W multiple sector transfer: Max = 16 Current = ? Advanced power management level: unknown setting (0x0040) Recommended acoustic management value: 254, current value: 254 DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 udma5 Cycle time: min=120ns recommended=120ns PIO: pio0 pio1 pio2 pio3 pio4 Cycle time: no flow control=240ns IORDY flow control=120ns Commands/features: Enabled Supported: * READ BUFFER cmd * WRITE BUFFER cmd * Host Protected Area feature set * Look-ahead * Write cache * Power Management feature set Security Mode feature set * SMART feature set * Device Configuration Overlay feature set * Automatic Acoustic Management feature set SET MAX security extension * Advanced Power Management feature set * DOWNLOAD MICROCODE cmd * SMART self-test * SMART error logging Security: Master password revision code = 65534 supported not enabled not locked not frozen not expired: security count not supported: enhanced erase HW reset results: CBLID- above Vih Device num = 1 determined by the jumper Checksum: correct --------------------------------------------------------- run with bs=1M start HDA Wed Nov 16 12:37:17 EET 2005 start HDB Wed Nov 16 12:37:17 EET 2005 stop HDA Wed Nov 16 13:15:21 EET 2005 stop HDB Wed Nov 16 13:23:09 EET 2005 38m for hda 46m for hdb --------------------------------------------------------- #hdparm -d1 -u1 -m16 -c1 /dev/hda #hdparm -d1 -u1 -m16 -c1 /dev/hdb run with bs=1M start HDA Wed Nov 16 13:46:23 EET 2005 start HDB Wed Nov 16 13:46:23 EET 2005 stop HDA Wed Nov 16 14:24:31 EET 2005 stop HDB Wed Nov 16 14:32:14 EET 2005 38m for hda 46m for hdb --------------------------------------------------------- #hdparm -W0 /dev/hda #hdparm -W0 /dev/hdb cat /proc/ide/hdb/settings shows wcache:1, but running hdparm /dev/hdb shows that write cache is actually disabled. cat /proc/ide/hda/settings shows wcache:0 and hdparm /dev/hda confirms that. Anyway the results prove that. run with bs=1M start HDB Wed Nov 16 14:37:11 EET 2005 start HDA Wed Nov 16 14:37:11 EET 2005 stop HDA Wed Nov 16 15:20:30 EET 2005 stop HDB Wed Nov 16 16:22:56 EET 2005 43m for hda 105m for hdb Ohoo. Using multiple disks at the same time, shows clearly what is the write cache for... lets see how the drives perform on their own. --------------------------------------------------------- run independently with bs=1M start HDA Fri Nov 18 10:53:22 EET 2005 stop HDA Fri Nov 18 11:16:54 EET 2005 start HDB Fri Nov 18 11:41:51 EET 2005 stop HDB Fri Nov 18 13:05:05 EET 2005 23m for hda 84m for hdb don't know if the master/slave or drive model is layable for this difference. (tested below) --------------------------------------------------------- #hdparm -W1 /dev/hda #hdparm -W1 /dev/hdb run simultaneously with big bs=10M start HDB Fri Nov 18 13:10:18 EET 2005 start HDA Fri Nov 18 13:10:18 EET 2005 stop HDA Fri Nov 18 13:48:38 EET 2005 stop HDB Fri Nov 18 13:56:25 EET 2005 38m for hda 46m for hdb obviously with bigger block size does not matter. (in this case) --------------------------------------------------------- lets test with drives swapped (hda=hdb and hdb=hda) run with bs=1M start HDA Mon Nov 21 12:37:54 EET 2005 start HDB Mon Nov 21 12:37:54 EET 2005 stop HDB Mon Nov 21 13:15:56 EET 2005 stop HDA Mon Nov 21 13:24:02 EET 2005 47m for hda (old hdb) 38m for hdb (old hda) OK. It turns out that there is no matter which drive is master and which slave... --------------------------------------------------------- Ok. This test does not show how the drives perform on non linear access, but clearly shows what the write cache is for. --------------------------------------------------------- this is the run script: export bs1=1048576 export bs2=1048576 export dev=/dev/zero ./testhda & ./testhdb & this is the hda test script: echo start HDA `date` >> HDA dd if=$dev of=/dev/hda bs=$bs1 echo stop HDA `date` >> HDA this is the hdb test script: echo start HDB `date` >> HDB dd if=$dev of=/dev/hdb bs=$bs2 echo stop HDB `date` >> HDB