Performance Management in Windows

Before you start

Objectives: familiarize yourself with the available tools in Windows which can be used to track performance and reliability of your system.

Prerequisites: no prerequisites.

Key terms: performance, monitor, reliability. tool, windows, data, stability, failure, sets, use, chart


What is Performance

Performance is the time it takes for some device to complete a task. For example, we consider the performance of the CPU, hard disk or RAM. Computers running at lower performance levels than they should can cause problems in work environment. Performance issues can lead to reduced productivity and user frustration.

What is Reliability

Reliability shows us if there is some deviation from the expected behavior. Deviations are things like crashes, freezes, etc. If those things happen often, then the system is not reliable.

Tools

Microsoft Windows includes tools which can be used to monitor the performance and reliability, and to determine the cause of issues. In different versions of Windows we will have different tools available. They are typically located in Control Panel. For example, in Windows 7 we can find Performance Information and Tools console.  In this console we can gain access to different performance related tools, like those used to adjust visual effects, power options, etc. Also, here we can access some more advanced tools such as Performance Monitor, Resource Monitor, Disk Defragmenter, and other tools. Here we can also see Windows Experience Index which measures processor, memory, graphics, and hard disks performance. It then gives each component a subscore to identify the current performance level. The Base Score is calculated on the lowest subscore. The Base score can range from 1 to 7.9. Base score from 1 to 2 means that the computer can perform general computing tasks, like Internet browsing. Base score 3 can run Windows Aero. Base score 4 to 5 can run all new features of Windows 7 with full functionality and play high definition content. Base score 6 to 7.9 identifies excellent performance and high end hardware. As hardware speeds and performances improve, the higher score ranges will be enabled. If we change the hardware, we have to recalculate the Base score again.

In older versions of Windows we had the Reliability and Performance Monitoring tool. We use it to analyze and troubleshoot all kinds of issues on our computer. It is actually an MMC snap in. When we open this tool we will be presented with the resource overview which is a quick visual overview system performance. This includes our CPU, disk, network and memory resources. The reliability monitor includes a system stability chart which shows us a timeline of system changes and reliability. The chart is updated daily over the past year. It also creates a stability index number on a 1 to 10 scale. Stability index tells us how stable our computer is. The system stability chart also has system stability reports which contain information about software installs and uninstalls, application failures, hardware failures, Windows failures and other miscellaneous failures.

Performance Console

Using Performance Console we can access the Performance Monitor which enables us to add performance counters in order to measure system activity. Performance Monitor can save its data to a data log, so we can have historical data view of the computers performance. The Performance Monitor is a visual display of real-time performance counters. There are multiple graph views that we can check out. Remember that performance monitor never saves any data. For that we need Data Collector Sets (DCS). Data Collector Sets take sets of parameters and collect data over time. We can set our custom data collector sets, schedule them, and have alerts sent based on preset thresholds. DCS is a replacement for performance logs and alerts which were available in older versions of Windows (pre Windows Vista).

Data Collector Sets are a custom sets of performance counters, event traces, and system configuration data, that is combined to a single logical unit. We can log DCSes at a predefined schedule that can be saved for later analysis. The DCSes can also be used to generate reports and alerts based on specific performance data. We can use the Report Tool to view the DCSes data, or to create new reports from a set of counters that we create by using Data Collector Sets.

The Performance Monitor tool enables us to add counters to monitor the system performance. When adding a counter we need to first specify if we are monitoring the local computer or a remote computer. After choosing the source we can choose the object we want to monitor, such as CPU or memory. After choosing the object, we are presented with a list of counters that provide the performance data for that object. In some cases, and object can have multiple instances, for example with CPU which has multiple cores. In this case we can select only one, or multiple cores. Each counter is added to the graph as a separate line and different color.

In some situations we will want to gather more detailed information id addition to basic performance counters. For example, we might want to collect system information and configuration settings. All this information can be combined into a Data Collector Set which can generate a report and then viewed or saved for later. DCSes can be used to detect performance alerts by adding a performance counter alert. The alert can then be used to trigger actions such as starting a batch file, sending an email, etc. We can also create custom Data Collector Sets. We can use different data collector types in DCS:

  • Performance Counter – enables us to collect performance statistics over some period of time. This is used to analyze performance.
  • Event Trace – enables us to collect information about system events that are also logged in the Event Viewer.
  • Configuration – stores information about registry keys, Windows Management Instruments (WMI) values and the system state.
  • Performance Counter Alert – enables us to configure an alert that triggers an action when specific performance counter exceeds or drops below certain value.

We can add as many data collector types as we need. All this is configured in Performance Monitor tool. In Performance Monitor we can also use reporting. There are many prebuilt system defined reports, but we can also create custom ones.

Users have to have special permissions in order to use performance monitor, so we need to add users to the Performance Monitor group to allow them to run performance monitor without making them an administrator.

Resource Monitor

Resource Monitor tool allows us to view real time information about the resources used by the installed hardware and software. There are five typical tabs available:

  • Overview tab
  • CPU tab
  • Memory tab
  • Disk tab
  • Network tab

Overview tab displays basic usage information for the CPU, memory, disk and network resources. Other tabs display specific information about these resources. Each tab includes the tables that provide detailed information about the resources featured on the tab. The first table on each tab contains the complete list of processes using the resources featured on that tab. For example, the first table on the Memory tab is a list of processes using memory.

Sometimes we need to view the data related to specific process. We can do this by using the filtering feature. We can filter processes by selecting it on the list. With filtered results, only resources used by the selected processes are shown on each tab.

The Resource Monitor will remember the location and display settings of the previous session and will always start in the same location with the same display options. We can save the way in which Resource Monitor displays resources, or we can open the configuration file in which we have saved settings. Filtering is not saved as the part of the configuration settings.

Resource Monitor also enables us to end or suspend processes, and start, stop or restart services. We should use this feature only if we can’t close a program trough normal methods. When ending processes, an open program might be associated with a process, and if it closes immediately, we might lose any unsaved data. If we end a system process we might cause system instability. When it comes to unresponsive applications, they might be waiting for other processes to finish or for system resources to become available. Resource Monitor enables us to view a process wait chain and to end processes that are preventing a program from working. Process that is not responding appears as a red entry in CPU table. To view the process wait chain, we can right-click the process name, and then select the “Analyze Wait Chain” option. If no wait chain information is displayed, we know the process is running normally, and is not waiting the other processes. On the other hand, if it is waiting for another process, a process tree will be displayed and organized by the dependency of the other processes.

In addition to knowing the resource usage of a process, we sometimes want to know what files and folders are being used by certain programs. We can use the Process Explorer to do that. Process explorer is not part of Windows, but we can download it for free from Microsoft web site. It is part of the larger suit of tools called SysInternals. Process Explorer tells us which program has a particular file or directory open and displays information about which handles and DLL process has loaded. We can use the Process Explorer or Resource Monitor to determine which applications are responsible for hard disk activity, including the accessed files and folders. When we open the Process Explorer, id displays a list of currently active processes, as well as an option to view handle and DLLs.

Event Viewer

Another tool which can also be used to troubleshoot performance in Windows is the Event Viewer. We can use it to view system errors and other errors generated by the operating system and other programs. Since Vista and Windows 7, wee can attach a task to an existing error in order to notify us when a particular error occurs.

Examples

We have an article in which we show how to manage performance in different versions of Windows: