SolutionBase: Discover what's slowing down Windows Server 2003 with Server Performance Advisor

With scarce budgetary resources, you probably can't afford to throw hardware at performance problems. Here's how to use Microsoft's Server Performance Advisor to discover what's slowing down your Windows Server 2003.

In this day and age, the phrase "A new server just isn't in this year's budget" has become all too familiar. If your server is running slowly and you don't have the budget to replace it, all is not lost. Microsoft has recently released a new tool called Server Performance Advisor. It's designed to make light work of the otherwise complex task of figuring out where your server's resources are being used. Here's how to run Server Performance Advisor on an overloaded server and how to use the information derived to help boost the server's performance.

Acquiring Server Performance Advisor

Server Performance Advisor is a free tool available for download from Microsoftï¿?s Web site. The download consists of a 4-MB MSI file. Note that Server Performance Advisor runs only under Windows Server 2003. It cannot be used to analyze Windows 2000 Servers.

To install Server Performance Advisor, download the spa.msi file to an empty folder on your server. When the download completes, double-click the spa.msi file to launch Windows Installer. When Windows Installer first opens, you'll see a warning message. Although the spa.msi file is only 4 MB, it requires a minimum of 150 MB of disk space to operate.

Click Next, and you'll see the end-user license agreement. Accept the agreement, click Next, enter the desired path at the next prompt, and click Next again. You'll now be asked to enter a folder for storing the log files generated by the application. Enter this path and click Next. You must now supply the name of the folder that will store Server Performance Advisor's reports. Make your selection and click Next twice to begin the installation process. When the file copy process completes, click Finish.

Running Server Performance Advisor

Select the Server Performance Advisor command from the All Programs menu. When it initially launches, you'll see a surprisingly inviting screen (Figure A) that offers you the option of taking a quick tour, adding/repairing data collector groups, or getting more information.

Figure A

This is the main Server Performance Advisor screen.

In its most basic form, Server Performance Advisor is simple, but a bit time-consuming, to use. It offers several data collectors, each of which looks at a different aspect of the system's performance. To use the software, you simply run the data collectors and allow the results to be logged. You can then generate a report based on the log files. The report will give you specific information on your server's problem areas.

Now that I've given you a brief overview of how Server Performance Advisor works, let's apply it in a real-life situation. I recommend starting out by just giving it a trial run on your server. This accomplishes three things: It gives you a chance to gain familiarity with the software before you jump into the more advanced features; it allows you to quickly check for existing performance issues; and it lets you create a baseline report you can compare future reports against. Establishing a baseline helps you spot performance-related trends over time.

Now decide which data collector group you want to use for the initial scan. I recommend the System Overview data collector group, but other groups, such as IIS, Print Spooler, File, and Active Directory, are available. If you look at Figure A, you'll notice a row of icons just below the menu bar. If you click on the last icon on the right (the down arrow), you'll be able to select a data collector group. Notice that the window's title bar also reflects which data collector group is chosen.

Now click the Play icon (the green triangle) to launch the data collector you've chosen. The individual data collectors within the group will continuously sample performance data for 100 seconds. When that time expires, Server Performance Advisor will generate a report based on the collected data. It takes quite a while to build the report, so now is a good time to go grab a cold drink.

When the report compilation process finally completes, a new icon will appear on the upper-left portion of the screen. The icon looks like a piece of paper with a stopwatch on it. If you click this icon, the advisor will go into report mode, as shown in Figure B.

Figure B

This is what report mode looks like.

What you see in Figure B isnï¿?t the actual report; instead, this is a report hierarchy. The 5 percent that you see in the CPU column is an average based on all collected reports. At the moment, there's only one report that has been collected. To view this report, simply expand the hierarchy, as shown in Figure C, and then click on the report.

Figure C

Reports are stored in a hierarchical fashion.

When you click on the report, you'll see something similar to the report shown in Figure D. There are three main portions to this screen. The header at the top displays the name of the server that the data was collected from, along with the collection date and time. On the lower-right is a brief summary of the machineï¿?s performance. The lower-left portion of the screen contains links to more specific information found further down in the report.

Figure D

A report displays the date and time of the data collection, a summary of the systemï¿?s performance, and links to more specific information.

To be perfectly frank, you'll never use most of the information in the report, unless you're trying to troubleshoot some type of problem. Something that's really worth looking at, however, is the reportï¿?s Performance Advice section. This section includes warnings pertaining to aspects of your system that arenï¿?t performing up to par. It also gives you a good summary of various aspects of your systemï¿?s health.

