Exchange Server Role Requirements Calculator 8.4

Exchange 2010 Mailbox Role Sizing Calculator 16.4Last week, the Exchange team published an update for the Exchange Server Role Requirements Calculator, the tool to aid you in properly sizing your Exchange Server 2013 or Exchange Server 2016 deployments.

The new version number is 8.4, and it contains the following changes since version 8.3:

New Functionality

  • Added support for ReplayLagMaxDelay
  • Added support for SafetyNetHoldTime in CreateDAG.ps1

Bug Fixes

  • Improved the DAG auto-calculation results display to highlight deployment configuration in both datacenters
  • Fixed an issue that prevented DAG auto-calculation in single site DAG deployments
  • Fixed a SPECInt2006 validation issue with DAG auto-calculation
  • Fixed a bug with the DAG auto-calculation with Active/Passive deployments
  • Fixed conditional formatting issues with the transaction log table
  • Removed data validation from certain unused cells on the Input tab
  • Fixed bug in calcNumActiveDBsSF formula

You can download the calculator here. For more information, please consult the list of changes here or Read Me here.

Exchange Server Role Requirements Calculator 8.3

Exchange 2010 Mailbox Role Sizing Calculator 16.4The Exchange team published an update for the Exchange Server Role Requirements Calculator, the tool to aid you in properly sizing your Exchange Server 2013 or Exchange Server 2016 deployment.

The new version number is 8.3, and it contains two major enhancements compared to version 7.9:

  • Added ability for the calculator to automatically determine the number of Mailbox servers and DAGs that need to be deployed to meet the chosen input requirements
  • Added Read from Passive support for Exchange 2016 deployments which results in decreased bandwidth utilization for HA copies

You can download the calculator here. For more information, please consult the list of changes here or Read Me here.

Exchange Server Role Requirements Calculator 7.9

Exchange 2010 Mailbox Role Sizing Calculator 16.4The Exchange team published an update for the Exchange Server Role Requirements Calculator, the tool to aid you in properly sizing your Exchange Server 2013 or Exchange Server 2016 deployment. The new version number is 7.9, and it contains mainly bug fixes.

Functionality changes and bug fixes since version 7.8:

  • Added support for 1.8TB disk capacity
  • Added color formatting for when memory exceeds the maximum recommended value
  • Fixed calcNumDBCopyInSDC formula to take into account proper number of lagged copies
  • Fixed calcActDBPDCWorst formula to take into account non-HA deployments
  • Fixed an issue where ReplayLagManager calculated field did not take into account the user disabling JBOD
  • Fixed version mismatch and added Add-PartitionAccessPath in Diskpart.ps1 script
  • Fixed issue with export CreateDAG.ps1 script where it defined Alternate Witness in single datacenter deployments
  • Fixed diskpart.ps1 script to sleep 10s after creating partition but prior to formatting to minimize error condition
  • Fixed RetainDeletedItemsUntilBackup to be set to $false for NDP deployments

You can download the calculator here. For more information, please consult the list of changes here or Read Me here.

Exchange Server Role Requirements Calculator 7.8

Exchange 2010 Mailbox Role Sizing Calculator 16.4The Exchange team today published an update for the Exchange 2013 Server Role Requirements Calculator as well. The new version number is 7.8. This version incorporates sizing for Exchange 2016 as well and includes support for ReFS (default for Exchange 2016). The version number is also dropped from the calculator.

More or less complementary to the calculator is the updated sizing guidance for Exchange 2016, which was also published today here. No big changes here, apart from multi-role only option and a slight increase in CPU requirements to cover for unforeseen circumstances as the team is still learning from real-world behavior. This makes sense, looking at the speed in which the calculator was released compared to the one for Exchange 2013. Kudos to the Exchange team!

New and enhanced functionality since version 7.6:

  • Added support for Exchange 2016
  • Included CPU utilization guidance changes for Exchange 2016
  • Diskpart.ps1 and CreateDAG.ps1 now support ReFS
  • Moved DataMoveReplicationConstraint setting from CreateMBDatabases.ps1 to CreateMBDatabaseCopies.ps1
  • Revised all of the Distribution dialog controls to load their defaults from variables rather than use hard-coded values
  • The DAG name from the Input tab now flows through as the default on the Export DAG dialog
  • Updated Distribution tab dialog controls to persist the global catalog value during a session
  • Added conditional formatting for ReplayLagTime and SafetyNetThreshold
  • Removed 2013 from the name of the calculator

