Solving performance problems

Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2

Solving performance problems

Analysis of your monitoring data can reveal problems such as excessive demand on certain resources resulting in bottlenecks. This section discusses common causes for bottlenecks and a recommended strategy for tuning and testing.

Causes of bottlenecks

Demand may become extreme enough to cause resource bottlenecks for the following reasons:

  • Resources are insufficient and additional or upgraded components are required.

  • Resources are not sharing workloads evenly and need to be balanced.

  • A resource is malfunctioning and needs to be replaced.

  • A program is monopolizing a particular resource; this might require substituting another program, having a developer rewrite the program, adding or upgrading resources, or running the program during periods of low demand.

  • A resource is incorrectly configured and configuration settings need to be changed.

Strategy for tuning and testing

Insufficient memory is the most common cause of serious performance problems in computer systems. If you suspect other problems, check memory counters to rule out a memory shortage. Poor response time on a workstation is most likely to result from memory and processor problems; servers are more susceptible to disk and network problems.

Before you start tuning, consider the following recommendations:

  • Make one change at a time. In some cases, a problem that appears to relate to a single component might be the result of bottlenecks involving multiple components. For this reason, it is important to address problems individually.

    Making multiple changes simultaneously may make it impossible to assess the impact of each individual change.

  • Repeat monitoring after every change. This is important for understanding the effect of the change and to determine whether additional changes are required. Proceed methodically, making one change to the identified resource at a time and then testing the effects of the changes on performance. Because tuning changes can affect other resources, it is important to keep records of the changes you make and to review after you make a change.

  • In addition to monitoring, review event logs, because some performance problems generate output you can display in Event Viewer. For more information about using Event Viewer, see Event Viewer.

  • To see whether network components are playing a part in performance problems, compare the performance of programs that run over the network with locally run programs.

Tuning and upgrade tips by component

This section lists tuning tips for resources you are monitoring:


  • Increase physical memory above the minimum required.

  • Create multiple paging files when you use multiple disks.

  • Determine the correct size for the paging files. The recommended initial size of the paging file is between 1 and 1.5 times the amount of RAM available, based on your system; the size needed depends on the workload.

  • Ensure that memory settings are properly configured.

  • Run memory-intensive programs on your highest performing computers or when system workload is light.


  • Upgrade to a higher speed disk, or add disks. If possible, upgrade the disk controller and the bus.

  • On servers, use Disk Management to create striped volumes on multiple physical disks. This solution increases throughput because I/O commands can be issued concurrently.

  • Distribute programs among servers. Distributed File System (DFS) can be used to balance workload.

  • Isolate tasks that heavily utilize disk I/O on separate physical disks or disk controllers.

  • Use Disk Defragmenter to consolidate files optimizing data access and disk space.

  • If you want to improve the efficiency of disk access, consider installing the latest driver software for your host adapters or motherboard drivers. Contact your adapter or motherboard manufacturer for information.


  • Add a processor (especially for multithreaded programs). Upgrade to a faster processor, or one with a larger cache.

  • On multiprocessor computers, manage the processor affinity with respect to process threads and interrupts.


  • Configure your network so that systems shared by the same group of people are on the same subnet.

  • Unbind infrequently used network adapters. See Modify the protocol bindings order for more information.

  • If you are using more than one protocol, you can set the order in which the workstation and NetBIOS software bind to each protocol. See Network and Dial-up Connections Help for more information. Some reasons for changing the list order are as follows:

    • If the protocol you use most frequently is first in the binding list, average connection time decreases.

    • Some protocols are faster than others for certain network topologies. If you are optimizing a client computer, putting the faster protocol first in the bindings list improves performance. Because the server accepts incoming connections using the protocol chosen by the client computer, there is no reason to reorder server computer bindings.

  • Use multiple network adapters. The Windows Server 2003 family of operating systems supports multiple adapters for a given protocol and multiple protocols for a given adapter. Although this configuration can create distinct networks that cannot communicate with one another, it is a way to increase file sharing throughput.

For information on server reliability, availability, and performance and tuning features in the Windows Server 2003 family, see Features for Management, Security, and Best Performance.

For detailed guidance on solving performance problems, see "Part One: Operating System Performance" in the System Performance and Troubleshooting Guide, available at the Microsoft Windows Resource Kits Web site.