dcsimg

SandForce 1222 SSD Testing, Part 5: Detailed Throughput and IOPS Analysis with a 2.6.38.2 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 2.6.38.2 kernel to see if it helps or hurts performance of the SandForce SSD.

While you can go back and read the first four articles, here, here, here, and here, to read the details on the testing process, to make this article a little more complete the testing process is briefly reviewed.

For the throughput testing, this article uses IOzone as the benchmarking tool. Recall that IOzone is one of the most popular throughput benchmarks. It’s open-source and is written in very plain ANSI C (not an insult but a compliment). It is capable of single thread, multi-threaded, and multi-client testing. The basic concept of IOzone is to break up a file of a given size into records. Records are written or read in some fashion until the file size is reached. Using this concept, IOzone has a number of tests that can be performed. The thirteen tests listed below, are performed to measure the throughput capability of the drives.


  • Write
  • Re-write
  • Read
  • Re-read
  • Random Read
  • Random Write
  • Backwards Read
  • Record Rewrite
  • Strided Read
  • Fwrite
  • Refwrite
  • Fread
  • Refread

You can refer to the first article for more details on these tests.

For the IOPS testing, IOzone was also used. The four tests listed below, are performed to measure the IOPS capability of the drives.


  • Write IOPS
  • Read IOPS
  • Random Read IOPS
  • Random Write IOPS

You can refer to the first IOPS article for more details on these tests.

The tests were run on the same system as previous tests but as mentioned previously a 2.6.38.2 kernel (the most recent kernel when the tests were performed) was used. The highlights of the system are:


  • CentOS 5.4 with either a 2.6.32 kernel or a 2.6.38.2 kernel
  • GigaByte MAA78GM-US2H motherboard
  • An AMD Phenom II X4 920 CPU
  • 8GB of memory (DDR2-800)
  • The OS and boot drive are on an IBM DTLA-307020 (20GB drive at Ultra ATA/100)
  • /home is on a Seagate ST1360827AS
  • Micro Center SandForce 1222, 64GB SSD. This is mounted as /dev/sdd
  • Additionally, a 64GB Intel X-25E SSD is used, courtesy of Intel. This is mounted as /dev/sdd.
  • ext4 is used as the file system with the default options (Note: To get TRIM capability, the “discard” mount option has to be used).

For the throughput testing five record sizes were used: (1) 64KB, (2)1MB, (3) 4MB, (4) 8MB, and (5) 16MB. The command line for the first record size (64KB) is,

./IOzone -Rb spreadsheet_output_64K.wks -s 16G -+w 98 -+y 98 -+C 98 -r 64K > output_64K.txt

The command line for the second record size (1MB) is,

./IOzone -Rb spreadsheet_output_1M.wks -s 16G -+w 98 -+y 98 -+C 98 -r 1M > output_1M.txt

The command line for the third record size (4MB) is,

./IOzone -Rb spreadsheet_output_4M.wks -s 16G -+w 98 -+y 98 -+C 98 -r 4M > output_4M.txt

The command line for the fourth record size (8MB) is,

./IOzone -Rb spreadsheet_output_8M.wks -s 16G -+w 98 -+y 98 -+C 98 -r 8M > output_8M.txt

The command line for the fifth record size (16MB) is,

./IOzone -Rb spreadsheet_output_16M.wks -s 16G -+w 98 -+y 98 -+C 98 -r 16M > output_16M.txt

The options “-+w”, “-+y” and “-+C” define the how much “dedupability” there is in the data and buffers. In the above command lines “98″ means that the data can be deduplicated (compressed) 98%. Note that these options are only available with a later version of IOzone.

For the IOPS testing, only one record size was used corresponding to the most common size used for testing IOPS – 4KB. The command line for this record size is,


./iozone -Rb spreadsheet_output_4K.wks -O -i 0 -i 1 -i 2 -e -+n -+w 98 -+y 98 -+C 98 -r 4K -s 16G > output_4K.txt

The options “-+w”, “-+y” and “-+C” define the how much “dedupability” there is in the data and buffers. In the above command lines “98″ means that the data can be deduplicated (compressed) 98%. Note that these options are only available with a later version of IOzone.

For this article, six compressibility levels: (1) 98%, (2) 75%, (3) 50%, (4) 25%, (5) 2%, and (6) random, were used. The last compressibility level is one that allows IOzone to randomly pick the compressibility level of the data, presumably randomly, throughput the test run. That option is “-+d” and the “-+w”, “-+y” and “-+C” are dropped from the command line.

Results

Presenting the results in a clear easy to understand manner has proven to be challenging. The results could have been presented in side-by-side charts, one for the 2.6.32 kernel, and one for the 2.6.38.2 kernel, but that data was so small that it was difficult to discern which bar corresponded to which record size and compressibility level. Consequently, it was decided to present the results as a “percentage difference” between the performance for the 2.6.32 kernel and the 2.6.38.2 kernel since the intent of the testing was to examine any performance changes.

