SCSI devices and Windows XP
The issue of SCSI performance in Windows XP is an old one. According to Microsoft, all SCSI performance issues were fixed in Service Pack 1. Still, there are those who cling to higher SCSI benchmark scores under Windows 2000. After some extensive forum trolling, I've decided this explanation over at StorageReview of Windows XP's seemingly lower SCSI performance makes the most sense, at least to me.
At the heart of the matter is the WRITE_THROUGH file flag, which is a part of the SCSI command set. The WRITE_THROUGH flag demands that data be written directly to the disk rather than being written to the drive's cache. Windows 2000 incorrectly ignores the WRITE_THROUGH flag, which causes the OS to deliver artificially high performance, because writing to cache is a lot faster than writing to disk, even with fast SCSI drives. Windows XP correctly honors the WRITE_THROUGH flag, which yields lower performance than what's seen in Windows 2000. So yes, Windows 2000 will offer better SCSI performance in some applications than Windows XP, but not because there's a bug in Windows XP; the bug is actually Windows 2000 bypassing the WRITE_THROUGH flag.
To make matters even more complex, not all applications will suffer poorer performance under Windows XP because of the WRITE_THROUGH flag. Some applications don't use the flag, and some storage drivers may not even honor it.
Do we need WRITE_THROUGH? Yes and no. The primary benefit of the WRITE_THROUGH flag isn't realized until a power outage occurs after a write operation. With WRITE_THROUGH honored, data is written directly to the disk and isn't affected by the outage. However, if the WRITE_THROUGH flag is not honored, data from the write operation may be stuck in the drive's cache when the power cuts out. When the power dies, any cached data will be lost, even if it's next in line to be written to the disk.
I should also point out that, according to the aforementioned StorageReview link, IDE doesn't have support for the WRITE_THROUGH flag. This omission may cause inflated readings for IDE drives on certain benchmarks, for the same reason that SCSI performance was inflated in Windows 2000: Data that the benchmark wants written straight to disk is being written to cache instead. Support for WRITE_THROUGH in IDE RAID controllers is a bit hazier, as it depends upon whether or not the controller driver supports the operation. Unfortunately, we couldn't find any information about SATA support for WRITE_THROUGH.
Personally, I'd prefer that the WRITE_THROUGH flag be honoredespecially if an application specifically invokes it. Then again, I also run a RAID 1 array and have my file server performing automatic nightly backups of all the data I can't afford to lose. I might just be paranoid.
Today, we'll be looking at drive performance in Windows XP. The SCSI drives we're testing today may exhibit better performance in some benchmark tests under Windows 2000, but I'd rather side with a correct implementation of the WRITE_THROUGH flag.
Finally, I have to address the issue of dynamic disks under Windows XP. Some have found that converting SCSI drives from "basic" to "dynamic" disks in Windows XP dramatically improves performance. However, it appears that dynamic disks suffer from the same WRITE_THROUGH deficiency as Windows 2000. Since a couple of the more reliable benchmarks I'll be using today (HD Tach and IOMeter) don't work properly with dynamic disks, I've tested exclusively with basic disks.
Our testing methods
All tests were run three times, and their results were averaged, using the following test systems.
| System | |||
| Processor | Intel Pentium 4 2.26GHz | ||
| Front-side bus | 533MHz (4x133MHz) | ||
| Motherboard | Tyan Trinity GC-SL | ||
| Chipset | ServerWorks Grand Champion SL | ||
| North bridge | ServerWorks CMIC-SL | ||
| South bridge | ServerWorks CSB5 | ||
| Memory size | 512MB (1 DIMM) | ||
| Memory type | CAS 2.5 PC2100 ECC DDR SDRAM | ||
| Graphics | ATI Rage XL | ||
| Storage Controllers | Adaptec 29320-R | SIIG Serial ATA PCI | 3ware Escalade 7500 |
| Storage Driver | Adaptec 1.1.0.0 | Silicon Image 1.0.0.44 | 3ware 1.12.0.17 |
| Storage | Maxtor Atlas 10K IV 147GB | Maxtor DiamondMax Plus 9 160GB | Maxtor 740X-6L 40GB 2-drive RAID 0 |
| Operating System | Windows XP Professional SP1 | ||
The most recent publicly available and manufacturer supported drivers were used with each storage controller. For comparison, I've rounded up a couple of 7,200RPM Serial ATA drives from Maxtor and Seagate, and cobbled together a two-drive IDE RAID 0 array with a couple of Maxtor drives.
The Adaptec 29320-R was used in the motherboard's 64-bit, 133MHz PCI-X slot, while the 3ware Escalade 7500 was used in the motherboard's 64-bit, 100MHz PCI-X slot. Since the Escalade 7500 only supports 64-bit PCI speeds up to 33MHz, it shouldn't be at any disadvantage in a PCI-X slot that offers a top speed of 100MHz. The SIIG Serial ATA controller doesn't support 64-bit PCI, so it's riding the plain old 32-bit PCI bus.
A special thanks goes out to the Computer Repair Shop for kicking in the Western Digital Raptor WD360GD. Also, the always-excellent TR hardware sponsor Kickass Gear supplied the Adaptec SCSI controller for our testing.
We used the following versions of our test applications:
The test systems' Windows desktop was set at 1024x768 in 32-bit color at a 75Hz screen refresh rate. Vertical refresh sync (vsync) was disabled for all tests.
All the tests and methods we employed are publicly available and reproducible. If you have questions about our methods, hit our forums to talk with us about them.
| Friday night topic: The trouble with Best Buy | 128 |