NT4SP6 vs. NT4SP3 Sequential IO Performance

We will first examine the sequential IO performance on the old-old and old-new configurations. We compared NT4 Service Pack 6 to the original NT4 Service Pack 3 used by Riedel. The graphs in Figure 4 tell the story for buffered IO. Things are mostly unchanged except that the performance bug discovered by Riedel was fixed by NT4SP6. In NT4SP3 buffered read requests of 128KB and above had half the sequential IO bandwidth (see left graph in Figure 4). The right graph in Figure 4 indicates this problem is has disappeared. As is expected, WCE writes show much better performance than writes without WCE.
|
|
Figure 4 – Synchronous Buffered throughput: NT4SP6 vs. NT4SP3. The dip in the left graph is due to a performance bug in NT that caused decreased throughput at 128KB read requests and above. Buffered reads at small request sizes of 2KB and 4KB run at the full disk speed under NT4SP6.
|
Figure 5 shows buffered overhead in NT4SP3 and NT4SP6. Riedel’s results on the left were taken using GetProcessTimes() while our graph on the right was taken using a soaker. The left graph therefore may be under-reporting processor overhead while the right graph may be over-reporting. Measurements using both GetProcessTimes() and a soaker showed lower overheads for buffered writes at request sizes above 64KB. Riedel’s results show both the overhead of buffered reads and writes per MB remains constant for requests above 8KB, with a slight increase for writes for requests above 64KB. Writes in both NT4SP3 and NT4SP6 cost more than reads. In order to compensate for the faster processor in our 333 MHz machine compared to Riedel’s 200 MHz machine, we have scaled the NT4SP6 graph so that the relative heights on the two graphs correspond to the same number of instructions executed.
Under NT4SP6, the fixed cost is 20s per request and marginal cost is 16s per KB on a 333 MHz Pentium III.
|
|
Figure 5 – Synchronous Buffered overhead: NT4SP6 vs. NT4SP3. The right graph shows a lower overhead for large request sizes and read requests of all sizes. The right graph’s vertical axis has been scaled to compensate for differences in processor speed between the two machines used for each study. Note that the graph on the left was measured using GetProcessTimes() and may be under-reporting the overhead.
|
Figure 6 shows the significant improvement in throughput for 2KB unbuffered reads and writes under WCE. Using SP3, the previous study measured a drop of about 4MBps in throughput for 2KB unbuffered write requests with WCE. Under SP6, there is no longer a penalty for 2KB unbuffered writes. With WCE, 2KB writes were able to reach the disk throughput maximum.
|
|
Figure 6 – Synchronous unbuffered throughput: NT4SP6 vs. NT4SP3. The right graph compared to the left and middle graphs of the original SP3 measurements shows SP6’s improved read and WCE write throughput. Unbuffered overhead between NT4SP6 and NT4SP3 was the same. Note that due to a plateau in unbuffered writes, the unbuffered write tests on NT4SP6 were run on ST34572 drives rather than the ST34371.
|
Figure 7 compares the asynchronous read and write throughput of SP3 and SP6. Asynchronous reads and writes under SP6 have the same improvements at small request sizes as synchronous unbuffered requests in Figure 6. The new measurements are on disks that are slightly faster (9MBps vs. 7MBps), so the reader should focus more on the relative shapes of the curves.
Unbuffered read throughput at small request sizes improved dramatically as shown by the upper two graphs. Unbuffered write tests run on a ST34572 drive followed the trend shown by the lower right graph: increasing the write depth up to a depth of four leads to higher disk throughput due to increased parallelism. The bottom right graph showing unbuffered writes on NT4SP6 shows a lower throughput than the bottom left graph of NT4SP3 at 2KB requests. This is likely due to the fact that different drives were under test between the two experiments. As with the previous graphs, the reader should focus on the relative shapes of the curves.
|