One extremely powerful feature of the STB Suite Disk Manufacturing Module (DMM) is the “External Program” test step. This step test makes DMM a completely extendable test platform – any test function that you need that isn’t already built in can be added quickly and easily.
In this article we will use the example of adding a test to DMM which will measure the Track-to-track, Third-Stroke, and Full-Stroke SEEK times of SCSI/FC, or SAS drives, and will record these three SEEK times back to the DMM individual drive log files.
Implementing the test
We will write this test using the STB Suite Developers Toolbox (DTB) api. We will write this example using Visual Studio 6, C++. It could just as easily be written using VB or .Net.
The ANSI T10 committee has retired or obsoleted the SEEK command and so we will need to find another way to accomplish our goal. If you were only testing drives which you know have the old SEEK command implemented it would be a simpler program to use that CDB.
In our case we will use single-block READ(10) commands, using the Force Unit Access (FUA) bit to insure actual media access instead of everything being done out of cache. To calculate a baseline we will initially execute 1,000 single-block READ(10) commands w/o FUA, all from block 0 – to calculate the time taken in transferring data. Later we will subtract this overhead time from our SEEK times to obtain a more accurate measurement.
Once we have this baseline we will then execute 1,000 single-block READ(10) w/ FUA set – alternating between block 0 and a block number estimated to be around one track away from zero. Then, 1,000 of the same, between block zero and an LBA one-third of the way into the drive, then 1,000 of the same between block zero and the high block number of the drive.
We experimented with trying to read the drive geometry MODE PAGE and actually calculate what is one track, one-third of the drive, and the end of the drive – all of that effort did not make any practical difference in the test results. For the obsessive among our readers feel free to implement this – you could even go so far as to let the drive interpret your calculated LBA’s out into physical C/H/S addresses if you so desire…with DTB you can go as far as you’d like.
We have previously documented how to have an external program communicate back to the DMM log files – we use those methods to write the resulting measurements of the three SEEK methods back to the log files.
Extending DMM – how to run the test
First, copy the new test executable (“DMMscsiSeekTest.exe”) to the root folder of your C: drive.
Within the DMM Test Setup screen select the “External Program” test step type. Another dialog will pop up asking if there are any additional command-line arguments. This test does not use any so simply click “OK”. Then use the Browse button next to the “Firmware File/External Program Executable” file box to browse to and select the test in the C: root folder. Then click “Add this test to test sequence” and run the test on one or more drives.
Running on a typical FC interface drive we see this entry in the log file:
STB DMM Seek Test Results:
Test Run 02/22/10 12:12:30
Single-track Seek Time = 1.49 ms
Third-Stroke Seek Time = 5.52 ms
Full-Stroke Seek Time = 7.70 ms
Extending DMM to accomplish any test scheme is made possible with the External Program test step. In addition to the traditional idea of controlling environmental chambers or power supplies the STB Suite DTB api allows new tests that accomplish device I/O to run and report results back to the DMM logs.