All the subsequent plots use the percent difference in performance between the 2.6.38.2 kernel and the 2.6.32 kernel. More specifically, the difference in the average performance is reported. A positive number (> 0) indicates that the average performance over the 10 tests is faster for the 2.6.38.2 relative to the 2.6.32 kernel (the performance difference is normalized by the 2.6.32 average performance results). And obviously, if a negaive number indicates that the average performance over the 10 tests is slower with the 2.6.38.2 kernel relative to the 2.6.32 kernel.

In addition to reporting the difference in the average performance, the percentage standard deviation is also plotted as error bars. The percent variation in performance is computed for the 2.6.38.2 kernel and is used as the “error” or standard deviation for the percent difference in average performance. The intent for displaying the standard deviation is that when examining the performance difference between two performance results, the standard deviation can tell you if the difference is statistically meaningful. So, for these plots, if the standard deviation crosses the zero axis (positive or negative), then the difference is not statistically meaningful. The reason this is true is that the standard deviation is greater than the performance difference so the results are not statistically meaningful.

This article will start with the throughput performance followed by the IOPS performance. There will be a number of plots so hang in there! (you should be congratulated for making it this far).

Figure 1 below is the performance difference for the sequential write test for the five record sizes for the six levels of dedupability (compressibility) for the SandForce SSD for the two kernels (2.6.32 and 2.6.38.2). Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_write.png
Figure 1: Average Write Throughput Difference between the 2.6.32 and 2.6.28.2 kernels for the Five Record Sizes for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

Notice that in Figure 1, at 75% compressibility and a record size of 64KB, that the error bar does not cross the zero axis. This means that the performance difference for this test is acceptable (i.e. the standard deviation is not greater than the performance difference). On the other hand, if you look at the “RANDOM” compressibility and a 4MB record size you will see that the standard deviation (the error bars) is much greater than the performance difference indicating that the performance change is not statistically meaningful (i.e. one cannot say that the performance difference is actually “real” or is within the standard deviation of the tests).

In examining the data in Figure 1, a few observations stand out. The first one (IMHO) is that except for the 98% compressible case, as the record size increases, the performance of the 2.6.38.2 kernel is slightly worse than the 2.6.32 kernel although some of the differences are statistically meaningless (i.e. the difference is within the standard deviation). Table 1 below lists the changes that appear to have more improvement in performance (2.6.38.2 is better than 2.6.32) and worst changea in performance (2.6.32 is better than 2.6.38.2).

Table 1 – Sequential Write Performance Difference Highlights for the 2.6.38.2 and 2.6.32 kernels

Case Compression Level Record Size Performance Difference Percentage
(Standard Deviation)
Worst Change in Performance 98% 8MB -8.35%
6.07%
    64KB -1.64%
0.69%
Performance Improvement (Better) 98% 1MB 2.79%
0.84%
  98% 4MB 2.30%
1.05%
  75% 64KB 3.44%
3.02%
  25% 64KB 1.96%
1.28%
  Random 64KB 2.75%
0.84%

Figure 2 below is the performance difference for the sequential re-write test for the five record sizes for the six levels of dedupability (compressibility) for the SandForce SSD for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_rewrite.png
Figure 2: Average Re-write Throughput Difference between the 2.6.32 and 2.6.28.2 kernels for the Five Record Sizes for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

In examining the data in Figure 2, one obvious thing stands out – overall the sequential rewrite performance went down for the 2.6.38.2 kernel relative to the 2.6.32 kernel and they are really no cases where it improved (except one where the improvement was minor). Table 2 below highlights some of the more significant changes.

Table 2 – Sequential Rewrite Performance Difference Highlights for the 2.6.38.2 and 2.6.32 kernels

Case Compression Level Record Size Performance Difference Percentage
(Standard Deviation)
Worst Change in Performance 98% 64KB -1.97%
0.57%
  75% 1MB -3.91%
0.34%
  75% 8MB -5.57%
0.18%
  75% 16MB -6.53%
0.34%
  Random 8MB -1.30%
0.80%
  Random 16MB -1.37%
0.39%

Figure 3 below is the performance difference for the random write test for the five record sizes for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_random_write.png
Figure 3: Average Random Write Throughput Difference between the 2.6.32 and 2.6.28.2 kernels for the Five Record Sizes for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

In examining the data in Figure 3, it appears that there are a couple of good performance gains but in general random write throughput performance decreases for the 2.6.38.2 kernel relative to the 2.6.32 kernel, but the decreases are fairly small. Table 3 below highlights some of the more significant changes.

Table 3 – Random Write Performance Difference Highlights for the 2.6.38.2 and 2.6.32 kernels

Case Compression Level Record Size Performance Difference Percentage
(Standard Deviation)
Worst Change in Performance 98% 64KB -10.03%
4.44%
  50% 4MB -3.36%
0.26%
  50% 16MB -3.22%
0.27%
Performance Improvement (Better) 98% 1MB 8.47%
2.60%
  75% 64KB 6.32%
3.14%

Figure 4 below is the performance difference for the record rewrite test for the five record sizes for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_record_rewrite.png
Figure 4: Average Record Rewrite Throughput Difference between the 2.6.32 and 2.6.28.2 kernels for the Five Record Sizes for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

In examining the data in Figure 4, one of the more obvious trends is that the record rewrite performance improved when moving from the 2.6.32 to the 2.6.38.2 kernels. However, the standard deviations are fairly large so it’s difficult to say that the differences are statistically meaningful. But there are some notable performance differences as highlighted below in Table 4.

Table 4 – Record rewrite Performance Difference Highlights for the 2.6.38.2 and 2.6.32 kernels

Case Compression Level Record Size Performance Difference Percentage
(Standard Deviation)
Worst Change in Performance 2% 64KB -1.92%
1.02%
Performance Improvement (Better) 2% 1MB 16.95%
13.84%
  Random 64KB 7.29%
0.85%
    1MB 6.19%
0.96%

Figure 5 below is the performance difference for the fwrite test for the five record sizes for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_fwrite.png
Figure 5: Average Fwrite Throughput Difference between the 2.6.32 and 2.6.28.2 kernels for the Five Record Sizes for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

In examining the data in Figure 5, it appears that there is not a general trend and perhaps not much change because of the large standard deviations making much of the performance change statistically insignificant. However there are some small gains, particularly with the 64KB record size, and some losses, particularly at the 1MB size as highlighted below in Table 5.

Table 5 – Fwrite Performance Difference Highlights for the 2.6.38.2 and 2.6.32 kernels

Case Compression Level Record Size Performance Difference Percentage
(Standard Deviation)
Worst Change in Performance 50% 1MB -2.38%
0.44%
GG 25% 1MB -2.28%
0.62%
GG 2% 1MB -2.51%
0.41%
Performance Improvement (Better) 75% 64KB 1.56%
1.00%
  50% 64KB 1.71%
0.75%
  25% 64KB 1.26%
1.25%
  2% 64KB 1.59%
0.74%
  Random 64KB 2.96%
1.27%

Figure 6 below is the performance difference for the frewrite test for the five record sizes for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_frewrite.png
Figure 6: Average Frewrite Throughput Difference between the 2.6.32 and 2.6.28.2 kernels for the Five Record Sizes for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

Based on the data in Figure 6 the only real general trend is that overall the performance decreased for the 2.6.38.2 kernel relative to the 2.6.32 kernel. But there was one very nice performance improvement but there are several performance decreases as highlighted in Table 6 below.

Table 6 – Frewrite Performance Difference Highlights for the 2.6.38.2 and 2.6.32 kernels

Case Compression Level Record Size Performance Difference Percentage
(Standard Deviation)
Worst Change in Performance 75% 64KB -2.46%
0.35%
GG   1MB -3.26%
1.37%
GG   4MB -4.75%
0.26%
GG   8MB -6.79%
0.22%
GG   16MB -8.04%
0.70%
GG 50% 64KB -1.43%
0.47%
GG   1MB -2.16%
0.24%
GG   4MB -3.11%
0.24%
GG   8MB -3.45%
0.22%
GG   16MB -3.44%
0.23%
Performance Improvement (Better) 98% 1MB 11.78%
2.15%

Figure 7 below is the performance difference for the sequential read test for the five record sizes for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_read.png
Figure 7: Average Read Throughput Difference between the 2.6.32 and 2.6.28.2 kernels for the Five Record Sizes for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

In examining the data in Figure 7, it’s fairly apparent that overall there isn’t much change in performance since the differences are small. Moreover, the standard deviations are fairly large so it is difficult to find substantial changes. Table 7 below lists the few reasonable performance changes due to the 2.6.38.2 kernel.

Table 7 – Read Performance Difference Highlights for the 2.6.38.2 and 2.6.32 kernels

Case Compression Level Record Size Performance Difference Percentage
(Standard Deviation)
Worst Change in Performance 98% 4MB -0.96%
0.23%
GG 25% 8MB -1.00%
0.15%
GG 2% 1MB -1.19%
0.18%
    16MB -1.19%
0.16%
Performance Improvement (Better) 98% 8MB 0.77%
0.32%
    16MB 0.80%
0.21%

Figure 8 below is the performance difference for the reread test for the five record sizes for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_reread.png
Figure 8: Average Reread Throughput Difference between the 2.6.32 and 2.6.28.2 kernels for the Five Record Sizes for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