Fixes since version 7.6:

  • Fixed inaccuracies with “Number of Exchange Data Volumes per Server” input
  • Fixed calcActDBPDCWorst formula to take into account non-HA deployments
  • Fixed multiple dbs / volume calculation to take into account ReplayLagManager
  • Fixed calcNumDBCopyInSDC formula to take into account proper number of lagged copies
  • Fixed MaxPreferredActive not being displayed for A/A (Single DAG) site resilient solutions
  • Fixed an issue with Fail* buttons on Distribution tab when using some regional settings
  • Fixed an issue with volume path persistence on the Distribution tab Mount Points dialog

You can download the calculator here. For more information, please consult the list of changes here or Read Me here.

Exchange 2013 Server Role Requirements Calculator 7.6

Exchange 2010 Mailbox Role Sizing Calculator 16.4The Exchange team published an update for the Exchange 2013 Server Role Requirements Calculator as well. The new version number is 7.6.

Changes since version 6.6:

  • Added support for ReplayLagManager
  • Added support for PreferredMaximumActiveDatabases
  • Added new table that exposes theoretical CPU utilization for each mode (normal runtime, first server failure, second server failure, site failure, site failure + 1 failure)
  • Added Restore-DatabaseAvailabilityGroup scenario support in Distribution algorithm
  • Added warning about designs that include more than24 processor cores / server and 96GB of memory
  • Added support for DAGs without Administrative Access Point (default behavior is no administrative access point) in the CreateDAG script
  • Changed default for Deleted Item Retention in export file to be the highest profile value for Deleted Item Retention
  • Changed default for Circular Logging in export file to be true when using Exchange Native Protection
  • Added ability to save scripts and CSV files to OneDrive for Business
  • Fixed CreateDAG.ps1 script error for DAG creation without administrative IP address
  • Modified CreateMBDatabases.ps1 to ignore CircularLogging choice and modified CreateMBDatabaseCopies.ps1 to enforce CircularLogging choice
  • Fixed Export DAG list function to use the correct value for MaximumActiveDatabases
  • Added support for MaximumPreferredActiveDatabases and AutoDatabaseMountDial in Export DAG List function and createdag.ps1
  • Modified CreateMBDatabaseCopies.ps1 to remove sleep timer, improving copy creation significantly
  • Fixed createdag.ps1 to not generate an error when there is no alternate witness server provided

Fixes since version 6.6:

  • Fixed an issue that prevented the calculator from displaying results when site resilience was disabled while Active/Active (Single DAG) was selected
  • Changed Processor Cores/Server to not use a list drop down, thereby enabling customers to enter in configurations they are deploying.
  • Fixed bugs in Diskpart script with PrepareAutoReseedVolume switch and WhatIf processing
  • Fixed bug in Diskpart with escaping quotes in some languages
    Fixed bug with display of lag copies in single site design
  • Fixed multiple databases / volume calculation to take into account symmetric designs that utilize an odd number of servers in a single site
  • Fixed scenario to count number of servers in A/P scenario where the only copy deployed in DR is a lagged copy
  • Fixed #NAME error in Database Copy Configuration table for standalone configurations
  • Updated DC1 memory sizing to take into account site failure mode for A/A (Single DAG) designs involving a 2 copy architectures
  • Updated Distribution Tab error reporting and Lastrow calculation
  • Fixed copy count validation formula for site resilient scenarios to not allow more copies in the primary datacenter than the number of servers
  • Added support for 10TB and 12TB capacity disks
  • Fixed run-time error on distribution tab when disabling site resilience
  • Fixed distribution error when disabling cross-site failover
  • Fixed bug in Distribution tab ActiveServer formula when modeling Cross Site Failover behavior
  • Fixed an issue with the distribution tab throwing an error when two files were opened at the same time
  • Fixed distribution algorithm where lagged copies were not always represented correctly
  • Blocked unsupported A/A (Single DAG) scenario where copy count is not the same in both datacenters

You can download the calculator here. For more information, please consult the list of changes here or Read Me here.

Exchange 2013 Server Role Requirements Calculator 6.6

Ex2013 LogoNote: Shortly after publishing, a minor update was made in to fix circular referencing in the sheet.

Next to an updated Exchange 2010 Server Role Requirements calculator, the Exchange team published an update for the Exchange 2013 Server Role Requirements Calculator as well. The new version number is 6.5.

This new version includes a nice new feature, courtesey of Excel, which will plot mailbox usage using the provided input. You can find this chart on the Mailbox Space Modeling tab.

msm

Changes since version 6.5:

  • Fixed circular logic issue with initial mailbox size calculation

