Configuring Thread Count

 

Applies to: Exchange Server 2010 SP1, Exchange Server 2010

Topic Last Modified: 2011-09-01

Thread count controls how many I/O per second (IOPS) Jetstress attempts to drive through the storage subsystem. Setting this value correctly requires some trial and error. In configuring thread count, your goal is to increase the thread count to a value that fails, and then reduce the value until the test passes. The value at which the test is passed represents the peak working IOPS value that the storage subsystem can support.

Each thread allocates a set value of IOPS per database. For example, if the storage design team recommends that the storage for a given server support 1,000 IOPS, and that the server host six active databases and three replica databases, use the following formulas to determine the thread count:

  • Target IOPS = Maximum storage capacity of server * 1.5 = 1,000 * 1.5 = 1,500 IOPS

  • Total Databases = Active + Replica + Lagged = 9

With the values for Target IOPS and Total Databases, you can now find the value for thread count as follows:

Thread Count = Target IOPS / (Total Databases x 135) = 1500 / (9 x 135) = 1 (Rounded down)

Note

If the thread count is less than 1, you'll need to modify the value of the SluggishSessions property. (See "Configuring the SluggishSessions Property" later in this topic.)

For more information about configuring a disk system throughput test, see Example Disk Subsystem Throughput Test. The table below discusses the expected IOPS depending on your thread count.

IOPS per thread

Threads Log disk writes/sec Database disk transfers/sec Total

1

33

107

140

2

63

195

258

3

105

308

413

4

150

400

550

5

190

535

725

10

390

1050

1440

20

500

1900

2400

Configuring the SluggishSessions Property

If you can't achieve the correct IOPS value by modifying the thread count, you'll need to modify the value of the SluggishSessions property within the JetstressConfig.xml file. The SluggishSessions value adds a pause between each task that allows a level of fine-tuning over the workload dispatched by Jetstress.

As the value of SluggishSessions is increased, the achieved IOPS value decreases. To change the value, open the JetstressConfig.xml file and look for the default configuration option:

SluggishSessions>1</SluggishSessions

Modify the value to the desired pause length, save the configuration file, and then re-start Jetstress.

Lab Test Data for SluggishSessions

The following example of test data may help you configure thread count and the value of the SluggishSessions property. It provides a guide to the target IOPS values that Jetstress will attempt to reach for a given configuration. As latency increases, the achieved IOPS values diminishes. This example data was taken from a single database running on a Raid10 LUN with 24x2.5” 10k serial attached SCSI hard drives.

Jetstress SluggishSessions test data

Jetstress SluggishSessions Test Data

In the following figure, read "BDM" as background database maintenance.

Effects of SluggishSessions on IOPS workload

Effects of SluggishSessions on IOPS workload