Figure E shows that there was one performance-related warning for my system. My processor queue length was at 19. The advisor suggests getting a beefier processor or spreading the workload across multiple processors. There's even a Help icon you can click for more detailed information about the problem.

Figure E

Server Performance Advisor produced one warning message on my test system.

The System Health section is also handy. As you can see in Figure E, the status is given in a manner similar to a weather forecast. If the status is sunny, then all is right with the world. If it looks like rain, you might want to take a closer look at a particular aspect of your systemï¿?s performance. If you look back at Figure C, you'll notice that the advisor gives you an overall status before you even open a report.

Scheduling collections

As I said, Server Performance Advisor is handy for establishing baselines and spotting trends over a long term. One way you can spot trends is to collect data on a frequent basis and watch the server's average performance. To make the data collection process easier, the advisor allows you to schedule data collections. You can set the date, time, and duration of each collection operation.

Before I show you how to schedule a collection, I want to talk about the collection duration. It's normal to have spikes of activity during routine operations. If you look back at Figure E, you'll see that 80 percent of my server's memory was consumed. So was this normal consumption or was it related to a spike in activity? The answer is that we really can't tell from the report.

According to Microsoft, if you're trying to isolate spikes in activity, it's best to run several short collection durations rather than a single long one. For example, if you ran a collection operation for 30 minutes, the advisor would give you the server's average performance over that time span. On the other hand, if you ran six different collection operations back-to-back at five minutes each, you'd have six different reports, each showing you average activity over a five-minute span. This would make it much easier to spot spikes in activity.

Of course, there's nothing wrong with looking at a server's average performance. In fact, my own servers are set to perform a collection once a day so that I can gauge performance trends over long-term periods.

To schedule a data collection, you'll use a screen called the Scope Tree. To access this screen, select the Scope Tree command from the View menu. You'll then see a tree view of all the various data collector groups. To set a collection schedule, simply expand the Data Collectors And Reports section and then select the data collector group that you want to set the schedule for. Next, click the Change Schedule link in the right-hand pane, as shown in Figure F.

Figure F

The Scope Tree allows you to customize the data collection process.

You'll then see a screen that allows you to set the date, time, and duration for the collector group to run. It's important that you schedule the different data collectors to run at different times so they don't overlap. Running multiple data collectors simultaneously will greatly skew the results of the tests. For instance, if the System Overview data collector is set to run at 10 A.M. for a duration of 100 seconds, you probably don't want to set the IIS data collector to run until 10:10 A.M. Sure, the System Overview collection process will be complete by 10:02 A.M., but you need to leave time for the logs to be compiled.

Collection rules

Collection rules basically determine how the report interprets the results of a test. As an illustration of how collection rules work, let's look at the grading scale used in school. In the high school I attended, a score from 93 to 100 was an A, and a score from 85 to 92 was a B. When I went to college, however, 90 to 100 was an A, and 80 to 89 was a B. This means that if I scored 92 on a test in high school, I would earn a B; but if I scored 92 on the same test in college, I'd earn an A.

So what does this have to do with Server Performance Advisor? Well, as you may recall, one of the earlier reports issued a warning message because I had 19 items stacked up in the CPU queue. However, my CPU response time was pretty good. Normally, it's bad to have more than about three items stacked up in the CPU queue, but a higher number of items doesn't really cause any problems as long as those items are being serviced quickly. There are about a dozen different applications running on my server, and having a lot of items in the CPU queue might be considered problematic for some systems; but for my server, this is normal behavior.

A test score of 92 can be interpreted as either an A or a B, depending on the grading scale used. Likewise, a CPU queue length of 19 can be considered a problem or not a problem, depending on the threshold value. This is where rules come in. Rules allow you to fine-tune threshold values for the various testing criteria so that you can make the reporting engine aware of what values are considered normal for your server. This type of fine-tuning reduces false warnings and makes the real problems stand out more.

To access the rules, select the Rules command from the Edit menu. A screen similar to the one shown in Figure G will appear. A check box lets you enable or disable each rule.

Figure G

The reports are built by running collected data through a set of rules.

If you want to modify a rule's threshold value, scroll through the list of rules until you find the one you need to modify. Sometimes rules are located in unexpected places, so you may have to hunt around a bit. Once you find the rule and expand it, you'll be given the chance to modify the threshold value, as shown in Figure H. Although you can adjust the threshold values for most rules, some are set in stone.

Figure H

You can adjust the threshold values for various rules.

That's all there is to it

Server Performance Advisor can help you spot performance problems on Windows Server 2003. Once you download, install, and start to use the advisor, you'll get an idea about what's slowing down your server and how to go about fixing those problems.