Much like the read performance differences there is little trend in the reread performance differences. Plus the standard deviations are fairly large making any use of the performance differences difficult. Table 8 below highlights a few changes.

Table 8 – Reread Performance Difference Highlights for the 2.6.38.2 and 2.6.32 kernels

Case Compression Level Record Size Performance Difference Percentage
(Standard Deviation)
Worst Change in Performance 98% 4MB -0.99%
0.19%
GG 50% 4MB -2.63%
0.99%
Performance Improvement (Better) 98% 8MB 1.56%
0.26%
    16MB 1.16%
0.66%
  Random 16MB 1.12%
0.85%

Figure 9 below is the performance difference for the random read test for the five record sizes for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_random_read.png
Figure 9: Average Random Read Throughput Difference between the 2.6.32 and 2.6.28.2 kernels for the Five Record Sizes for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

In examining the data in Figure 9, it is noticed that the performance changes are fairly small (less than 2%) with many of them being negative changes (i.e. worse performance for the 2.6.38.2 kernel). Table 9 has some of the highlights from Figure 9.

Table 9 – Random Read Performance Difference Highlights for the 2.6.38.2 and 2.6.32 kernels

Case Compression Level Record Size Performance Difference Percentage
(Standard Deviation)
Worst Change in Performance 98% 64KB -0.95%
0.41%
    4MB -1.15%
0.22%
  25% 8MB -1.19%
0.23%
  2% 1MB -1.40%
0.41%
    16MB -1.40%
0.41%
Performance Improvement (Better) 98% 8MB 2.30%
0.18%
    16MB 1.51%
0.58%

Figure 10 below is the performance difference for the backward read test for the five record sizes for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_backward_read.png
Figure 10: Average Backward Read Throughput Difference between the 2.6.32 and 2.6.28.2 kernels for the Five Record Sizes for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

Based on the data in Figure 10 the biggest thing that stands out is that there are some fairly substantial performance decreases for the 2.6.38.2 kernel for the backward read test but some of these decreases have fairly large standard deviations indiciating that they are not statistically significant. Table 10 below highlights some of the more significant changes.

Table 10 – Backward Read Performance Difference Highlights for the 2.6.38.2 and 2.6.32 kernels

Case Compression Level Record Size Performance Difference Percentage
(Standard Deviation)
Worst Change in Performance 50% 64KB -7.68%
5.27%
  25% 64KB -7.61%
5.57%

Figure 11 below is the performance difference for the stride read test for the five record sizes for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs wi

iozone_stride_read.png
Figure 11: Average Stride Read Throughput Difference between the 2.6.32 and 2.6.28.2 kernels for the Five Record Sizes for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

In examining the data in Figure 11, it is fairly obvious that performance differences are fairly small and there really isn’t a pattern to them. Table 11 below highlights some of the more significant performance changes going from 2.6.32 to 2.6.38.2.

Table 11 – Stride Read Performance Difference Highlights for the 2.6.38.2 and 2.6.32 kernels

Case Compression Level Record Size Performance Difference Percentage
(Standard Deviation)
Worst Change in Performance 98% 4MB -1.20%
0.16%
  Random 1MB -1.85%
0.16%
Performance Improvement (Better) 98% 8MB 1.59%
0.22%
    16MB 1.44%
0.52%
  75% 16MB 1.10%
0.39%

Figure 12 below is the performance difference for the fread test for the five record sizes for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_fread.png
Figure 12: Average Fread Throughput Difference between the 2.6.32 and 2.6.28.2 kernels for the Five Record Sizes for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

In examining the data in Figure 12, it appears that there really isn’t much of a general trend in the performance differences. The performance differences are small and the standard deviations are fairly large. The more prominent performance differences are listed below in Table 12.

Table 12 – Fread Performance Difference Highlights for the 2.6.38.2 and 2.6.32 kernels

Case Compression Level Record Size Performance Difference Percentage
(Standard Deviation)
Worst Change in Performance 98% 4MB -1.07%
0.24%
  Random 1MB -1.33%
0.92%
Performance Improvement (Better) 98% 8MB 1.05%
0.23%
    16MB 1.10%
0.25%

Figure 13 below is the performance difference for the freread test for the five record sizes for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_freread.png
Figure 13: Average Freread Throughput Difference between the 2.6.32 and 2.6.28.2 kernels for the Five Record Sizes for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

Much like the fread tests, the performance differences for the 2.6.38.2 and 2.6.32 kernels for the freread test are fairly small with no real discernible trend and fairly large standard deviations. Table 13 below contains the notable performance differences.

Table 13 – Freread Performance Difference Highlights for the 2.6.38.2 and 2.6.32 kernels

Case Compression Level Record Size Performance Difference Percentage
(Standard Deviation)
Worst Change in Performance 98% 4MB -1.08%
0.21%
  75% 4MB -1.21%
0.68%
  50% 4MB -1.24%
