Developer’s experience: Benchmarking SSD

Introduction
I’m a developer. During development applications perform less than optimal:

  • algorithms need tweaking for real world usage
  • debuggers eat performance
  • measuring speed eats performance

Anything that happens in-memory, without memory paging, is relatively “cheap”. Every operation that needs, or indirectly causes, disk access is expensive. In the hard disk market, (larger) SSD drives become more and more affordable. In terms of performance (not purchase) they’re already cheaper than conventional hard drives.

Recently, I tried out what this means for me, with two applications in mind that require almost constant disk access:

  • virtual machine storage
  • database storage

This is the test setup:

  • Simple HP Elite 7300 i3-2120 (3.30 GHz), SATA 3 Gb/s
  • 12 GB DDR3 @ 1333 MHz
  • Windows 10 Technical preview on a Hitachi 250 GB drive
  • 2x Samsung Evo 850 – 250 GB available
  • Virtual machine: IE 11 on Windows 8.1 (from https://www.modern.ie/)

The Samsung Evo 850 – 250 GB has a theoretical CrystakDiskMark read throughput of about 539 MB/s.

CrystalDiskmark

I measured pure OS troughput vs. CrystalDiskMark within the virtual machine. For a single Samsung 850, 510 MB/s is acceptable. I then tried a RAID 0 setup. I know, a striped disk array is lost if one of the drives experiences hardware failure. But with regular backups, it poses an acceptable risk (to me). These are the complete test results:

PerformanceResults

Conclusion

  • The performance gain compared to convential disks is astronomical.
  • The performance gain through RAID 0 is marginal.
  • In a performance/reliablity trade-off, I’d choose a to run separate disks (for instance: OS and VM storage) over RAID-0.
  • Virtual machine disk performance is surprisingly acceptable at 70~80 percent.

Plug-between

Ik zie ruimte voor een nieuwe term, de plug-between. Een plug-in (of “invoegtoepassing”) is een uitbreiding op een (programma) interface, de host. Bij de host is veelal bedacht wat de precieze interface is waar een potentiële plugin aan moet voldoen. Voorbeelden zijn plugins op WordPress en de Netscape Server Application Programming Interface (NSAPI).

Ook een mooi voorbeeld is een Nespresso machine. Hiervoor kan je cups kopen via Nespresso, maar ook bij de Albert Heijn of de Jumbo, al naar gelang je smaak en je budget. Als de cups waar de espressokoffie in gaat maar voldoen aan de specificities, werkt het. Zo kwam ik ook in aanraking met de Coffee Duck, een herbruikbaar plastic cupje waar je zelf je eigen espressogemalen koffie in kan doen.

thumb_nespresso

In het verlengde hiervan maakt de firma Konig een memory expander voor de PlayStation 2.

GAMPS2-16MB10

Het is een aanvulling op je bestaande PlayStation memory card, en vergroot daarmee de totale geheugencapaciteit. Het intressante eraan is dat de memory expander zich naar de host toe voordoet als een plug-in en naar de plug-in toe als een host.

Nog een mooi voorbeeld (en Nederlands product) is de hdmyboy, een handige gagdget die het videobeeld van een originele Game Boy opschaalt naar HD-kwaliteit en via HDMI doorstuurt naar een monitor.

naamloos

Het apparaatje doet dat door zich diep in de Game Boy te nestelen op een plek waar twee componenten zijn verbonden via een bandkabel. Ook hier doet de plug-between zijn werk.

images

Als ontwikkelaar zie ik hiervoor meerdere toepassingen voor software, bijvoorbeeld een backofficeapplicatie met database en business logica regels, die zich ook kan voordoen als een database. Hierin liggen mogelijkheden voor het uitbreiden van legacy software (waar bijv. geen broncode meer van is). De software an sich verandert niet, de wereld eromheen wel!

Als laatste wil ik noemen de toenemende uitbreidbaarheid van Microsoft Visual Studio en de Roslyn compiler.

De compiler als een service biedt ruimte voor diverse plug-ins en plug-betweens.