Walkthrough: Stress and Performance Tool

Introduction

The Skype for Business Stress and Performance tool can be used to understand and tune the performance of a Skype for Business deployment before it moves into live service. It can generate load against a number of SfB components and consists of:

  • A tool to generate user accounts
  • A tool to generate profiles defining the loading characteristics
  • A tool to generate the load along with a number of sample scripts

Pre-requisites

The following pre-requisites must be met:

  • A machine to run the load tool is required for every 4,500 users; each machine should:
    • Have a gigabit NIC, 8GBs of RAM, two dual-core CPUs
    • Run Windows Server 2008 or Windows Server 2012 and have the following software and features installed: .NET 4.5 Framework, Desktop Experience, Microsoft Visual C++ 2013 (x64)
    • Have a systems-managed page size, or be configured as at least 1.5 times the amount of RAM
  • Skype for Business Server 2015 should already be deployed
  • If you have changed the default Client Version policy, it may be necessary to review the allowed User Agents
  • Each user created for the simulation uses the same password OR the password is set to the username; you need to ensure that at least one of these options is appropriate in your environment
  • You will need to be granted Domain Administrator rights; again, you need to check if this is going to be a problem in your environment

The TechNet documentation states that you shouldn’t install the User Creation tool (UserProvisioningTool.exe) on a Front End Server, but then goes on to say “You can start the Skype for Business Server User Provisioning Tool by running the file UserProvisioningTool.exe…on the Front End Server or on the Standard Edition server. Go figure. In this post, I am going to heed the initial advice and run the tool elsewhere; this means that the machine used to create the user accounts will require the Skype for Business Core Components installing along with the Administrative Tools:

  1. Launch Skype for Business Server 2015 setup:
    clip_image001clip_image002

    clip_image003

  2. Install the Administrative Tools:
    clip_image004clip_image005

    clip_image006

    clip_image007

Installation

  1. Download the Skype for Business Stress and Performance Tool
  2. Log into each machine that will be used for the simulation as an Administrator and install CapacityPlanningTool.msi:
    clip_image008clip_image009

    clip_image010

    clip_image011

    clip_image012

    clip_image013

  3. Register the performance counters for the application by entering the following at a command prompt:

regsvr32 /i /n /s LyncPerfToolPerf.dll

image

Scripts

A number of scripts are included in the download to help you with configuring Skype for Business in preparation for the load test. The scripts are located in C:\Program Files\Skype for Business Server 2015\LyncStressAndPerfTool\Doc (assuming you’ve not changed the default installation location). Bear in mind that the scripts are destructive with no simple roll-back; if you elect to use the scripts, you’ll need to modify them for your particular environment. And just to re-iterate, do all of this before implementing the final configuration and definitely before going into production.

The scripts include:

  • ArchivingPolicy.ps1: Enables archiving for internal and external IMs for three days and configures CDRs to be kept for seven days
  • BandwidthPolicy.ps1: Performs a CAC validation check and enables CAC
  • CallParkConfiguration.ps1: Removes any existing call park orbits, creates a new orbit number range and enables call park on the Global Voice Policy
  • ConferenceAutoAttendantConfiguration.ps1: Modifies the Global Conferencing Policy to enable Anonymous Participants and Dial-In Conferencing, creates and assigns a Dial-In Conferencing region, removes any existing Dial-In Conferencing numbers and assigns a new one (1121111111 by default)
  • ContactsPolicy.ps1: Sets the maximum number of contacts in the global user services configuration to 1,000
  • FederationPolicy.ps1: Sets the Access Edge configuration to allow anonymous, federated and outside users
  • LisConfiguration.ps1: Imports subnet, WAP, switch and port information into the LIS database
  • MeetingPolicy.ps1: Modifies the Global conferencing policy to enable IP Audio, IP Video, dial-in conferencing, application sharing, file transfer, internal and external participant control, annotations, app sharing, anonymous users, anonymous dial-out, external participant content saving and internal, external participant recordings and multi-view and sets the maximum meeting size to 250
  • ResponseGroupConfiguration.ps1: Creates a new RGS Agent Group, Queue and Workflow and assigns ten users to the agent group
  • RoutingRules.ps1: Configures a basic Enterprise Voice configuration including a Dial Plan and associated Normalisation Rules, a Voice Policy with associated PSTN Usage Records and Routes

 

Before running any of the scripts, you may need to update the PowerShell execution policy to Unrestricted; to do so, run a PowerShell prompt and enter the following:

Set-ExecutionPolicy -Unrestricted

