SandForce 1222 SSD Testing, Part 5: Detailed Throughput and IOPS Analysis with a 188.8.131.52 Kernel
In this series we've been working over the 2.6.32 kernel, which is a bit old. Let's kick the tires on a 184.108.40.206 kernel to see if it helps or hurts performance of the SandForce SSD.
Quick Review of Previous Results
The first four articles in this series have examined the throughput and IOPS performance of a SandForce 1222-based SSD. The really interesting thing about this controller is that it uses real-time data compression to improve performance and to improve the longevity of the drive. The result is that the performance and the longevity both depend upon your data, giving you a unique opportunity for tailoring your system design.
In the more detailed examinations of the throughput and IOPS performance, the SandForce SSD was compared to the Intel X-25E, an enterprise class SLC based SSD so that its performance could be compared to the high performance level of an enterprise class SSD. The performance was measured using IOzone a common and useful IO benchmark. One of the critical features that IOzone provides is the ability to alter the compressibility (what IOzone calls dedupability) level of the data so that we can directly measure the performance impact of the data compressibility on the SSD. In addition the tests were run at least 10 times and the average and standard deviation were reported (remember our good benchmarking techniques?). The tests were run over a range of data compressibility levels from 98% compressible to 2% compressible, and over a few record sizes from 64KB to 16MB for the throughput tests and a fixed 4KB size for the IOPS testing.
The first obvious result from the previous testing is that the write performance of the SandForce SSD varied with the data compressibility level while the read performance did not vary too much except in the case of the IOPS performance. The specific highlights from the detailed throughput examination are the following:
- All of the write tests with the exception of the random write and record rewrite tests exhibited the same general behavior. The general trends are listed in the following bullets.
- As the level of compressibility decreases, the performance of the SandForce SSD decreases fairly quickly. However, the performance of the Intel SSD does not change appreciably with changes in the data compressibility.
- For all write tests except the record rewrite test, the Sandforce SSD is faster than the Intel SSD when the data is 98% compressible. So a $100 SSD has a faster sequential write performance than a $750 SSD but only when the data is very compressible.
- When the data is about 75% compressible, the SandForce SSD has just a little bit worse write performance than the Intel SSD.
- For data compressibility levels below 75% the Intel SSD is generally much better than the SandForce SSD.
- Intel SSD write performance doesn’t change with data compressibility
- Intel SSD write performance doesn’t change much with record size
- For the random write performance the Intel SSD performance varies by a fair amount with record size. The performance of the SandForce controller does vary by not to the same degree as the Intel SSD.
- For the record rewrite test, for both the Intel and SandForce SSDs, the performance improves as the data compressibility decreases. The performance also dramatically decreases as the record size increases.
- For the random write test, the performance of the Intel SSD has much more variability than the SandForce SSD
- The SandForce SSD sequential write performance is noticeably faster with smaller record sizes (compare the 64KB record size to 16MB record size) for all tests but the record rewrite
- The following trends are true for all of the read cases except for the random read, backward read, and stride read cases.
- There isn’t much change in performance for either SSD as the level of data compressibility changes
- For both SSDs as well, as the data compressibility level decreases (the data becomes more incompressible), the performance difference for various record sizes greatly decreases
- For high levels of data compressibility (i.e. the data is easily compressed), the performance of both the SandForce and Intel SSD varies greatly with record size. Given that the Intel SSD does not do real-time data compression, presumably this performance variation has more to do with the system or the file system than the SSDs.
- The Intel SSD is a bit faster than the SandForce SSD for the various block sizes and various compression levels but the differences are not as pronounced as in the write tests. However, this is pretty good considering this is a consumer SSD that costs about $100 coming very close to the performance of a $750 enterprise level SSD.
The more thorough IOPS performance examination also found some interesting highlights:
- For Sequential Write IOPS performance:
- The Sequential Write IOPS performance of the SandForce SSD decreases with decreasing data compressibility. It decreases by about a factor of 2 from the best performance to the lowest performance.
- The Sequential Write IOPS performance for the Intel SSD is not really affected by the data compressibility
- The SandForce SSD is as fast or faster than the Intel SSD at 98% and 75% data compressibility. Otherwise the Intel SSD is faster – up to twice as fast as the SandForce SSD for smaller levels of compressibility.
- For Sequential Read IOPS performance:
- The performance of the SandForce SSD reduces with decreasing data compressibility but the reduction does not happen smoothly.
- The performance of the Intel SSD does not change with data compressibility
- The performance of the SandForce and the Intel SSDs are about the same for 98% data compressibility. Otherwise, the Intel SSD is better than the SandForce SSD reaching about 28.4% better performance at 25% data compressibility.
- For the Random Write IOPS performance:
- The performance of the SandForce SSD decreases as the data compression level decreases while the performance of the Intel SSD does not really change with data compressibility
- The SandForce SSD has much better performance than the Intel SSD for all levels of data compressibility.
- At 98% data compressibility, the SandForce SSD is nearly 5 times faster than the Intel SSD
- At 2% data compressibility, the SandForce SSD is 2.8 times faster than the Intel SSD
- Comparing the Sequential Write IOPS to the Random Write IOPS performance for the SandForce SSD, the following was observed:
- At 98% and 75% data compressibility, Sequential Write IOPS is better than Random Write IOPS
- At 50%, 25%, and 2% data compressibility, the Random Write IOPS is better than Sequential Write IOPS. This is unexpected as random write performance is usually much lower than sequential performance.
- For the Random Read IOPS performance:
- The performance of the SandForce SSD decreases with decreasing data compressibility but the decrease is not a smooth function of the data compressibility
- The performance of the Intel SSD does not really change with data compressibility
- At 98% data compressibility the performance of the SandForce SSD is slightly better than the Intel SSD. But at all other levels of data compressibility, the performance of the Intel SSD is better, but not by much.
The biggest surprise in the examination was the really good random write IOPS performance of the SandForce SSD even with very incompressible data.
All of the testing was done with a 2.6.32 kernel which seems like a fairly old kernel (it was released on Dec. 3, 2009) since that was available on the system used for testing. However, since the kernel is so old, it makes one ask the question, do the SSD “features” in more recent kernels make any impact on performance of the SandForce SSD? My recent article on discovering if TRIM is working on your SSD pointed some possibly important features are in the more recent kernels. More specifically,
- In 2.6.33, believe it or not, the FAT file system got a “discard” mount option. But more importantly, in the 2.6.33 kernel, libata (i.e. the SATA driver library) added support for the TRIM command. So really at this point, kernels 2.6.33 and greater can support TRIM commands. Also, ext4 added the ability is used discard as a mount option for supporting the ability to use the TRIM command.
- In 2.6.36 ext4 added discard support when there is no journal using the “discard” mount option.
- In 2.6.37 ext4 gained the ability for batched discards. This was added as an ioctl called FITRIM to the core code.
While these notes are all focused on TRIM which may or may not improve performance, it is possible that other file system features may have been added to the kernel to improve performance.
So based on these observations I wanted to repeat all of the testing but with a more modern kernel. This article summarizes the throughput and IOPS performance differences for the same tests for the same hardware with a 2.6.32 kernel and a 220.127.116.11 kernel.
Brief Review of the Testing