Analytic Workstations – Part I

I’m often impressed at the amount of work done on run-of-the-mill corporate desktops and high performance workstations. When I talk to other WPS, SAS and R consultants, our discussions often tend towards the types of hardware we have experience with and what our own personal machines are made of in terms of hardware. It often is a lively debate with some “oohhhs and aahhhs” as we learn what each other is using for their businesses.

One thing I need to mention, and I don’t want to sound arrogant, is just how awful most corporate desktops are that are used by Quants and Data Managers. I’ve worked at a site that still had XP with only 512MB of RAM and a single 40GB hard drive for their data folks. It was truly awful trying to get anything done. On the other hand, I’ve worked with a few small businesses who have had pretty decent hardware and didn’t have a problem investing in upgrading desktop machines because they were (smart) and saw the ROI that it would bring to the company.

As a reseller of WPS I often get into a discussion about the product and their hardware. I’ve sent out evaluations on machines that had 24GB of RAM and 24 logical CPU’s for a personal workstation. I was rather impressed when I heard folks were using such hardware. That’s a rarity for sure, but as the need to process data faster and more data to process, higher end workstations are becoming the norm for many analysts.

Recently my desktop workstation’s motherboard died and after trying to find a replacement and seeing the cost, I decided it was time to buy some hardware that was faster and expandable. Time was of the essence but I also wanted to configure a machine that was a real workhorse for my daily development duties. This blog post is about picking and choosing some very specific hardware, the rationale behind my choices, configuration and some bench marks thrown in for good measure.

Most of the work I do is WPS and SAS development and testing of code against datasets that are moderate in size. I would venture to guess that the vast majority of my datasets are between one million and four million records with 50 to 70 variables per dataset. In terms of storage, that works out to be between 500MB and 2GB per dataset. Although not common, I have datasets that do range upwards of eight million records and approximately 4GB in size. Given that metric, I wanted my new hardware to be able to handle datasets in the 1 to 4 million record size as a matter of routine.

As many WPS and SAS developers are quick to admit, the Achilles heel for running datasets of that size is I/O. Many modern CPU’s are able to crunch data quite well, but getting that data off the disk and into memory is the key objective when processing WPS datasets.

So what are my measurable goals?

Keep hardware and software cost under $500 by using the existing case, power supply and hard drives.

Be able to process 4 million records where real time is lower than CPU time. Ideally be able to process 8 million records using this metric, but that may be tough.

Create an I/O subsystem for the WPS work library that is highly tuned to processing WPS datasets.

Hardware

  • Intel I5 Processor at 3.4GHz
  • 16GB of Dual Channel Ram (4×4)
  • ASUS Motherboard with 4 6GB SATA and 4 3GB SATA ports.
  • WD Caviar Black 640GB hard drive x 2 in RAID 0 mode for Work.
  • Seagate 320GB x 4 in RAID 0+1 mode for C Drive.

Total outlay for the motherboard, memory and CPU was $318.00. The drives listed above were part of the Workstation that was being upgraded.

Establishing a Baseline

It’s important that we establish a baseline for measuring what we are using in terms of hardware. Below are two charts that show both drive arrays for our Work Station.

C: Drive – hosts the OS, WPS and permanent WPS datasets.

drive_c_baseline

D: Drive – WPS Work Space

Not the fastest hard drives but it is what we have to work with at the moment. So essentially the benchmarks reveal the following performance statistics. One thing to note from the charts above is that the IOPS are really pathetic.

Drive

Read

Write

Total

C

238.34 MB/s

243.59 MB/s

481.94 MB/s

D

186.64 MB/s

168.91 MB/s

355.55 MB/s

We wrote a benchmark program that reads two permanent datasets from the C drive, combines into a temporary dataset and does a few calculations on them. From there on, all of the processing takes place using that temporary dataset. Below is the benchmark results for seven different sized datasets.

Record Count Time

mm:ss:hh

1 Million ( 500 MB) Real

17.823

CPU

14.118

2 Million ( 1 GB ) Real

33.751

CPU

28.204

4 Million ( 2 GB ) Real

59.888

CPU

57.611

8 Million ( 4 GB ) Real

02:08.7

CPU

01:58.2

16 Million ( 8 GB ) Real

06:59.6

CPU

04:05.5

32 Million ( 16 GB ) Real

25:38.7

CPU

09:10.6

64 Million (32 GB ) Real

57:31.7

CPU

19:51.9

The benchmarks above are disappointing to me. Not once did we achieve our stated goal of processing any of the datasets where Real time is less than CPU time. I’m actually surprised by this as I expected the OS to be able to buffer at least the smallest dataset of 1 million records (500 MB) allowing for this metric to be accomplished. Also, as a note, for the datasets of 32 and 64 million records, we had to set the Memsize to 9G, that is 9 Gigabytes of memory available to the WPS System. We had to do this so that PROC SORT would not start using virtual memory and spend all of its time paging.

In the next post Analytic Workstations Part II, I’m going to start to tune the I/O of the workstation to see if we can reduce Real processing time and achieve the goal of Real Time being lower than CPU time.

Continue to: Analytic Workstations – Part II

About the author: Phil Rack is President of MineQuest, LLC. and has been a SAS language developer for more than 25 years. MineQuest provides WPS and SAS consulting and contract programming services and a reseller of WPS in North America.