Off by one

I made a small modification to phybs to verify the function of jumpers 7-8 on the WD Advanced Format drives (see here and here). It is supposed to cause the disk to internally shift every write by one sector, so that a write to sector 63 (where the first partition on a PC normally starts) actually goes to sector 64, which coincides with the beginning of a physical 4,096-byte sector. These numbers confirm this:

   count    size  offset    step        msec     tps    kBps
   32768    4096       0   16384       78631      34    1666
   32768    4096     512   16384       79880      33    1640
   32768    4096    1024   16384       73164      36    1791
   32768    4096    1536   16384       77727      34    1686
   32768    4096    2048   16384       76975      35    1702
   32768    4096    2560   16384       74970      36    1748
   32768    4096    3072   16384       79379      34    1651
   32768    4096    3584   16384       28094      96    4665

The firmware on the disk shifts everything forward by 512 bytes, so all these passes are unaligned except the last one, because 3,584 + 512 = 4,096.

Disks and equipment

Here is a quick overview of the disks used in my tests:

Brand Model Capacity Speed Interface Notes
Western Digital WD4000AAKS 400 GB 7,200 rpm SATA 3 Gbps  
Western Digital WD10EARS 1 TB > 5,400 rpm SATA 3 Gbps 1
Western Digital WD20EARS 2 TB > 5,400 rpm SATA 3 Gbps 2
Western Digital WD20EADS 2 TB > 5,400 rpm SATA 3 Gbps 3
Hitachi HDS722020ALA330 2 TB 7,200 rpm SATA 3 Gbps 3

The computer runs FreeBSD 9 on an Intel E6600 with an ICH9 chipset and 4 GB RAM. For convenience, the disks were tested in an Akasa Duo Dock connected by eSATA cable to one of the ICH9 SATA ports.

1 Kindly provided by Alastair Hogge

2 Kindly provided by GetOnline Ltd.

3 Kindly provided by Dansk Scanning AS

Benchmarking Advanced Format drives

Important: due to a bug in my benchmark program, the tps numbers in this post are incorrect. See here for the correct numbers.

In the previous post, I discussed Western Digital’s “Advanced Format” drives and the problems caused by their misreporting their real, physical sector size.

I wrote a benchmark utility to demonstrate the performance penalty of unaligned accesses and uncover a drive’s physical sector size. What it does is write blocks of zeroes varying size at regular intervals. For each block size, it writes a total of 128 MB at intervals of four times the block size, and at an offset that varies from 512 bytes up to half of the block size. Continue reading “Benchmarking Advanced Format drives”

Exploring WD Advanced Format drives

I’ve been playing with WD Green disks, trying to solve the 4,096-byte sector problem. To summarize, Western Digital have started to move from 512-byte sectors to 4,096-byte sectors in order to reduce overhead and thereby increase the amount of data that can be stored on the same amount of platters with the same density. These disks (specifically, the EARS and AARS series) emulate 512-byte sectors for compatibility with older BIOSes and operating systems, but the problem is that they report 512-byte logical and physical sectors instead of 512/4,096.

If the length of a write operation is not a multiple of 4,096, or it does not begin at an address divisible by 4,096, either the beginning or the end of the operation, or both, will cover only part of a sector. This requires the disk to do a read-modify-write operation, meaning that it has to read a complete 4,096-byte sector, update parts of it, and write it back. This is extremely inefficient, as I will demonstrate later. Continue reading “Exploring WD Advanced Format drives”