Changes since version 6.3:

  • New: The calculator now includes mailbox space modeling graphs that extrapolates (for each mailbox tier) the projected amount of time it will take to consume the mailbox quota.
  • Fixed “Number of Exchange Data Volumes per Server” to support more than 50 volumes.
  • Optimized memory sizing for FAST which reduces memory requirements for small mailbox server designs.
  • Added the ability to specify multiple AutoReseed volumes per DAG server to calculator and scripts.
  • Fixed 3 database/volume layout scenario involving 100 copies/server.
  • Fixed rounding error in calculating number of databases/volume in “2 Volumes / Backup Set”
  • Log isolation is now a calculated property to align with best practices guidance.
  • Changed “Disk” to “Vol” in left column of Distribution tab to align with scenarios that do not involve JBOD configurations.
  • Added additional processor core options.
  • Fixed JBOD storage design results table to accurately account for Restore Disk capacity being set to “–” and for differences between PDC and SDC Restore Disk capacity settings.
  • Fixed Backup Requirements worksheet to expose Weekly Full backups correctly.
  • Various comment changes/corrections.

You can download the calculator here. For more information, please consult the list of changes here or Read Me here.

Exchange 2010 Server Role Requirements Calculator 20.9

Exchange 2010 LogoAlmost 1,5 year after, the Exchange Team released an update for the Exchange 2010 Server Role Requirements Calculator. The updated version is 20.9 and contains minor bug fixes over the previous version.

Fixes since version 20.8:

  • Additional fixes on CAS/HT CPU calculations formulas
  • Disabled Distribution tab for Active/Active Single DAG model
  • Added Distribution tab warning that only one of the two DAGs is shown
  • Fixed RAID disk calculation for A/A scenario and lagged copies

You can download the calculator here. For more information please consult list of changes here or view usage instructions here.

Exchange-Processor Query Tool: PowerShell Edition

powershellLast Update: Version 1.1, June 28th, 2016.

Anyone sizing for Exchange Server 2013 or even still Exchange Server 2010, using the Server Role Requirements Calculator, has to determine processor requirements at some point. This is accomplished by looking up the SPECint_rate2006 score of the planned processor configuration and matching that against the calculated number of required megacycles by the calculator. To account for fail-over situations, additional overhead needs to be added to the number of megacycles. The process as part of the overall sizing has been explained in detail by Jeff Mealiffe here.

The Exchange consultants’ Swiss army knife when determining SPECint rates is the Exchange Processor Query Tool, an Excel sheet designed by Scott Alexander from Microsoft, which allows you to easily look up and determine the SPECint_rate2006 value by inputting a processor model. While still useful, the tool has been out there since 2011. Also, it would be nice sometimes to see which systems are eligible for a certain sizing specification, rather than validating if the planned processor configuration meets the sizing requirements.

So, I wrote a PowerShell script which can query the SPECint rates for you. Because the rating scores are returned as objects, you can perform additional tasks using PowerShell functionality, such as:

  • Use additional criteria, such as vendor, min/max number of cores, etc.
  • Calculate the average SPECint2006 Rate Value for a certain CPU/cores configuration.
  • You can use the SPECint value calculated by the Server Role Requirements Calculator  to find hardware configurations which meet the required total megacycles requirements, optionally including a required overhead percentage.
  • You can select if you are sizing for Exchange Server 2010 or Exchange Server 2013.

Requirements
The script requires PowerShell and internet access to query the SPECint database.

Usage
The script is called Exchange-PQT.ps1, in honor of the Processor Query Tool (PQT).  The syntax is as follows:

Exchange-PQT.ps1 [-CPU <String>] [-Vendor <String>] [-System <String>] [-Overhead <Int32>] [-MinMegaCycles <Int32>] [-Type <String>] [-MinCores <Int32>] [-MaxCores <Int32>] [-MinChips <Int32>] [-MaxChips <Int32>] [<CommonParameters>]

The information returned and which you can use for post-processing is: Vendor, System, CPU (processor description), Cores, Chips (number of CPU’s), CoresPerChip (number of Cores per CPU), Speed, Result, Baseline, MCyclesPerCore (megacycles per core), MCyclesTotal (total megacycles), OS and Published. Note that megacycles calculations are based on the selected Exchange version, by default this is Exchange Server 2013.

