I Want Arrays

0

I Want Arrays

A little more than a year ago, I built FelixBlack, my main development machine.

Windows 8 had just recently been released and Microsoft was offering discount pricing. Additionally, storage and memory-- the keys to a fast machine-- were coming down in price. USB 3.0 was touted in the press, available on the new motherboards. Toshiba had an inexpensive external drive on the market, the Canvio, 3 terabytes, which was being offered on sale for a mere $99 (that magic price point). Even the SSD models from Intel were becoming affordable.

My local MicroCenter had stock, my credit card had room, and I had that old familiar feeling-- techno-lust.

Now, I am not an early adopter. I am, by nature, cautious, especially when it comes to my main development machine. I follow behind the early-adopters, waiting for that first substantial price-drop and also waiting, more importantly, for the bugs to shake out. But, as cautious as I am, when I go, I go Big...

I admit I went a little crazy. I spent more than $1100 over the course of a few daze. [That may not sound like much to corporate procurers, but I am a one-man self-funded perpetual-startup, and I'm always on a ♪Low Budget♫.].

I bought the motherboard, CPU, and memory from NewEgg, and visited the brick-and-mortar store to get my hands on a couple of those USB 3.0 drives, along with my copy of Windows 8. I relied on my bonepile for the case and PSU, and answered a Craig's List ad to pick up a cheap Radeon card and a used SSD.

When I was done putting it all together, I had a nice, even, 8.0 overall score on the WEI (Windows Experience Index).

I was running at 4.3 GHz, water-cooled, with 32GB of dual-channel DDR3 memory, and -- get this -- 21 terabytes of fast online storage.

How fast is my definition of "fast"?

Well, here's a screen shot of a 5GB file copy:

WriteeSataFlattline.png

Now, that's fast, in my book. Of course, when I started computing, we had 8-inch floppies, and a hundred kilobytes per second was fast.

The Year Of Living Dangerously

There are many ways to build a fast computer. One way focuses on the CPU and motherboard. This can be expensive. A long time ago, I learned the short-cut to a fast, practical machine-- focus on I/O through-put.

So, when I built FelixBlack, I decided to live dangerously, and I joined all of my 3TB Canvio drives into striped arrays. That is, I went RAID Level 0 (zero) for speed. I threw caution to the wind. I became religious about making backups, developed the habit of adding redundant clones of all my important files, and I have been living high off this dangerous hog ever since.

Now, my drive sub-system is-- in reality-- not that fast. The 529 MB/s shown in the graphic is not from the raw drive speed, but is a side effect of the Write Cache implemented under Windows. With 32GB memory, "small files" (under a dozen gigabytes or so) blaze by at speeds from 300 to 500 MB/s, but longer copy operations will eventually saturate the cache. That kind of speed cannot be sustained forever. Here is a larger copy, a sequence of graphics to illustrate this, where I clone 32GB of data from an external USB 3.0 drive to the internal array...

WriteCacheEffect1of4.png

Here you can see the initial speed is a nice sustained rate of 330 MB/s...

WriteCacheEffect2of4.png

After a while, though, the speed drops, as the cache has been saturated. Now we are seeing the actual speed of the underlying drive subsystem.

WriteCacheEffect3of4.png

This speed would be maintained (at this actual drive speed) all the way until the end of the copy, unless something or someone intervenes...

WriteCacheEffect4of4.png

Here I pause the copy for a few moments. After the drives have completed their pending i/o, when I resume, the speed surges again. Pausing has the effect of flushing the saturated cache to disk, allowing Windows to blaze that (cached) copy operation again...

Felix Black is my main host for many differing applications. I have several other machines, running Windows 7, XP, ArchLinux, Fedora... but now many of those hardware platforms sit idle, because FB8 does such a great job of hosting virtual images that I hardly need to cold boot other hardware. In many cases, the virtual instance running on FB8 is faster and more responsive than the physical machine I am emulating.