Here's what you can do to tune NT Server's
network I/O, disk I/O, and CPU utilization
Now that you've made a strategic decision on a server that supports your
requirements today and has room to grow tomorrow, you want it to run at its very
best. In my June article, "The Beginner's Guide to Optimizing Windows NT
Server, Part 1," I focused on optimizing Windows NT Server's memory
subsystem. This month, I'll examine tuning NT Server's other subsystems, such as
the network I/O, disk I/O, and CPU. Let's review some basic tuning concepts.
Basic Tuning Strategy
To optimize NT Server's performance, develop baselines for each subsystem.
Monitor the system closely to identify bottlenecks and plan for future capacity
requirements. Finding the cause of a bottleneck can be difficult because all the
server's major resources--CPU, memory, disk I/O, network I/O, and
applications--are interrelated. Solving one problem can cause another. Try one
change at a time and compare the results to see whether the change was helpful.
Always test your new configuration, and then test it again to be sure changes
haven't adversely affected your server. I will discuss only NT Server's built-in
monitoring tools: Performance Monitor (Perfmon), Network Monitor, and Task
Manager.
Tuning the Hardware
Hardware tuning is as important for disk optimization as it is for memory
optimization. Set your disk adapter's BIOS settings for maximum performance and
stability. Be sure you have turned on write-back cache and set the SCSI channel
to negotiate for the fastest setting the disks can handle. Many drives support
the Ultra Fast/Wide SCSI (40MB per second) standard. Many disk adapters sold in
the last year support Ultra Fast/Wide SCSI but were set to the slower Fast/Wide
settings of 20MBps, the speed that the typical disk drive supported. Ask your
hardware manufacturer for the most recent BIOS release level and optimum BIOS
settings for disk adapter/disk drive combination.
For network I/O connections, set the adapter appropriately for your
network. Many of today's adapters support multiple network speeds, including
autosense mode. In autosense mode, the network adapter tries to automatically
determine your network's speed and then sets itself to operate at that speed. I
prefer to set the adapter to the exact speed of the network devices the server
will be interacting with to ensure the best performance possible. Not all
servers and network devices want to play together nicely when you've set them to
run at peak throughput settings. Be sure that you are using the most recent
device drivers for disk and network adapters. You will often see improved
throughput and efficiency just by using the most recent release. Most hardware
manufacturers have this information on their Web sites. Microsoft keeps similar
information on its Web site about NT Server patches or service packs. These
patches attempt to fix known problems and occasionally include performance
enhancements. Always test new drivers or patches to guarantee that they operate
as advertised.
Network I/O
NT Server's network I/O subsystem becomes a bottleneck when demand for
network resources outpaces what NT Server can provide. Clients and other server
systems must be able to connect to NT Server with sufficient bandwidth and low
enough latency to provide adequate response times to support customers'
requirements. Therefore, you need to understand what type of workload your
client systems generate and which key network architecture components are in
use. To determine where your bottlenecks are and how to fix them, you must
understand the type of network protocol (e.g., Ethernet, NetBEUI) and physical
network (e.g., Ethernet, Fiber Distributed Data Interface--FDDI) you're
using.
Perfmon. The two primary tools for sleuthing out network
I/O bottlenecks in NT Server are Perfmon and Network Monitor. You can use
Perfmon in logging mode over a period of time to develop a baseline and to
analyze the server's resources. Start Perfmon from Start, Programs,
Administrative Tools. To enter logging mode, select View, Log, Edit, Add To Log.
The key object to observe is Network Interface. (To access the Network Interface
object, first install the Simple Network Management Protocol--SNMP--from Control
Panel, Network, Services; then reboot.) Select the Network Interface object,
click Add, and then Done. To begin the logging session, select Options, Log.
Enter the name of your log file, specify a sampling interval, and then click
Start Log. If you want to look at data the system is currently monitoring, you
need to start a second copy of Perfmon and select Current Activity. (Perfmon
stops logging when you view an active log file.)
To access the data that Perfmon collects in the log file, you need to stop
logging and look at the log file. To stop collecting, select Options, Log, Stop
Log. To read the log file, click Options, Data From, Log File and enter the name
of the log file. From View, select Chart (or Report or Alert). Now choose Edit
and Add To Chart and select the counters you want to observe. (For more
information about using Perfmon for logging, see Part 1 of this article in the
June issue and Michael D. Reilly, "The Windows NT Performance Monitor,"
March 1997.)
Perfmon collects data for each separate physical network adapter instance.
Traditionally, the Network Interface object has had two notable counters:
- Output Queue Length, which measures the length of the output packet queue
- Bytes Total/sec, which measures all network traffic that moves through the
particular network adapter and includes all overhead incurred by the protocol in
use (TCP/IP, NetBEUI, etc.) and by the physical protocol (Ethernet, FDDI, etc.)
The first step in detecting a network bottleneck is looking for symptoms.
Are users complaining about slow downloads from your server? Are applications
that involve the network and the particular server you are investigating running
sluggishly? In NT 3.51 the Output Queue Length counter is a good indicator. A
value of 1 or 2 in the Output Queue Length counter is acceptable. However, if
this measurement begins increasing (particularly above a value of 3 or 4), your
network I/O adapter is waiting on the network and can't keep up with the
server's requests to move data onto the network. If the length of the output
packet queue is frequently higher than baseline, a bottleneck might be
occurring. In NT 4.0, the help information states that because the Network
Driver Interface Specification (NDIS) queues the requests, the counter's value
is always 0. However, research and testing show that this statement is false.
The Output Queue Length counter provides useful information in NT 4.0.