0.78%
Performance Improvement (Better) 98% 8MB 1.46%
0.49%
    16MB 1.29%
0.39%

Figure 14 below is the performance difference for the sequential write IOPS test for a 4KB record size for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_write_iops.png
Figure 14: Average Sequential Write IOPS Difference between the 2.6.32 and 2.6.28.2 kernels for a 4KB Record Size for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

It’s fairly obvious from the data, that updating the kernel to 2.6.38.2 from 2.6.32 really improved Sequential Write IOPS performance. The largest improvement in performance was for 98% data compressibility where the average performance improved by 21.02% (+/- 4.50%). The smallest improvement was for the random data compressibility case where the average performance improved by 5.88% (+/- 2.20%). Even for the case where the data is almost incompressible (2% data compressibility), the average performance improved by about 6.5%.

Figure 15 below is the performance difference for the random write IOPS test for a 4KB record size for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_random_write_iops.png
Figure 15: Average Random Write IOPS Difference between the 2.6.32 and 2.6.28.2 kernels for a 4KB Record Size for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

Recall from the this article that the random Write IOPS performance was a hallmark of the SandForce based SSD tested so one should not expect much improvement in the random Write IOPS performance with a kernel change. However, the performance did improve by a fairly large amount except at 98% data compressibility.

At 98% data compressibility, the average random write IOPS performance decreased by 3.11% but the standard deviation is larger than the performance difference so it’s difficult to state the performance did actually decrease. At the 75%, 25%, 2%, and random data compressibility levels, the average random Write IOPS performance improved by varying amounts. At the 75% the performance improvement is about 28%, at 25% data compressibility the performance improvement is a little over 15%, and at random data compressibility the performance improvement is almost 16%. You can see the exact changes in Table 16.

Figure 16 below is the performance difference for the sequential read IOPS test for a 4KB record size for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_read_iops.png
Figure 16: Average Sequential Read IOPS Difference between the 2.6.32 and 2.6.28.2 kernels for a 4KB Record Size for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

In examining the data in Figure 16, it’s obvious that only at certain compressibility levels has the performance improved and for other compressibility levels the average performance barely changed. At 75% data compressibility, the sequential Read IOPS improved by 6.94% (+/- 5.20%) which was largest performance change. However even at 25% data compressibility level, where the data is close to being incompressible, the average performance improved by about 6.3%. Finally, for the random data data compressibility level, the average performance improved by about 5.24%.

Figure 17 below is the performance difference for the random read IOPS test for a 4KB record size for the six levels of dedupability (compressibility) for both the SandForce for the two kernels. Note that the “error” bars are the standard deviation for the 10 test runs with the 2.6.38.2 kernel.

iozone_random_read_iops.png
Figure 17: Average Random Read IOPS Difference between the 2.6.32 and 2.6.28.2 kernels for a 4KB Record Size for the Six Levels of Dedupability (Compressibility) for the SandForce SSD

In examining the data in Figure 17 the general trend is similar to that for sequential Read IOPS – there are some fairly big improvements but only for certain data compressibility levels. For data compressibility levels of 75%, 25%, and random, the average random Read IOPS improved by a fair amount. The average performance for these data compressibility levels improved in the range of about 12.5% to 14.5% while the other data compressibility showed no real signs of changing.

Summary

The first four articles in this series focused on testing the SandForce based SSD using the 2.6.32 kernel. However, this kernel didn’t necessarily have the features that take advantage of SSDs. So this article repeats all of the tests in the first four articles but with a 2.6.38.2 kernel (the most recent non-rc kernel when the testing was started). Both throughput and IOPS performance were examined using IOzone which allows control over the data compressibility levels.

In general, there were some noticeable changes in performance. Specifically,


  • Write Throughput Tests:

    • Sequential write throughput improved somewhat for smaller record sizes
    • Sequential rewrite throughput performance decreased pretty much across the board (data compressibility levels and record sizes)
    • Random write throughput performance decreased but by a fairly small amount
    • Record rewrite throughput performance improved by a fairly sizable amount
    • Fwrite throughput performance didn’t show a lot of change
    • Frewrite throughput performance generally decreased except at 98% data compressibility (very compressible data)

  • Read Throughput Tests:

    • Sequential Read, Reread, and Random Read throughput performance didn’t change too much for the record sizes tested
    • Backward read throughput performance decreased by a fair amount, particularly for the smaller record sizes tested
    • The stride read, fread, and freread throughput performance didn’t change much with the new kernel.

  • IOPS:

    • The Sequential Write IOPS performance increased by quite a bit for the 2.6.38.2 kernel – up to about 22% for the 98% data compressibility case
    • The Random Write IOPS performance improved by a large amount for some data compressibility cases. For the 75% data compressibility case, the performance improved by just over 28%!!
    • The Sequential Read IOPS performance improved by a reasonable amount but only for certain data compressibility levels – 75%, 25%, and random
    • The Random Read IOPS performance exhibited the same general behavior as sequential read IOPS but the levels of improvement were much greater, reaching just over 14% improvement for the 2.6.38.2 kernel for the 75% data compressibility case