A quick walk-through on the parameters:

  • CPU, Vendor or System can be used for partial matching on the respective attribute.
  • Type specifies what calculation to perform. Possible values are 2010 for Exchange Server 2010 and 2013 for Exchange Server 2013. Default value is 2013.
  • MinCores/MaxCores/Cores can be used to only return information for systems with less, more or a specific number of cores.
  • MinChips/MaxChips/Chips can be used to only return information for systems with this more, less or a specific number of CPU’s.
  • MinMegaCycles can be used to specify a threshold for the total megacycles value for returned items, using the specified Type for calculations.
  • Overhead can optionally be used to take into account a certain percentage for megacycles overhead. Default is 0 (0%).
  • Ratio/vCPU can be used to specify the vCPU:pCPU ratio. For example, specify a Ratio of 2 to use a 2:1 vCPU to pCPU ratio. Default is 1 (1:1). Use the vCPU paramete to specify the the number of vCPU allocated.

Few notes:

  • MinCores/MaxCores and MinChips/MaxChips are mutually exclusive, because we can not specify both in the query against the SPECint database. However, you can use additional filtering on objects returned in the pipeline to distill information, e.g.
    Exchange-PQT.ps1 –MaxCores 32 –MaxChips 8 | Where { $_.Cores –ge 4 –and $_.Chips –ge 2}.

    Do note that usage of these parameters is recommended when possibe, as it will minimize the result set from SPECint.

  • Make sure you set Type to 2010 when sizing for Exchange 2010.

Examples

Lookup the specifications of the server used by Jeff in his sizing example (Hewlett-Packard DL380p Gen8 server with Intel Xeon E5-2630 processors @2.30GHz):

.\Exchange-PQT.ps1 -System 'DL380p Gen8'  -CPU 2630 | select System,MCycle*

Search all specs for systems from Dell containing x5470 processors and return megacycle information for Exchange 2010 calculations:

.\Exchange-PQT.ps1 -CPU x5470 -Vendor 'Dell Inc.' -Type 2010 | Select System,*cycle*

image

Calculate average SPECint 2006 rate values for  hex-core x5450 systems:

.\Exchange-PQT.ps1 -CPU x5470 | Where { $_.Cores -eq 8 } | Measure -Average Result

Search all specs for Dell systems using x5670 CPUs, with a minimum total of 16,000 megacycles and 20% megacycle overhead:

.\Exchange-PQT.ps1 –Vendor Dell -CPU x5670  -MinMegaCycles 16000 -Overhead 20 

image

To calculate when using a non-1:1 vCPU:pCPU ratio, use Ratio in combination with vCPU. For example, to calculate the average SpecInt rate for 20 core systems with an E5-2670 CPU, using a 2:1 vCPU:pCPU ratio, allocating 12 vCPU cores:

.\Exchange-PQT.ps1 -CPU 'e5-2670' -Cores 20 -Ratio 2 -vCPU 12 | Measure-Object -Average -Property Result

Download
You can download the script from the TechNet Gallery page.

Feedback
Feedback is welcomed through the comments. If you got scripting suggestions or questions, do not hesitate using the contact form.

Revision History
See TechNet Gallery page.

Exchange 2013 Server Role Requirements Calculator 6.3

Excel-2013[1]The Exchange 2013 Server Role Requirements Calculator received an update to reflect changed incorporated in Exchange 2013 SP1, such as adjusted guidance to accomodate for MAPI/http and its impact on the CAS role, as well as revised pagefile sizing guidance. The new version number is 6.3.

Changes since version 6.1:

  • Fixed Backup Requirements calculations to include greater than 50 databases.
  • Added additional processor core support.
  • Fixed the number of database volumes calculation when disk count is specified.
  • Fixed the database size calculation for A/P scenarios to match A/A scenario calculations.
  • Fixed the calculator to take into account halving database number per volume in non-site resilient scenarios.
  • Fixed conditional formatting errors on transport configuration settings.
  • Fixed transport sizing to take into account mailbox growth.
  • Updated CAS megacycle calculations to align with SP1 guidance.
  • Revised Dispart.ps1 script to create database mount points consistent with JetStress performance counters.
  • Added Calculator version number to record one field three of CSV export files.

You can download the calculator here. For more information, please consult the release notes and read me

Exchange ESE Performance: 2010 versus 2013

chartNote: I finished this article after having the draft ready for some time. It describes a simple storage performance test I did some time ago when I had some spare time and a few SSD disks to spare – a seldom circumstance. Despite Exchange 2013 CU3 and Windows Server Server 2012 R2 now available, I choose not to redo the tests with current versions as WS2012 R2 is more similar to WS2012 than WS 2012 is to WS2008R2 and also due to current time and resource constraints. Therefor, the information collected at the time is used as-is. Also, be sure to check the disclaimer at the end of the article.

