Jetstress 2013 Global Threads

Jetstress 2013 has several noticeable differences from its predecessor, Jetstress 2010. One of the differences is in that the thread count now becomes global, rather than per-database (see Fig. 1). What this means is that threads are managed at the global level, rather than the per-database level. So, the number of threads now applies to all databases together, not to each individual database separately.

     Figure 1. Jetstress 2013 thread count becomes global.

For instance, Figure 1 shows there are 7 threads in a global pool, which are used by the 7 databases shown in Figure 2.

       Figure 2. Number of databases setting.

Microsoft stated that this change “improves the granularity of thread tuning and enables automatic tuning to work more effectively.” To see the impact of the change to the test results, I ran a quick Jetstress 2013 test. The parameters used in the test are listed below.

  • Number of mailboxes: 7,000
  • IOPS/Mailbox: 0.06
  • Mailbox size: 1.5GB
  • Thread count (global): 7
  • Test type: Performance
  • Run background database maintenance: Yes
  • Continue the test run despite encountering disk errors: No
  • Number of databases: 7
  • Number of copies per database: 2

Figure 3 shows the header and configuration portion of the Jetstress 2013 report. The green rounded rectangle highlights the fact that the database count is 7 and the thread count is also 7.

       Figure 3. Database count and thread count.

Figure 4 shows a fragment of the result portion of the Jetstress 2013 report. We can make the following observations by focusing on the columns inside the green rounded rectangle:

  • The Reads Average Latencies are very close for all databases, except for the first one. The latency for the first database is lower than the rest. In comparison, with Jetstress 2010, the latency for the first database was also somewhat different but higher than that of the rest.
  • The Writes Average Latencies display a pretty wide range. This behavior is similar to that of Jetstress 2010. So, even if it is a little bit weird, it is not something new.
  • It is very good to see that Database Reads/sec are also very close among all databases, and the same is true for Database Writes/sec. This indicates that the global threads are distributing the I/Os evenly to all databases.

       Figure 4. Jetstress 2013 performance test results: the per-database latencies and IOPS.

In summary, the global threads seem to do the job. Further tests will be needed in order to see how it actually improves the granularity of thread tuning.

Thanks for reading.