UPDATE:
It turns out the last post's methodology wasn't great. So, updates!
New TL;DR: With top-tier SD cards the SCSI2SD v6 can perform better than conventional 10k and 15k RPM disks on a Fast SCSI (10MB/S) bus, except for sequential write. The quality of your SD card is very important to overall performance. Also, firmware 6.1.3 performs better (on tested SGI systems) than 6.3.0.
This update is driven by two developments. First, after getting some nonsense data from my Octane over the last week, I realized that it is critical to use the -D flag with SGI's diskperf utility. Using this flag removed variability with 10 second runs on the Indy and Indigo2 and kept my Octane from giving nonsensical results (e.g. random read speeds of >250 MB/S). Second, I bought a new top-tier SD card to compare SCSI2SD performance. The results surprised me!
Methodology notes:
I used two high-performance SD cards with identical drive images, SCSI2SD settings, and firmware.
- Transcend S64GSDC500S 64GB (amazon link), currently ~$25. This is a good card, U3/V30 rated, listed transfer rates of up to 95 MB/s Read; 60 MB/s write. Tests with this card are sometimes shorthanded as $testsystem_T
- Sandisk Extreme Pro SDSDXXY-128G-GN4IN 128GB (amazon link), current ~$38. This is a top-tier card, also U3/V30 rated but claims "Shot speeds up to 90MB/s, transfer speeds up to 170MB/s". Tests with this card are sometimes shorthanded as $testsystem_San
Note: Both of these are very good SD cards. If you use a more normal/bargain SD card, I would expect worse--possibly very bad--performance using the SCSI2SD.
All diskperf tests used the following command line (and relied on previously created 1GB test files): diskperf -W -D -n [description] -r4k -t 10 [$testpath]. All tests were performed with a single user logged in via ssh. The systems tested were:
- SGI Indy, 180Mhz R5000 processor, 256MB RAM, IRIX 6.5.22. On this device, each test was performed with only the test drive connected (i.e. the test drive was the system and test disk).
- SGI Indigo2, 175MHz R10000 processor, 640MB RAM, IRIX 6.5.22. On this device, each test was performed on the secondary SCSI controller and the test device was the only device on the bus.
- SGI Octane, 2x360MHz R12000 processors, 1.5GB RAM, IRIX 6.5.30. On this device 50/68 pin drives were connected externally to the secondary SCSI controller. 80 pin drives were connected internally. The Fujitsu MAX drive was the booted/system drive for all tests (including the test of the MAX drive itself).
The drives tested were:
- SCSI2SD v6, Firmware 6.1.3, Transced 64GB SD card
- SCSI2SD v6, Firmware 6.1.3 and Firmware 6.3.0, Sandisk Extreme Pro 128GB SD card
- Fujitsu MAJ3182MP 18.2GB 10k RPM UW-160 disk
- Fujitsu MAX-series 36GB 15k RPM U320 disk
- HP 3008B26C 300GB 15k RPM U320 disk
I've attached graphs to this post comparing sequential and random read/write tests for all drives. My key takeaways:
- The SCSI2SD/Sandisk duo was fast at random reads/writes (should be no surprise). It outperformed even the 15k RPM U320 drives in the Octane at random read performance up until 32kb blocks (where the conventional drives were able to surpass the SCSI2SD's Fast SCSI transfer limit). On the Indy/Indigo2, it outperformed all drives at all block sizes.
- The only clear loss for the SCSI2SD against other Fast SCSI devices was in sequential write performance, where it topped out around 4 MB/S while the 10k and 15k RPM disks were able to sustain transfers at the Fast SCSI bus limit.
- The older 6.1.3 firmware outperformed the newest 6.3.0 release handily. I tested both with and without "turbo mode" enabled. I found turbo slightly increased most speeds, but also added variability that caused a drops at some block sizes. I've reverted my device to 6.1.3, no-turbo. My SCSI2SD config is still available on my github.
- Using a SCSI2SD on a Indy/Indigo2 appears to be largely a no-brainier -- minus cost. At ~$140 for SCSI2SD v6+SD card, my current SCSI2SD setup is over twice as expensive as all of the other disks I tested combined (each was less than $20 on ebay).
- On anything with a Ultra/Wide SCSI bus, the SCSI2SD probably won't make sense except for a very specific use cases (e.g. CD-ROM emulation).
Not a key takeway, but I was surprised that the SCSI2SD performed measurably better on the Octane, despite being limited to Fast SCSI speeds, which both the Indy and Indigo2 support. Any ideas why?
I also repeated the real-world benchmarks with the new Sandisk card and added Octane results for comparison. My key takeaway remains that
in real-world tests, the performance boost with a SCSI2SD was nearly enough to make a top-spec Indy feel like a high-spec Indigo2. Emphasis on the "feel" and "nearly". Obviously it doesn't make up for the difference in raw CPU or graphics muscle. And in some workloads, the sequential write performance will still make a SCSI2SD slower than an Indy with a good conventional disk. I've attached graphs with times for various tasks. A few further methodology notes:
- The Indy and Indgo2's IRIX installs are configured very similarly, but they are not identical. The Octane has a newer IRIX version and more software installed.
- As before, boot time was measured from the first text on miniroot window to the visual login screen.
- As before, Firefox (current nekoware version) was measured from the command to a fully rendered Google.com.
That's it for now!
Reached the attachment limit, here are the promised firmware/SD card comparisons.