Jeanette’s computer is pretty old now and we decided in the summer we’d end up getting her a new one once Windows 7 came out. About 3 weeks ago her hard drive died, but fortunately I was able to get it working again for now by turning it upside down and shaking it (this has actually fixed quite a few hard drives for me). I don’t trust it to last much longer though so it’s time to get her a new machine.
There are two big problems that have plagued me with every computer I’ve had for the past 7 years or so. One is that hard drives keep going out. They never use to, but I’ve had probably 5 failures in the past 7 years. It feels like overkill but I want a RAID setup this time to avoid that headache. The other is there have been so many times that I’ve been waiting on the computer to do something, yet neither CPU, RAM or Disk Usage have been spiked so I never knew what it was I was waiting on. I finally discovered a few weeks ago that it has been disk seeks all along and I was just missing it by looking at the read/writes. I’ve never put much thought into hard drive speed before, but now want that bottleneck to go away. So I’ve been looking into the best way to get better hard drive performance and have redundancy. There are a lot of options now days, but I *think* I found a good solution. Here’s what I looked at.
Since seeks are my main problem the first thing I looked at was a solid state drive since those use flash memory and have virtually no access time at all. They are quite pricey though and the one down side is they are slightly slower at reading large blocks of data and much slower writing. They also wear out much quicker. There are ways to get better performance out of traditional hard drives for a lot less money.
The second option I looked at was taking a normal USB flash drive and just storing the page file on it. This is do-able, but the slowness of reading large chuncks outweighs the benefits of no seek time.
The third option is something new in Vista/Windows 7 called ReadyBoost. It lets you use a flash drive just for page file operations it Windows determines it would be faster for. Sounds ideal, but all the benchmarks I could find show it making no significant difference unless you’re critically low on ram. For $10, I think I’ll do it anyways though. The other benefit is it’ll use that space to cache program files, so the second time you open Firefox for example it’ll read from the flash drive and be much quicker.
Lowering Access Time
The next option is to buy a 15k rpm drive instead of the typical 7200 rpm. There are 2 components that make up access time, the seek time which is how long it takes the needle to move towards in the inside or outside of the disk on average and there’s rotational latency which is how long on average it takes to spin the disk around to the data you need. You add those two together to get the total access time. All 7200 rpm drives have a latency of of 4.17 ms. The seek time varies by drive, but the ones I’m looking at have a 4.33 ms seek time for a total of 8.5ms access time. By going with a 15k rpm drive you can cut the latency down to 2 ms, which would lower the total access time to 6.33 ms (25% faster).
These drives are pricey in the larger sizes though. It turns out there’s an option call “Short Stroking” (yes, that really is the name, here is an explanation) that will let you get better performance from the much cheaper 7200 rpm drive. The way it works is by reducing the seek time instead of the latency. Instead of buying a 250GB drive at 15k rpm, you buy a 1TB drive at 7200rm instead (which is cheaper). You then create a partition using only 1/4th the drive leaving you with the same 250GB. Since you’re only using 1/4th of the drive for the partition, the needle only ever has to travel 1/4th the distance and average seek times drop to 1/4th of what they use to be. This leaves you with the 4.17ms latency + 1.08 ms seek time for 5.25 ms total access time. Better than the 15k rpm drive and cheaper PLUS you can still use the extra 750gb on another partition where you’re not as concerned about performance.
The downside is when it comes to reading large chunks, the 7200rpm drive is spinning slower than the 15k rpm so it would be slower. But wait.. The whole disk spins at the same 7200 RPM, but the outer rings of the disk contain much more data than the inner rings, so in a single rotation the drive can read much faster on the outer edges. For example 1/2″ from the center of the disk one rotation covers 1.57″ of surface space, but 3.5″ from the center, it covers 11″ of surface. So reading on the outer edges is 7x faster than the inner edges. We’re only using the outer 1/4″ of the disk which significantly increases the AVERAGE read/write speed. I couldn’t find the exact numbers online, but I believe it’s 1.875x faster than using the whole disk which would be 90% of the the average read time of using an entire 15k rpm disk. Still an overall gain I think.
The final factor was setting up the RAID to have redundancy. I was planning on just doing a mirrored drive at first, but remembered that a RAID 5 setup (3 drives, using 1/3 the storage for parity bits) lets you cut the load to each drive in half, allowing you to essentially double the hard drive performance. I saw something new of RAID 10 or 1+0 when looking into this again though. It’s basically using 4 drives to create 2 mirrors and then striping across them. It essentially has the same performance as RAID 5, but a little more redundancy. You have to buy an extra hard drive, but sadly that’s cheaper than getting a controller that can handle RAID 5, so that’s the route I’m going with.
In the end I’m going with 4, 500GB drives at $59 each for a total of $240 to get 1TB of usable HD space that’s mirrored. There is a way to squeeze a little more performance out of it though. For the page file and other temp data, there’s no reason to mirror it, it can be stripped across all 4 drives instead so the partitions I plan to set up are:
E: Temp drive, 32GB – This will be on the outer most edge for best performance. Since it’s not mirrored it’ll only take up 16GB of the usable space and performance will be twice as fast as the other drives since it can spread the load across all 4.
C: System Drive, 250GB – This will be the next outer most section, but mirrored.
D: Data Drive, 734GB – This will be the inner most section and have the poorest performance.
Here’s where I think the numbers should end up vs buying a single 1TB 7200 RPM drive.
|Drive||Access Time (% Improved)||Read Rate (% Improved)|
|C:||2.63ms (223%)||324MBps (224%)|
|D:||3.71ms (129%)||173MBps (100%)|
|E:||1.31ms (548%)||648MBps (548%)|
The numbers seem too good to be true, but I’ve checked several times and they seem to be right. Plus you have to consider there are 4 drives doing the work now. Let me know if I messed up somewhere, otherwise I guess we’ll see.