Overall the performance improved with the 2.6.38.2 kernel with one or two exceptions. Perhaps most importantly, the overall IOPS performance improved greatly.

I hope you have enjoyed this series on the SandForce SSD testing. I’ve tried to follow good benchmarking practices while also exploring aspects of a really cool technology – real-time data compression in the SandForce SSD controllers.

Final note: While not bragging, doing good testing involves a great deal of work. For this article series, about 36,000 individual tests were run. But no electrons were harmed during the testing (although my power bill may have taken a noticeable hit).

Appendix

This section contains the data from the plots in tabular form in case you need or want exact values from the figures.

Table 14 – Difference in IOzone Write Performance Results from the 2.6.38 to 2.6.32 kernels with data compression levels of 98%, 75%, 50%, 25%, 2% and Random, for the SandForce SSD

Record Size Compression Level Percentage Write Performance
Difference
Percentage Re-write Performance
Difference
Percentage Random Write Performance
Difference
Percentage Record Re-write Performance
Difference
Percentage Fwrite Performance
Difference
Percentage Frewrite Performance
Difference
64KB 98% -1.64%
0.69%
-1.97%
0.57%
-10.03%
4.44%
0.97%
2.71%
-1.62%
0.46%
-1.86%
0.64%
64KB 75% 3.44%
3.02%
-1.17%
0.41%
6.32%
3.14%
0.87%
1.98%
1.56%
1.00%
-2.46%
0.35%
64KB 50% 1.30%
3.02%
-0.79%
0.97%
-1.63%
0.88%
1.88%
1.51%
1.71%
0.75%
-1.43%
0.47%
64KB 25% 1.96%
1.28%
-2.94%
0.45%
0.42%
1.52%
-0.02%
2.41%
1.26%
1.25%
-1.09%
0.74%
64KB 2% 1.51%
1.12%
-1.08%
0.68%
-0.49%
0.69%
-1.92%
1.02%
1.59%
0.74%
-0.55%
0.43%
64KB RANDOM 2.75%
0.84%
-0.51%
0.71%
2.31%
1.10%
7.29%
0.85%
2.96%
1.27%
0.61%
0.83%
1MB 98% 2.79%
0.84%
0.75%
0.66%
8.47%
2.60%
0.92%
1.18%
3.13%
1.37%
0.69%
0.69%
1MB 75% -2.13%
0.99%
-3.91%
0.34%
-2.35%
1.15%
5.13%
5.77%
-0.93%
1.30%
-3.26%
1.37%
1MB 50% -0.61%
0.42%
-0.50%
0.33%
-3.08%
0.47%
8.30%
13.45%
-2.38%
0.44%
-2.16%
0.24%
1MB 25% -0.92%
1.17%
-1.88%
1.11%
-2.01%
0.84%
11.72%
15.83%
-2.28%
0.62%
-1.54%
0.50%
1MB 2% 0.67%
0.74%
-0.37%
0.59%
-2.18%
0.43%
16.95%
13.84%
-2.51%
0.48%
-0.28%
0.64%
1MB RANDOM 2.86%
5.49%
0.03%
1.42%
0.34%
1.26%
6.19%
0.96%
1.04%
5.82%
-0.72%
2.36%
4MB 98% 2.30%
1.05%
-1.29%
0.10%
-1.78%
0.81%
-1.46%
1.66%
1.53%
0.38%
-1.22%
0.10%
4MB 75% -0.27%
0.32%
-2.18%
0.30%
-2.03%
1.65%
-0.88%
2.76%
0.30%
0.71%
-4.75%
0.26%
4MB 50% -0.71%
0.47%
-2.94%
0.29%
-3.36%
0.26%
-0.17%
5.13%
0.01%
0.21%
-3.11%
0.24%
4MB 25% -0.43%
2.02%
-1.81%
1.83%
-1.28%
2.15%
-1.84%
1.99%
-0.01%
1.71%
-1.44%
1.99%
4MB 2% -1.03%
0.53%
-0.91%
0.56%
-2.27%
0.42%
0.65%
6.30%
-0.39%
0.26%
-0.35%
0.67%
4MB RANDOM 1.27%
6.52%
-0.55%
1.02%
-1.34%
0.97%
0.44%
2.30%
3.19%
5.29%
-0.74%
1.02%
8MB 98% -8.35%
6.07%
-0.27%
2.01%
-2.11%
1.84%
1.17%
0.96%
1.73%
1.24%
11.78%
2.15%
8MB 75% -0.79%
0.44%
-5.57%
0.18%
-1.74%
0.92%
0.38%
1.15%
0.62%
1.71%
-6.79%
0.22%
8MB 50% -0.51%
0.75%
-4.10%
0.24%
-2.64%
0.23%
1.07%
1.57%
-1.01%
0.17%
-3.45%
0.22%
8MB 25% -0.05%
0.71%
-2.69%
0.31%
-2.89%
0.36%
0.71%
2.05%
-0.84%
0.38%
-1.85%
0.48%
8MB 2% -0.31%
0.37%
-1.44%
0.27%
-1.49%
0.52%
1.39%
2.15%
-0.73%
0.43%
-0.59%
0.71%
8MB RANDOM 0.28%
0.50%
-1.30%
0.80%
0.37%
1.05%
-1.12%
1.14%
1.19%
1.23%
0.11%
0.44%
16MB 98% 0.86%
3.71%
-1.75%
4.00%
-3.44%
4.09%
0.88%
0.53%
0.13%
4.22%
-1.11%
0.45%
16MB 75% -1.47%
0.31%
-6.53%
0.34%
-1.54%
1.23%
-0.28%
1.35%
-0.44%
1.59%
-8.04%
0.70%
16MB 50% -0.69%
0.28%
-3.62%
0.39%
-3.22%
0.27%
-1.33%
1.45%
-0.99%
0.23%
-3.44%
0.23%
16MB 25% -1.42%
0.35%
-1.34%
0.31%
-2.08%
0.20%
0.06%
1.23%
-1.44%
0.27%
-2.05%
0.42%
16MB 2% -0.19%
0.58%
-1.08%
0.52%
-1.24%
0.30%
-0.09%
0.92%
-0.38%
0.77%
-1.24%
0.84%
16MB RANDOM 0.56%
0.49%
-1.37%
0.39%
0.32%
0.93%
0.69%
1.13%
0.89%
1.11%
0.29%
0.35%

