[Review]: Microsoft Server Performance Advisor

What’s Server Performance Advisor

The original version of Microsoft Server Performance Advisor (SPA) was released in 2005-2006. It primarily targeted Windows Server 2003, including the core operating system and server roles such as Internet Information Services (IIS) and Active Directory. The goal of the tool is to help you assess your server performance and troubleshoot server performance issues.

SPA provides data reports and recommendations to system administrators about common configuration and performance issues. SPA gathers performance-related data from various sources on servers, for example, performance counters, registry keys, WMI queries, configuration files, and Event Tracing for Windows (ETW). Based on the server performance data that it collects, SPA can provide an in-depth look at the current server performance situation and issue recommendations about what can be improved.

There have been more than one million downloads of the original SPA tool, and it helped many system administrators manage the performance of their servers. It has been a very successful performance troubleshooting tool.

Since the release of the original SPA, there are several major changes in the server performance world. Most notably, the release of Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2, and Windows Server 2008, with new versions of corresponding server roles such as Internet Information Services (IIS) 8.5. Newer versions of Server Performance Advisor extend the capability of the original SPA to the recent server operating systems and server roles.

  • Although SPA 3.1 shares the same design goals and performance analysis paradigm as the original tool, it has been rewritten with the latest technology. It also has the following key improvements:
  • Can perform analysis against servers running Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2, and Windows Server 2008.
  • Supports remote analysis capability, which allows SPA 3.1 to collect and analyze data from a central console, with no need to install code on the servers to be analyzed.
  • Uses a Microsoft SQL Server for data analysis and storage, which enables processing and storing large amount of data.
  • Separates the tool from the Advisor Packs. Performance analysis logic for each server role is released in the form of an advisor pack, which can be released or updated separately from the tool.
  • Provides Advisor Packs that are developed in SQL scripts with an open architecture. Non-Microsoft parties can develop advisor packs or extend the existing advisor packs from Microsoft to cover special needs.
  • Supports new features like side-by-side comparison reports, and trend and historical charts to help you find abnormalities.
  • Provides features such as modify, import, and export thresholds to help you fine tune the reports and notifications and share those tunings with other SPA users.
  • Supports multiple projects, which can be used to group targeted servers.
  • Provides recurring data collection from within the SPA console.
  • Enables custom queries and report generation by using Microsoft SQL Server (for advanced users).
  • Customized Windows PowerShell cmdlets are available to use with SPA
  • Backward compatible for importing and viewing reports from a SPA 3.0 database

The SPA tool is primarily designed for system administrators who manage fewer than 100 servers in various server roles. It can also be used by support engineers to gather performance data and to troubleshoot performance issues for customers.

SPA offers recommendations to help you solve performance problems; however, it is based on assumptions that may not be applicable to your specific server environment. The recommendations that are offered through SPA should be considered suggestions. We expect that SPA users have a good understanding of their system configuration, use cases, and the impact of system tuning on the overall system behavior. System administrators should decide if the SPA recommendations should be applied to their environment.

What’s new in SPA 3.1?

The following features and enhancements were added in SPA 3.1:

  • Active Directory Advisor Pack helps analyze the general performance of the server’s Active Directory Domain Services server role.
  • Support for developers to add lost ETW event notifications alert in the advisor packs and making the alert visible when a report has been generated and events were lost due to high frequency logging on a slow or heavily contended disk.

Target scenarios

The following are the target scenarios for SPA:

  • Server environment

    SPA is designed to easily set up and maintain. It applies to server environments that use 1 to 100 servers. SPA will not scale well if you are trying to manage performance for more than 100 servers. For larger or more sophisticated environments, you should consider using System Center Operations Manager.

  • Performance troubleshooting

    You can use SPA as a performance troubleshooting tool. It provides the ability to collect high-level performance data, it performs a thorough post processing on the data to give you a better understanding of their overall system behavior, and it flags any anomalies. When a performance issue is suspected by a customer, you can use SPA to collect and analyze performance data from the server.

    SPA generates a report that you can view. SPA reports provide a notification list that highlights potential issues, and a data section that includes various performance index, configurations, and settings for the server. You can use this report to identify the specific performance issue and use the recommendations to find solutions for the issue. Reports can be compared with other reports that were generated at a different time or by a different server. Using this side-by-side comparison, you can determine differences between baseline “normal” versus “abnormal” behavior.

    Note: SPA is not designed to be a debugging or metering tool. Furthermore, from the perspective of the servers, it can be considered a read-only tool, and it does not modify the servers’ configurations.
  • Performance index monitoring

    You can use SPA to monitor the performance index of servers. You can choose to run SPA routinely on servers to collect performance data, and then run a trend chart or an historical chart to spot the abnormalities. You can view the report for a particular analysis, find out more information about the performance issue, and then use the recommendations or other report data to resolve the issue.

SPA architecture

The SPA data collection logic is built on a protocol in Windows called Performance Logs and Alerts (PLA). PLA allows programs to collect performance data from local or remote servers, such as performance counters, WMI queries, ETW traces, registry keys, and configuration files. When SPA runs performance analysis on a targeted server, it creates a PLA data-collector set based on the specific SPA Advisor Pack that you selected. The advisor pack contains the data source to be collected and the file share where the logs are to be stored. SPA data collection only stores a single user account; the same user account used by PLA is also used to write the logs.

SPA uses a SQL Server database to store the performance logs that are collected from targeted servers. SPA imports all the performance logs from the file share to the database and then uses the data analysis logic inside each advisor pack to process the data and generate the reports. An advisor pack analyzes the performance data that was collected from target servers and generates the SPA reports. For more info on building an advisor pack, see Server Performance Advisor Pack Development Guide.

The SPA console user interfaces and interactions are built as part of the SPAConsole.exe. You can use the console to create to a database, add or remove advisor packs, manage target servers, run performance analysis, and view performance reports.

The SPA console can run on the following operating systems:

  • Windows 8.1
  • Windows 8
  • Windows 7
  • Windows Server 2012 R2
  • Windows Server 2012
  • Windows Server 2008 R2
  • Windows Server 2008

In a typical business application, there are three tiers: the presentation layer, the business logic layer, and the storage layer. SPA is designed as a two tier product—the console and the database. The console serves as a presentation layer with certain process-related logic included, and the database serves as the storage layer and the business logic layer. The console captures user input, and it controls the steps for data collection, data processing, and report generation. SPA does not depend on Windows system services.

The following diagram shows the high-level architecture of the SPA system. The process is:

  1. From the SPA console, you run performance analysis on the specified servers.
  2. When the performance data is collected, PLA on the targeted servers writes the logs back to the file share that is specified by the data collector set.
  3. After the data collection is complete on a target computer, the SPA console imports the logs to the SQL Server database.
  4. The console invokes the data processing logic of specific advisor pack.
  5. The advisor pack processes the data and calls SPA APIs to insert records into the system report tables that are defined by the SPA framework.
  6. You can use the report viewer inside the console to view the reports that generated. To help you troubleshoot performance issues, SPA provides three types of reports: single reports, side-by-side reports, and trend or historical charts.


The SPA console can be installed on Windows 8.1, Windows 8, Windows 7, Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2, and Windows Server 2008. Running SPA on earlier versions of the Windows Server operating system is not supported. SPA runs on x86 or x64, but it does not support the IA64 or ARM architectures.

SPA is built on Windows Presentation Foundation (WPF) 2.0, which is part of the Microsoft .NET Framework 4, so .NET Framework 4 is required.

You also need to install SQL Server 2008 R2 Express on the same computer where SPA is installed. SQL Server 2008 R2 Express is a free database engine that is released by Microsoft. You can download Microsoft SQL Server 2008 R2 Express from the Microsoft Download Center. While we suggest SQL Server 2008 R2 Express, newer versions of SQL Server may also be compatible with SPA.

Note: SPA does not include SQL Server or the .NET Framework as part of the SPA installation package. After installing Microsoft SQL Server 2008 R2 and .NET Framework 4.0, we recommend that you run Windows Update before installing SPA.

Because users can create and manage databases with SPA, the user account that is used to run SPA should have the same administrator privileges as SQL Server.

More on Teimouri.Net

[Review]: Windows Admin Center (Project Honolulu)

Performance Tuning Guidelines for Windows Server 2012 R2

Davoud Teimouri

Davoud Teimouri is as a professional blogger, vExpert 2015/2016/2017/2018/2019, VCA, MCITP. This blog is started with simple posts and now, it has large following readers.

1 Response

  1. 11/07/2019

    […] [Review]: Microsoft Server Performance Advisor […]

Leave a Reply

Your email address will not be published. Required fields are marked *

Subscribe to our newsletter and join other subscribers

Holler Box