White Papers

Validating the storage design
12 Dell EMC SC Series: Microsoft SQL Server Best Practices | CML1057
Some I/O test tools, including Diskspd, SQLIO, and IOMeter, generate files full of zeros. By default,
SC Series arrays track pages full of zeroes in the metadata, but do not store them on a disk. This
behavior, known as a thin write, causes inaccurate results when testing with files containing only
zeros. Avoid using test utilities that write zeros for disk validation. The contents of the test file can be
verified by viewing the test file with a hex editor after different stages of a test. For example, create a
small test file and view it after the initial creation, as well as after the test has run for a few seconds. If
the file is filled with zeros, select another utility. Diskspd and IOMeter initially create test files filled
with zeros, and then writes random characters when performing write tests. To properly initialize a
Diskspd or IOMeter test file, run a sequential write test until the entire file has been overwritten with
non-zero data. Unfortunately, SQLIO writes zeros during write tests and therefore is not
recommended for disk validation.
The purpose of this type of testing is to validate that the storage design will provide the required throughput
and IOPS with acceptable latency. It is important that the test does not exceed the designed capacity of the
array. For example, an SC Series array designed for a workload of 25,000 IOPS is likely to perform poorly
with a workload of 50,000 IOPS. If a test is generating a workload higher than the designed capacity, adjust
the workload being generated by reducing the number of threads and/or outstanding I/Os.
The results of the DPACK analysis provide an I/O target to simulate using these tests. To get an idea of the
performance capabilities of the array, run I/O tests with a range of I/O sizes commonly seen with SQL Server.
When testing random I/O, test with an I/O size of 8 KB and 64 KB. When testing sequential I/O, start with I/O
sizes of 8 KB and 64 KB. Since processes like read ahead scans and backups can issue much larger
sequential I/O, it is a good idea to also test block sizes up to 1024 KB.