Table 15 – Difference in IOzone Read Performance Results from the 2.6.38 to 2.6.32 kernels with data compression levels of 98%, 75%, 50%, 25%, 2% and Random, for the SandForce SSD

Record Size Compression Level Percentage Read Performance
Difference
Percentage Re-read Performance
Difference
Percentage Random Read Performance
Difference
Percentage Backwards Read Performance
Difference
Percentage Strided Read Performance
Difference
Percentage fread Performance
Difference
Percentage freread Performance
Difference
64KB 98% 0.20%
0.09%
0.14%
0.20%
-0.95%
0.41%
0.64%
0.45%
-0.31%
0.29%
0.25%
0.15%
0.12%
0.13%
64KB 75% -0.10%
0.17%
0.68%
0.97%
-0.39%
0.27%
-4.64%
7.49%
-0.20%
0.17%
0.04%
0.08%
0.44%
1.36%
64KB 50% -0.02%
0.13%
-0.23%
1.24%
-0.56%
0.20%
-7.68%
5.27%
-0.19%
0.17%
0.06%
0.13%
0.36%
1.09%
64KB 25% -0.07%
0.20%
-0.50%
1.36%
-0.40%
0.25%
-7.61%
5.57%
-0.11%
0.12%
0.13%
0.31%
-0.34%
0.97%
64KB 2% -0.93%
1.62%
0.83%
0.70%
-0.55%
0.17%
-1.82%
5.56%
0.07%
0.19%
-0.34%
0.90%
-0.57%
0.68%
64KB RANDOM -0.64%
1.35%
-0.47%
1.06%
-0.29%
0.16%
-6.22%
6.41%
0.13%
0.26%
0.13%
0.13%
-0.11%
0.98%
1MB 98% 0.16%
0.13%
0.14%
0.10%
0.28%
0.10%
2.49%
2.67%
1.49%
2.24%
-0.04%
0.14%
-0.06%
0.17%
1MB 75% 0.16%
0.14%
0.43%
0.96%
0.06%
0.10%
-0.71%
2.85%
0.14%
0.15%
0.13%
0.11%
0.65%
0.30%
1MB 50% 0.14%
0.21%
0.55%
1.24%
-0.17%
0.18%
-2.98%
3.39%
0.52%
0.39%
-0.20%
0.19%
-1.73%
1.09%
1MB 25% -0.05%
0.24%
-0.68%
1.22%
-0.56%
0.08%
-3.75%
3.41%
-0.33%
0.23%
0.17%
0.15%
1.00%
1.21%
1MB 2% -1.19%
0.18%
-0.37%
0.74%
-1.13%
0.16%
-1.22%
4.22%
1.38%
2.74%
-0.07%
0.03%
0.31%
1.02%
1MB RANDOM -0.05%
0.11%
-0.61%
1.51%
-0.20%
0.16%
0.39%
4.56%
-1.85%
0.16%
-1.33%
0.92%
0.28%
1.07%
4MB 98% -0.96%
0.23%
-0.99%
0.19%
-1.15%
0.22%
-1.19%
0.26%
-1.20%
0.16%
-1.07%
0.24%
-1.08%
0.21%
4MB 75% -0.28%
0.24%
-0.11%
0.43%
-0.48%
0.20%
-0.89%
0.15%
-0.72%
0.21%
-0.40%
0.14%
-1.21%
0.68%
4MB 50% -0.34%
0.23%
-2.63%
0.96%
-0.22%
0.18%
-0.42%
0.15%
-0.42%
0.15%
-0.39%
0.19%
-1.24%
0.78%
4MB 25% 0.56%
3.42%
0.72%
2.88%
0.60%
3.36%
0.43%
4.01%
0.94%
4.00%
1.07%
3.20%
1.05%
1.97%
4MB 2% -0.51%
0.92%
0.03%
0.92%
-0.49%
0.15%
-0.53%
0.15%
-0.31%
0.11%
-0.16%
0.09%
0.01%
1.12%
4MB RANDOM -0.32%
0.36%
-0.31%
0.97%
-0.33%
0.35%
-0.37%
0.35%
-0.28%
0.14%
-0.04%
0.68%
-0.81%
0.86%
8MB 98% 0.77%
0.32%
1.56%
0.26%
2.30%
0.18%
1.80%
0.29%
1.59%
0.22%
1.05%
0.23%
1.46%
0.49%
8MB 75% 0.35%
0.18%
-0.14%
0.45%
-0.03%
0.27%
0.42%
0.25%
0.43%
0.25%
0.29%
0.11%
0.49%
0.23%
8MB 50% 0.30%
0.17%
-0.19%
0.79%
0.44%
0.18%
0.59%
0.30%
0.82%
0.14%
0.26%
0.11%
-0.08%
0.75%
8MB 25% -1.00%
0.15%
-0.05%
0.37%
-1.19%
0.23%
-0.40%
0.32%
0.22%
0.10%
0.32%
0.12%
0.45%
1.00%
8MB 2% -0.01%
0.26%
0.36%
1.47%
0.32%
0.33%
0.22%
0.47%
0.66%
0.26%
0.22%
0.16%
0.71%
0.95%
8MB RANDOM 0.08%
0.17%
-0.30%
1.09%
0.05%
0.18%
0.23%
0.51%
0.53%
0.22%
0.42%
0.50%
0.83%
1.00%
16MB 98% 0.80%
0.21%
1.16%
0.66%
1.51%
0.58%
0.96%
0.52%
1.44%
0.52%
1.10%
0.25%
1.29%
0.39%
16MB 75% 0.42%
0.23%
0.76%
0.26%
0.65%
0.27%
0.35%
0.39%
1.10%
0.39%
0.35%
0.23%
0.65%
0.38%
16MB 50% 0.13%
0.12%
0.14%
0.47%
-0.40%
0.35%
0.25%
0.30%
0.31%
0.49%
0.14%
0.14%
0.02%
0.73%
16MB 25% 0.18%
0.09%
0.59%
1.01%
-0.23%
0.32%
-0.64%
0.40%
-0.01%
0.54%
0.17%
0.15%
-0.31%
1.02%
16MB 2% -1.19%
0.16%
-0.61%
0.91%
-1.40%
0.41%
0.14%
0.50%
0.10%
0.38%
0.20%
0.11%
0.15%
0.73%
16MB RANDOM 0.17%
0.10%
1.12%
0.85%
0.07%
0.43%
0.24%
0.83%
0.51%
0.57%
0.36%
0.50%
1.06%
0.99%

Table 16 – Difference in IOzone IOPS Performance Results from the 2.6.38 to 2.6.32 kernels with data compression levels of 98%, 75%, 50%, 25%, 2%, and Random, for the SandForce SSD

Compression Level Percentage Write IOPS Performance
Difference
Percentage Random Write IOPS Performance
Difference
Percentage Read IOPS Performance
Difference
Percentage Random Read IOPS Performance
Difference
98% 21.02%
4.50%
-3.11%
3.44%
0.61%
0.40%
-0.00%
0.87%
75% 6.95%
5.17%
28.11%
1.18%
6.94%
5.20%
14.41%
0.31%
50% 13.20%
4.23%
3.79%
5.71%
-0.87%
0.88%
-0.68%
0.36%
25% 6.46%
5.85%
15.44%
4.05%
6.32%
4.58%
12.61%
0.28%
2% 11.93%
3.91%
3.71%
2.81%
0.11%
0.55%
-0.70%
0.23%
RANDOM% 5.88%
2.20%
15.74%
1.31%
5.24%
4.51%
13.22%
0.26%
Fatal error: Call to undefined function aa_author_bios() in /opt/apache/dms/b2b/linux-mag.com/site/www/htdocs/wp-content/themes/linuxmag/single.php on line 62