clip_image014

Create Users and Contacts

User Creation

You create the users and contacts for the simulation using UserProvisioningTool.exe:

  1. Log onto one of the machines allocated for the simulation as a Domain Administrator
  2. Launch UserProvisioningTool.exe (located in C:\Program Files\Skype for Business Server 2015\LyncStressAndPerfTool\LyncStress, by default)
  3. Click Configuration and select the Load Configuration
  4. Load the default file included with the package, called SampleData.xml
  5. Configure the options on the User Creation tab:
    clip_image015
  6. Front End Pool FQDN: the fully qualified domain name of the Front End pool where the simulation users will be hosted
  7. User Name Prefix: a prefix to help with identifying the users for the simulation
  8. Password: a password that will be used for all simulation user accounts
  9. Account Domain: the domain name where the simulation users will be created
  10. Organizational Unit: the OU where the simulation users will be created (if you specify a Distinguished Name path (as in the example above, the OU must exist; if you specify a single OU name, it will be created)
  11. Phone Area Code: the phone number area code that will be assigned to all simulation users; you need to ensure the assigned phone numbers won’t conflict with existing users’ numbers in Active Directory
  12. If you’re including Enterprise Voice in the simulation, click the Voice Enabled check box
  13. Enter the number of simulation users to be created in the Number of Users field
  14. Start Index: the starting number that will be used as a suffix to the user name
  15. Click Create Users:
    clip_image016
  16. Click OK at the prompt to begin
  17. The parameters you’ve entered will be validated; if successful, the users will be created in Active Directory
  18. Don’t close the application until the progress bar indicates the process has completed (this can take a while)
    clip_image017
  19. Once complete, click OK to dismiss the prompt:
    clip_image018

Contacts Creation

  1. Configure the options on the Click the Contacts Creation tab (you need to ensure the information in the User Creation tab is correct for this to work)
    clip_image019
  2. Average Contacts per User: the average number of contacts to create per user; select Fixed to create an equal number of contacts for every user
  3. Average Contact Groups per User: the number of contact groups per user (must be smaller than Average Contacts per User)
  4. Federated / Cross Pool Contacts Percentage: the percentage of contacts that are federated
  5. Federated / Cross Pool User Prefix: the username for federated users that will be added to the user contact lists
  6. Federated / Cross Pool User SIP Domain: the SIP Domain of the federated users
  7. Click Create Contacts
  8. Click OK to start:
    clip_image016[1]clip_image020
  9. Once complete, click OK to dismiss the prompt:
    clip_image018[1]

Distribution Lists Creation

You can skip this step if you don’t intend to enable DL expansion in the User Provisioning tool, but if you want to include this step:

  1. Configure the options on the Distribution List Creation tab:
    clip_image021
  2. Number of Distribution Lists: the total number of DLs you want to create
  3. Distribution List Prefix: a prefix for the DLs
  4. Minimum Members in a Dist. List: the minimum number of users in each DL
  5. Maximum Members in a Dist. List: the maximum number of users in each DL
  6. Click Create Distribution Lists
  7. Click OK to start:
    clip_image016[2]clip_image022
  8. Once complete, click OK to dismiss the prompt:
    clip_image018[2]

Note: I have not included the configuration of LIS in this post, so the configuration of the Location Info Service Config tab is not detailed here.

Configure User Profile

Having created the users, it’s now time to configure user profiles; the tool used for this is the Skype for Business Server 2015 Load Configuration tool. To configure the user profile:

  1. Run UserProfileGenerator.exe (located in C:\Program Files\Skype for Business Server 2015\LyncStressAndPerfTool\UserProfileGenerator, by default)
  2. Complete the information in each tab as detailed below; note that the values specified must match those in the User Creation Tool for the pool.

Common Configuration

  1. Select the Common Configuration tab and specify the following:
    clip_image001[1]
  2. Number of Available Machines: the number of machines to be used in the simulation (at least one for every 4,500 users)
  3. Prefix for User Names: the prefix for the user name field of all users
  4. Password for All Users: the password used when creating the users (If you leave this field empty the username will be set as the password)
  5. User Start Index: the index of the first user to be configured; you can configure different ranges for different types or levels of load, but you must run the Load Configuration tool once per the range you want to configure
  6. Number of Users: the number of users to configure
  7. User Domain: the domain used for the SIP URI
  8. Account Domain: the AD DS domain logon
  9. MPOP Percentage: the percentage of users that are logged on from multiple machines or devices
  10. Sign in Per Second: the maximum number of concurrent endpoints (the recommendation is a rate of less than/equal to 2 per second)
  11. Access Proxy or Pool FQDN: the fully qualified domain name of the server the clients will connect to
  12. Port field: the port that you want users to use for SIP (the default is 5061)
  13. External Network Server Settings: the Access Proxy or Pool FQDN and port for external endpoints load simulation

General Scenarios

Ideally, you will have performed some analysis of the various personas that will be in use in the production environment; this way, the configuration of the scenarios will better match the real-world demands placed on the infrastructure. The High, Medium and Low Load Level values correspond to the User Model as used by the Bandwidth Calculator.

  1. Select the General Scenarios tab and specify the following:
    clip_image024
  2. Instant Messaging: set the peer-to-peer and conferencing IM load level
  3. Audio Conferencing: set the audio conferencing load level
  4. Application Sharing: set the application sharing load level
  5. Data Collaboration: set the data collaboration load level
  6. Distribution List Expansion: set the DL expansion load level and then click the Advanced button and complete the form using the values provided when configuring the User Creation Tool:
    clip_image025
  7. Address Book Web Query: set the load level; if you’re using address book file download, click the Advanced button and set EnableABSDownload to True
  8. Response Group Service: set the load level and click the Advanced button and specify the URIs of any Response Groups have been created; to specify more than one response groups, separate the entries with semicolons
  9. Location Information Services: set the load level to either Enabled or Disabled
  10. Click Save and specify a filename
  11. Click OK to dismiss the prompt
    clip_image026

Voice Scenarios

  1. The Voice Scenarios will not be covered in this post; as such, all load levels in the Voice Scenarios tab are set to disabled:
    clip_image027
  2. Click Save and click OK to dismiss the prompt:
    clip_image026[1]

Web App

Use the Web App tab to configure the web app-related scenarios.

  1. Select the Web App tab and specify the following:
    1. General Web App Settings: click the Additional Settings button, set the ReachTargetServerUrl to the web services VIP of the Front End Pool (or Director Pool, as appropriate) and set AutoDiscoveryEnabled to True
      clip_image028
    2. Application Sharing: Set the load level
    3. Data Collaboration: Set the load level
    4. Instant Messaging: Set the load level
    5. Voice Conferencing: Set the load level
  2. Click Save and click OK to dismiss the prompt:
    clip_image026[2]

Mobility

Use this tab to configure the mobility-related scenarios

  1. Select the Mobility tab and specify the following:
    1. General Mobility Settings: click Additional Settings and set UcwaTargetServerUrl to the web services VIP of the Front End Pool (or Director Pool, as appropriate):
      clip_image029
    2. Presence and P2P Instant Messaging/Audio: set the load level
  2. Click Save and click OK to dismiss the prompt:
    clip_image026[3]

Generate the Batch Files

A batch file is produced to perform the simulation; to generate the files:

  1. Click the Summary tab
  2. Review the configuration and click Generate Files
  3. Specify the path where the scripts will be generated and click OK at the prompt:
    clip_image030
  4. Click OK at the prompt:
    image

 

Run the Simulation

To run the simulation:

  1. Copy the folder with the configuration folders and files inside to the directory that has LyncPerfTool.exe on machine to be used in the simulation:
    clip_image032clip_image033
  2. Navigate to the client folder and double-click the RunClient batch script.
  3. Several command prompts will open and the simulation will begin:
    image

Interpreting the Results

Client Counters

Each instance of the tool has a separate performance counter instance; these performance counters help determine the results of the simulation, with each instance name being set by its process ID. If the machines used for the simulation are overloaded, issues can occur; to help prevent such issues, monitor the CPU and memory usage. If the CPU or memory utilisation is very high, consider adding additional machines to the simulation.

Here’s an screen shot of the Performance Monitor tool on a PC used for the simulation:

clip_image001[3]

For a full list of counters and their description, please click here.

Good luck and I hope you found this post useful!

One thought on “Walkthrough: Stress and Performance Tool

  1. Firslty, thanks for a great article.

    One issue that I’ve crossed, make sure that there are no AD user accounts already exists as defined under “User Name Prefix”, or you’re going to get this error http://tinypic.com/r/dgm5bl/9

    In my lab, I’ve already had users named “testuser1” and “testuser2”, and under “User Name Prefix” I’ve tried with “testuser” that generated this error. As soon as I’ve changed “User Name Prefix” to different name, like “simuser” user provisioning went fine.

    Like

Leave a comment