IT managers have a keen appreciation of the fact that their professional Holy Grail is to keep the systems happily humming along at all times.

Measuring systems’ performance on a network is one way for a company to protect itself from unacceptable levels of downtime, should any critical components of that network go belly-up. Monitoring performance creates early warning systems for an administrator; therefore its implementation should be viewed as an integral part of network administrative duties.

Windows 2000 ships with advanced performance tools to help you measure and report what your systems are doing. These tools contain numerous types of counters that measure different aspects of performance. I’ll examine which areas of performance are worth your attention and how to set up basic benchmark performance counters in Windows 2000 to help you measure the most crucial elements of a system’s performance.

What do you monitor?
On a typical server, there are four basic counters that are critical to the smooth running of that machine. In no particular order, they are:

  • Memory: Pages/sec.
  • Processor: \% Processor Time
  • Physical disk: \% Disk Time
  • Network: Bytes Total/Sec

Obviously, if you’re going to monitor performance, you need to be able to compare any abnormalities with normality. This is why you need to use these four counters to establish a performance benchmark on every system.

Remember that because all computers do different jobs and many contain different hardware components, benchmarks will vary from system to system. Also, if you change a system, you should recreate the benchmark data to reflect those changes.

To establish a benchmark, it is worth monitoring the four basic counters over a period of time representative of typical daily usage. The period should include the busiest and slowest times of day. To start, you may want to set a benchmark over 24 or 48 hours. Make sure you monitor Server A’s counters from another machine, because if you monitor Server A from Server A, you’ll compromise its performance and set a false benchmark. Note also that changes in average values can indicate bottlenecks in a system. Now, what do these four basic counters measure?

Bytes Total/sec is the rate at which bytes are sent and received on the network interface. This will vary depending on the speed of the network adapter and congestion on the network.

% Processor Time is the percentage of the sample interval the CPU spends doing useful work. This counter was designed as a primary indicator of processor activity. It displays the average percentage of busy time observed during the sample interval.

Physical disk
% Disk Time is the percentage of elapsed time that the selected disk drive is busy servicing read or write requests. The higher the average is, the slower the performance will be.

Pages/sec is the number of pages read from or written to disk to resolve page faults. A page fault is when a process needs to retrieve code from the physical disk because it is not available in memory. This counter was designed as a primary indicator of the kinds of faults that cause system delays. The performance of any system is affected by the relationship between the amount of physical memory and the size of the paging file, which is where memory swaps happen.

As a rule of thumb, the page file size should be set to at least twice the amount of memory. So if you have 512 MB RAM in a system, the page file size (minimum and maximum) should be set at 1024 MB. This will allow the entire contents of memory to be written to a “core dump” if a crash occurs. The core dump can then be used to debug the cause of the crash. By setting the min/max values as the same, you avoid making the server work more by having to recalculate the page file size. Equally, if you can stripe a page file across physical disks, this will help performance.

How do I set up the counters?
When setting up the counters, remember to use a Windows 2000 machine other than the one you want to monitor. To open the Windows 2000 performance console, go to Start>Run and type in perfmon and then hit Enter. You’ll then see the screen in Figure A.

Figure A

To start monitoring the four system counters discussed above, click the + sign on the toolbar. This will bring up the screen in Figure B.

Figure B

Make sure that Select Counters From Computer is selected. In the field immediately below this button, type in the name of the machine you want to monitor, preceded by the two UNC backslashes. The console will connect to the “subject” machine and the Performance Object field will be modified to include only the counters relevant to that machine.

Next, select the Performance Object, and, in the bottom-left pane, you will see all the counters you can monitor for this object. Select %Processor Time. Notice that the right-hand pane lists all the instances of the object, so if you’re monitoring a multiprocessor server, you can monitor individual processor instances or all instances. Select All Instances and click Add, followed by Close. You will then see something similar to the screen in Figure C.

Figure C

You can see that the average for this counter was running at 10.93 percent. For %Processor Time, you want to keep the value as low as possible, and the average should certainly not run over 70 to 80 percent. If it does, consider upgrading the processor. Repeat this process for the remaining three counters. This will give you a screen similar to the one in Figure D.

Figure D

If your graph looks very flat, you can change the Y-axis scale by right-clicking it and selecting Properties. Go to the Graph tab and modify the scale. As you can see in Figure D, I decreased the Maximum value from 100 to 3. That’s basically it. You are now monitoring the counters.

The Windows 2000 Performance Console is extremely versatile and can offer you much more than the performance counters that I’ve detailed here. To find out more about this valuable tool, such as setting up performance alerts, you should consult the Windows 2000 Server Resource Kit or other mainstream Windows 2000 publications.