After the release of Exchange 2013, the claim was that the new Exchange extensible storage engine (ESE), when compared to Exchange 2010 ESE, would require 50% less IOPS. I wanted to get in indication if there was any truth to that claim utilizing my humble lab setup, consisting of HP’s entry level ML110 G6 servers (x3430, 16GB). Using spare SSD’s as storage, that should provide sufficient IOPS thus not becoming a bottleneck, I ran JetStress 2010 and JetStress 2013 to see if there were any significant differences in the results. As at that time Windows Server 2012 also became available, I ran both versions of JetStress on Windows Server 2008 R2 as well as on Windows Server 2012.

For those unfamiliar with JetStress, it is the tool to verify the performance and stability of Exchange storage solutions and is normally used prior to putting an Exchange server into production when validate the storage solution against required performance criteria. It does this by simulating Exchange I/O patterns for a specified number of users and profiles or you can test the storage throughput in general.

The following parameters were used to perform JetStress tests:

Mode Test Disk Subsystem Throughput
Thread Count 8 (fixed)
Min/Max DB Cache 32 MB / 256 MB
Ins / Del / Repl / Read % 40/20/5/35
Lazy Commits 70%
Run Background DB Maintenance True
Databases 1 x 100 GB DB, 3 Copies

I used a fixed number of threads to rule out differences in JetStress’ auto tuning components and level the 2010 and 2013 playing fields. Also, in JetStress 2013 the thread count is global where in JetStress 2010 it was a per database setting. Since we’re using a single database, this shouldn’t have any impact. The database and logs were storage on a single LUN, using a a dedicated directly attached SSDs with an aligned NTFS partition and 64k cluster size.

The results of the JetStress 2010/2013 tests on Windows Server 2008 R2 / 2012 are contained in the table below (I/O is Total I/O as Database and Logs were put on the same volume). All significant (10%+) deviations are marked in bold.

JetStress Version 14.2.225.17
(2010)
15.0.658.4
(2013)
14.2.225.17
(2010)
15.0.658.4
(2013)
ESE.DLL 14.3.123.2
(Exchange 2010 SP3)
15.0.620.0
(Exchange 2013 CU1)
14.3.123.2
(Exchange 2010 SP3)
15.0.620.0
(Exchange 2013 CU1)
Operating System 6.1.7600
(WS2008R2)
6.1.7600
(WS2008R2)
6.2.9200.0
(WS2012)
6.2.9200.0
(WS2012)
Overall Test Result Passed Passed Passed Passed
Achieved Transactional IOPS 773,71 899,72 777,34 865,84
Database Reads Average Latency (msec) 16,86 11,78 16,06 11,47
Database Writes Average Latency (msec) 4,54 3,70 4,32 3,32
Database Reads/sec 397,82 506,96 396,41 490,70
Database Writes/sec 392,75 398,87 398,76 381,34
Database Reads Average Bytes 42.681,78 35.649,30 43.127,88 35.753,71
Database Writes Average Bytes 35.404,62 35.312,04 34.894,94 35.520,67
Log Reads Average Latency (msec) 12,17 9,34 10,29 8,35
Log Writes Average Latency (msec) 0,68 0,57 0,63 0,50
Log Reads/sec 8,97 9,03 8,36 8,84
Log Writes/sec 171,72 172,59 172,94 173,15
Log Reads Average Bytes 232.562,93 232.566,98 232.565,23 232.565,17
Log Writes Average Bytes 6.305,28 8.381,35 5.845,82 8.269,47
Avg. % Processor Time 3,65 2,83 3,70 2,77
JetStress Report Link Link Link Link

Some interesting observations:

  • Though I didn’t see a 50% IOPS reduction, which could be related to my setup, Exchange 2013 generates significant less IOPS;
  • Exchange 2013 shows significant lower average DB+Log latencies for read and write operations;
  • Exchange 2013 on WS2012 gives slightly worse IO performance but offers lower DB+Log latencies for read and write operations;
  • Exchange 2013 shows a higher DB read read (DB Reads/sec) reading smaller chunks of data (DB Reads Avg. Bytes);
  • Stressing the disk subsystem in Windows Server 2012 results in a lower CPU utilization.

Finally, a short disclaimer: This test was only performed to get an indication of differences in storage performance of Exchange Server 2010 SP3 and Exchange Server 2013 CU1 on Windows Server 2008 R2 and Windows Server 2012 when utilizing identical hardware. The JetStress results are purely indicative and not meant to provide guidance or proof related to disk subsystem performance in any form with regards to Exchange Server 2010 versus Exchange Server 2013 on Windows Server 2008 R2 and Windows Server 2012. Your mileage may – and will – vary.

You can download the JetStress tool here to test your storage solution; monitor my toolkit page for any updates. The JetStress 2013 Field Guide can be found here.