
Some of the main topics in this chapter are
The performance of your network server is also based on the underlying hardware. The choices you make when choosing your hardware will determine the upper performance limit. The engine of a network server is the central processing unit (CPU). An Intel 80386, for example, will be slower than an Intel 80486. The Intel 80486 is slower than an Intel Pentium, and an Intel Pentium is slower than an Intel Pentium Pro. There is more to performance, however, than just the processor. Other considerations are the I/O expansion bus, the memory subsystem, and the disk subsystem. These are some of the topics you'll learn about in this chapter to give you a fuller understanding of how to choose a computer to use for your network server.
Windows NT directly supports a variety of systems and peripherals through drivers included with Windows NT. Unfortunately, Windows NT's relatively low market share compared to Windows 3.x and Windows 95 means that most hardware vendors concentrate development efforts first on their Windows 3.x and Windows 95 support and then follow with Windows NT support. Smaller manufacturers often don't have the resources to develop multiple operating systems. As a result, some hardware supported on these other operating systems is not supported--or offers limited functionality--under Windows NT.
For example, one of the most popular mouse manufacturers, Logitech, provides full support for Windows 3.x and Windows 95--including expanded drivers to support middle-button function assignment. A Logitech mouse works fine under Windows NT's built-in driver, but it lacks the capability to use the middle button or to reprogram left- and right-button functions. Another example of limited compatibility is the Media Vision ProAudio Spectrum Pro, which enjoys full support under Windows 3.x and Windows 95 but lacks Sound Blaster compatibility under Windows NT.
Because hardware compatibility is a larger issue with Windows NT than with Windows 95, avoid potential problems by ensuring that your hardware is compatible to the degree you require under Windows NT before starting installation. This is particularly important if you're buying a new system for Windows NT.
To help you check your system's compatibility, Microsoft includes a hardware compatibility list (HCL) with Windows NT. The HCL lists the hardware that has been tested and certified as compatible with Windows NT and includes footnotes for specific items, detailing special driver requirements or limitations to compatibility.
If a hardware item isn't listed in the HCL, it still might be compatible. Some devices emulate more common devices. For example, many sound cards emulate Sound Blaster cards, which are supported by Windows NT. If your hardware isn't listed, check with the manufacturer to determine whether the hardware is supported directly by Windows NT or the manufacturer offers a Windows NT driver for the device.
If you have not yet purchased Windows NT and want to access the HCL, you can do so through Microsoft's Internet sites:
http://www.microsoft.com/ntserver/hcl/hclintro.htm
http://www.microsoft.com/BackOffice/ntserver/hcl
ftp://ftp.microsoft.com/bussys/winnt/winnt-docs/hcl
If you're installing Windows NT on a DEC Alpha system, you need to verify that the correct firmware revision is installed on your system. (Firmware refers to the system configuration sofware installed in a computer's ROM.) If it isn't, you need to upgrade the system's firmware accordingly.
A README.TXT file is available that explains the firmware revisions needed for specific DEC Alpha systems. You can find the README.TXT file on CompuServe in Library 4 (Hardware Support) of the DEC4WNT forum (GO DEC4WNT). Or, you can retrieve the file via ftp from the /private/fwaxp directory at ftp://gatekeeper.dec.com. When you determine the correct firmware version for your system, you can retrieve the firmware and driver updates from the DEC Web site at http://www.windowsnt.digital.com.
TIP: For technical support or answers to questions regarding firmware updates, you can contact DEC technical support at (800) 354-9000 in the U.S. Outside the U.S., you can contact the local DEC representative.
Everyone wants his or her network server to perform well and be managed easily. Using Windows NT Server as your network operation system is a good start. Windows NT Server was designed to make intelligent configuration decisions that enhance performance. This does not mean that all you need to do is choose a computer, install Windows NT Server, and expect to have a super-server. To optimize Windows NT Server, you need to:
The following sections explore each of these items.
Windows NT Server has the capability to execute on several different processor platforms. These platforms include the Intel processor line--which are CISC (Complex Instruction Set Computer) processors --and several different RISC (Reduced Instruction Set Computer) processors, including the DEC Alpha processor.
NOTE: You can currently use the MIPS or PowerPC RISC processor. However, neither PowerPC or MIPS will be receiving any future development attention from Microsoft, so even the current versions of the software running on these processors might not receive service patches.
The primary difference between a RISC processor and the Intel processor, aside from the purchase price, is twofold. First, the Intel processor is the only CPU that can execute OS/2 16-bit character-mode applications or be used to boot MS-DOS in a dual-boot configuration. If this is not a real issue for you, then ignore these options and just consider the second difference--pure performance! Depending on the RISC processor line you choose and the clock speed of the processor, one of these platforms might perform better for you than the Intel processors.
It is difficult to recommend a RISC processor over the Intel processor line, because the Intel processor line keeps improving. Furthermore, the distinction between CISC and RISC fades with each new Intel processor. Intel is even using many RISC constructs in their new processors (such as the Pentium Pro processor) to improve the overall performance.
TIP: With each new generation of Intel processors upping the ante in sheer performance, it might be difficult to decide which one is best for your performance needs. I recommend that you use at least a Pentium 133 MHz processor for your server. If you can afford it, use a Pentium MMX processor or, better yet, a Pentium Pro 200 MHz processor.
The only processor alternative to the Intel processor is the DEC Alpha processor. This processor is available with clock speeds up to 500 MHz. A server using this processor makes a very fast application (SQL Server, for example) server. It's expected that DEC will continue its partnership with Microsoft and continue to provide development support for Windows NT.
When you consider that the primary job of a server is to share resources, such as file and printer resources, then the speed of the processor is not always the most relevant issue. Processor performance is a concern because Windows NT is more processor-intensive than other network operating systems; however, this is not the most relevant issue. Instead you should be more concerned with the I/O expansion bus, the memory subsystem, and the peripherals you choose because these often have the most impact on overall network performance. One of the best insurance moves you can make, however, is to purchase a computer system that supports more than one processor.
Windows NT Server supports the symmetric multiprocessing model (SMP). This means that you can use more than one processor--up to four with an off-the-shelf version of Windows NT Server and up to 32 with certain OEM configurations--on your computer simultaneously. Adding an additional processor can make a significant difference in network throughput or an application server's performance. This performance increase, however, is not quite twofold for a dual processor system. And as you increase the number of processors, this performance ratio decreases. Four processors currently give the greatest multiprocessor benefit on Intel Pentium platforms. This is because most motherboard manufacturers use the Intel multiprocessor support chipset, which only supports four processors; beyond that, it depends on the proprietary design of the system motherboard.
TIP: There is a key in the Registry that specifies how many processors are supported on a particular multiprocessor Hardware Abstraction Layer (HAL). If you look in HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\Control\SessionManager, you will find the value RegisteredProcessors. This entry normally has a maximum setting of 4 for Windows NT Server or 2 for Windows NT Workstation. You can increase this value to support additional processors and thereby increase performance on some computer systems. This only works if your HAL can support the additional processors. The performance increase is also based on the architecture of the particular platform. Some platforms perform better than others, even if they have the same number of processors.
The problem with multiple processors is that the Windows NT design model requires that all processors have equal access to all system resources. That is what the SMP model defines. This means that the overhead involved in synchronizing access to hardware resources (such as an I/O port on a SCSI controller) increases as you add processors. Cache management can also become a problem because each processor generally has its own secondary cache, and as a thread is moved from one processor to another, the cache must be flushed to ensure the integrity of system memory. Windows NT does try to prevent this performance penalty from occurring by running the thread on the same processor. Unfortunately, this is not always possible, based on the executing software and scheduled thread execution times. Eventually, adding processors no longer increases performance (or at best only increases it a small fraction).
After you have decided which processor platform to use on your server, you need to choose an I/O expansion bus. As with processor platforms, you can choose from several I/O buses, each with specific capabilities. The primary concern here is which bus is suited for a particular purpose--for example, how well the bus performs for a video adapter, a network adapter, or a disk controller (the most common performance-orientated peripherals). These adapters must function at their peak. Adapters that are not performance-intensive include a sound card, an internal modem, a parallel port adapter, a mouse adapter, or even a joystick adapter.
TIP: Most Intel-based computers have an advanced BIOS setup option to increase the speed at which the I/O expansion bus operates. Increasing this bus speed above the default of 8 MHz can improve the performance of the adapter. Many of today's computer peripherals are rated for 12.5 MHz operation, although some will operate at higher speeds.
CAUTION: If you do decide to increase the speed at which your I/O expansion bus operates, be sure to perform a reliability test before placing the unit in service. Not all adapters will operate reliably above 8 MHz. When you perform this test, at least test for full disk controller, network adapter, video adapter, and communication port functionality. Otherwise, you are liable to place your modified server in operation, only to have it fail on you when you least expect it.
When you decide to find a computer system to use for your server, you can choose from many different expansion buses:
ISA (Industry Standard Architecture) This is the original expansion bus introduced on the IBM (XT) Personal Computer (PC). The original PC used an 8-bit I/O bus, which the IBM AT computer later extended to 16-bit. Although the ISA standard includes both the 8- and 16-bit I/O buses, most of today's peripherals are 16-bit peripherals and offer excellent value. Where performance is not a concern, choose adapters that use the ISA bus when making your purchasing plans. The ISA bus, for example, should be used for your 8-bit expansion cards and 16-bit expansion cards. Although you can use an 8-bit adapter in a 16-bit slot, it is better to place it in an 8-bit slot to provide for future expansion. The ISA bus is a good choice for sound cards, internal modems, and other non-performance peripherals. However, try to avoid using the ISA expansion bus for your network, disk controller, and video cards unless you have no other option.
NOTE: The ISA expansion bus is only capable of directly accessing the first 16M of system RAM. If you use a bus master controller--such as a SCSI, or EIDE, disk controller--and if your system has more than 16M of RAM, all disk access must be double buffered. The data will first have to be copied to a buffer in the 16M of your system RAM and then copied above this memory range to the application's data buffer. This will decrease overall system performance. Although this might not be a significant performance hit on most systems, on others it is very noticeable, depending on the system architecture.
EISA (Enhanced Industry Standard Architecture) This expansion bus is an extension of the ISA bus. It stretches the I/O bus from 16 bits to a full 32 bits and offers software configuration of peripherals through a configuration diskette. The EISA expansion slot can use ISA adapters as well as ISA adapters because it uses a layered connection mechanism. The ISA adapter only fits halfway down this connection, enabling a connection to all the standard ISA expansion pins. An EISA adapter, on the other hand, fits all the way down and can reach the additional I/O and bus connectors. This expansion bus is a good choice for network adapters, video adapters, and disk controllers. It performs well in most conditions and can have several bus master adapters installed concurrently.
NOTE: A bus master adapter has its own built-in processor. The adapter usually has its own Direct Memory Access (DMA) controller, as well. A bus master adapter can use its own processor and DMA controller to pass data to/from the adapter and to/from system memory, enabling the processor on the motherboard to continue processing data requests instead of spending time passing data to/from system memory from/to the adapter. You can think of bus mastering as a poor man's multiprocessor platform.
MCA (Microchannel Architecture) IBM introduced this I/O expansion bus as a replacement to the ISA expansion bus. MCA was designed for IBM's new PS/2 line of computers. Although it offered increased performance compared to the ISA bus, it was completely incompatible with the ISA bus. This incompatibility led to increased adapter cost and a limited number of available peripherals for the consumer to purchase. Avoid this bus for any new purchases.
VLB (VESA Local Bus) To increase the performance of video adapters, a method was created to access an adapter at memory bus speeds by tying it directly to the system memory bus. This increased video performance considerably but limited the expansion bus to a maximum of 3 VLB adapters. The current implementation is an extension of the ISA bus and provides a 32-bit-wide data bus. This data path will most likely be extended to 64 bits. The VLB bus is an excellent choice for your primary video adapter. Although it can be used for multiple purposes, such as a video adapter, disk controller, and network adapter, it is not the best choice for multiple adapters. Each time you add a peripheral to the VLB expansion bus, all peripherals on the bus contend for access to the bus, and performance decreases. Even with this contention for the bus, the VLB bus is faster than the ISA bus and should be used over the ISA bus whenever possible.
PCI (Peripheral Component Interconnect) This expansion bus was designed to overcome the limitations of the ISA, EISA, MCA, and VLB expansion buses. PCI was designed to offer true Plug and Play functionality by automatically configuring the installed adapters (no software configuration program needed). It outperforms all other buses in data transfer rates and offers more than three expansion slots. It is an excellent choice for multiple adapters such as your video card, SCSI (or IDE disk controller) adapters, and network adapters. Most computers only have three PCI expansion slots, although some of today's super servers have up to six PCI expansion slots; having only three PCI expansion slots can severely limit your future expansion options. If PCI is your choice as a primary I/O bus, find one that is paired with an EISA expansion bus. This will give you the capability to use the PCI bus for your video adapter, your disk controller, and your primary network adapter. You can then use the EISA bus for secondary disk controllers and network adapters.
TIP: Many people tout PCI and VLB as the buses to use on the desktop. These same people tend to forget about performance-oriented servers. These computers can make excellent use of the EISA bus to add network adapters, SCSI adapters, and even high-speed multiple port communications boards (such as those from DigiBoard) to add functionality while maintaining performance. For an I/O bus, find a PCI/EISA bus combination if you can. This offers you the highest levels of performance and compatibility while providing long-term growth potential.
CAUTION: Try to avoid an architecture that has a mixture of more than two I/O buses, such as ISA, PCI, and VLB, for your server. Although these platforms do offer the capability to use more types of peripherals on a single computer, they usually do not perform as well. It's better to choose a platform with a dedicated ISA/PCI or ISA/VLB bus and use the faster bus for your video, disk, and network adapters. In other words, whenever possible do not mix the PCI bus with the VLB bus. If you have a choice, choose PCI over VLB.
Aside from your processor and I/O expansion bus, you should look into a few additional details before making your purchase. First, consider the primary memory subsystem because Windows NT Server uses it quite heavily. Second, consider the memory caching subsystem because the type and size of the cache affects the primary subsystems' performance. Not only will these two items greatly impact the overall performance of your system today, but they will also impact your future upgrade decisions.
Choosing a Primary Memory Subsystem. Your memory subsystem is one of the most critical choices you can make for your computer system. This choice basically falls into three different components:
In the early days of personal computing, there was only one type of computer memory used in the computer's primary memory subsystem. This has changed tremendously over the years. Today, you can find computer systems that use any of the following:
When making your purchasing decisions, choose SDRAM over EDO RAM and DRAM if you have the budget. Otherwise, choose an EDO DRAM-based system over a DRAM-based system. As a last resort, choose a DRAM-based system.
NOTE: Another type of memory used in some high-end or fault-tolerant servers is ECC (Error Correction Code) memory. This memory is similar to memory with parity. The primary difference is that memory with parity can only correct single-bit errors, whereas ECC memory can correct double-bit errors. If you plan to use your network server for mission-critical applications, also consider using memory with parity or ECC memory.
Memory type isn't everything, however. All memory has a speed rating that determines how fast the memory can be accessed. This speed is measured in nanoseconds; currently, memory speeds fall between 10 and 200 nanoseconds. Memory with speeds below 30 nanoseconds is generally used by the caching subsystem (more on that in the next section), whereas memory used in the primary memory subsystem falls in the 60 and 80 nanosecond range. When it comes time for you to purchase memory for your computer, purchase the fastest memory possible. If your computer system can use memory between 60 and 80 nanoseconds, choose the 60 nanosecond memory. Be sure, however, that all the installed memory is the same speed. It does you no good to install faster 60 nanosecond memory in a computer with 80 nanosecond memory already installed.
TIP: To take maximum advantage of the faster memory, you might need to configure the number of memory wait states in the system BIOS. A wait state is the time the processor must wait before accessing the same memory location. Faster memory can use a lower number of wait states than slower memory, and thereby improve overall system performance.
The minimum memory requirement for Windows NT Server is 16M of RAM, but this is just the bare minimum required to install the operating system. A more realistic figure is 32M of RAM for a basic network file server and a minimum of 2M of RAM for each additional system component (Services for Macintosh, Gateway Services for NetWare, Stripe Sets with Parity, and so on) that you install. It's also recommended to use an additional 16M of memory for each additional BackOffice (SQL Server, System Management Server, Exchange Server, and so on) component you install on the server. Depending on your performance requirements, you might need even more memory. Extra memory can be used by the operating system to increase the size of the file system cache. This cache dynamically resizes, based on the demands of the system. As more memory is needed by the applications running on the server, the cache decreases in size. As less memory is required by applications, the cache increases in size. Because this cache is used to contain both local and network requests, increasing the size of the cache can improve performance. For what it's worth, my primary domain controller has dual Pentium 166 MHz processors and 128M of DRAM. It has all the BackOffice components installed, except SNA Server, and performs quite well.
Any type of installed memory is better than using virtual memory on your server, however. Virtual memory is memory that does not physically exist. A portion of your hard disk is used instead to store information that would normally be stored in physical memory. If you consider the fact that memory speeds are measured in nanoseconds (billionths of a second) and disk speeds are measured in milliseconds (thousands of a second), you can understand that using virtual memory can slow down your system tremendously.
NOTE: If you have an EISA-based computer, make sure that the EISA memory setting (based on the EISA setup utility disk application) correctly identifies the amount of physical memory you have installed in your system. If it does not, then Windows NT will use the ISA setting (what it finds based on the BIOS setting), which might limit the amount of memory that Windows NT will use.
Choosing a Caching Subsystem. Along with your primary memory subsystem, your computer should have a caching subsystem. Many people refer to the caching subsystem as a secondary (or level 2) cache. If any computer you are considering does not have a secondary cache, look elsewhere and choose another computer. A properly designed secondary cache can improve memory access from 10 to 20 percent. This can provide a significant overall performance improvement for your computer system.
The cache is used to hold a copy of main system memory that is frequently accessed, pre-read and hold sequential data requests from main memory, or buffer data writes to main memory. All these options decrease memory access times, thereby increasing performance, because cache memory operates in the 15 to 20 nanosecond range, whereas system memory operates in the 60 to 80 nanosecond range. Caches are used because the processor speed has exceeded the speed at which the main memory can be accessed.
System memory is based on DRAM, EDO RAM, or SDRAM chips that require a refresh cycle before they can be accessed again. This refresh cycle doubles, or even triples depending on the system architecture and wait cycles, the time between concurrent memory access rates. Secondary cache chips, on the other hand, are based on Static Random Access Memory (SRAM) chips, which do not require a refresh between concurrent data access cycles. Increase the size of your secondary processor cache based on the size of your system memory. Use a minimum of 256K for a 16M system, with a 512M cache for systems up to 64M, and at least 1M of cache for anything larger than 64M if possible. Not all systems have upgradable secondary caches, however, which is why you should pay careful attention to the caching options when selecting a motherboard or computer system.
TIP: Most Intel computers offer an advanced BIOS setup option to configure the secondary cache and main system memory refresh times and wait states. If you can, set your secondary cache to offer write-back (which buffers writes to system memory) functionality because this increases system performance. If data integrity is an issue, set your secondary cache settings to write-thru (which passes all data writes directly to main memory) and only cache memory read requests.
The most important single component on your system, aside from the processor, is your disk subsystem. If your server cannot access the data fast enough to handle your client requests, it slows down the entire network as your clients wait to access the data. There are currently three types of disk subsystems on the market.
IDE (Integrated Drive Electronics) This drive interface is an outgrowth of the ST-506 interface (introduced with the IBM PC) and is designed to replace a dedicated (smart) disk controller with a host (dumb) adapter and a smart disk drive. In this particular scheme, the disk controller is really just an interface between the host computer and the smart peripheral. You can add disk drives, tape drives, or even CD-ROM drives to an IDE host adapter. The current limitations include a maximum of four IDE peripherals in a single system. It accomplishes this by using both the primary and secondary I/O addresses defined for ST-506 hard disk controllers (370-37F and 170-17F) and usually provides separate interrupts for each I/O channel. The good news about IDE disk drives is that they are inexpensive and can offer acceptable performance for a workstation computer. The bad news is that they are not fast enough for a server. The really bad news is that most IDE disk controllers are programmed I/O (PIO) devices. The host processor (on your motherboard) must transfer the data to/from the adapter from/to system memory. This decreases the efficiency of your server and should be avoided if at all possible.
EIDE (Enhanced Integrated Drive Electronics) This is an extension to the current IDE standard and is designed to increase the data transfer rates. It does this by reading multiple sectors of the disk whenever a data access request is specified. It also increases the maximum size of a disk drive from 512M to 2G. But you are still limited to a maximum of four IDE peripherals on a single system. EIDE drives are not the best choice to make for your server, but they are acceptable if you lack the funds for better equipment.
SCSI (Small Computer System Interface) This is my personal recommendation for a primary disk subsystem, although you can mix and match a SCSI system with any other subsystem mentioned earlier and use it as a secondary disk subsystem. SCSI is another expansion bus, not just a disk I/O bus like IDE. However, like IDE drives, the electronics for controlling the drive and accessing the data are located on the disk drive. You can add SCSI tape drives, SCSI scanners, SCSI printers, and any other SCSI device to your SCSI host adapter. The standard SCSI interface offers a single disk channel, which can add up to seven SCSI peripherals, whereas enhanced versions offer the capability to add up to 15 SCSI peripherals on two separate channels (seven on one channel and eight on the other channel; the remaining SCSI ID on the first channel is used by the host adapter). Most SCSI adapters are also bus masters, which can increase performance quite a bit. Other factors include the capability to attach/detach the SCSI peripheral from the SCSI bus so that another SCSI peripheral can access the bus while the first is processing a data request, queue multiple disk commands for latter processing, and replace bad sectors with spare sectors on command.
NOTE: There are several versions of SCSI: SCSI I, which you should avoid when purchasing SCSI peripherals; SCSI II, which is the most used; SCSI III, which is on its way to becoming the new standard; and FAST SCSI and Wide SCSI. FAST SCSI extends the data transfer rate from 10 Mbps to 20 Mbps, whereas Wide SCSI extends the I/O interface from 8 bits to 16 bits. In some cases, you can even find a combination of FAST/Wide SCSI that extends the data transfer rate to 40 Mbps.
TIP: When adding a CD-ROM to Windows NT, always try to choose a SCSI II CD-ROM drive. These types of CD-ROM drives are the easiest to add to a Windows NT system.
Windows NT can perform as well as (if not better than) most caching disk controllers with the addition of the same amount of RAM. For instance, if you compare a caching controller with 16M of RAM and Windows NT Server with an additional 16M of RAM, you will find that the performance is about the same. This is because the caching controller is limited by the expansion bus to transfer the requested data, whereas the Cache Manger uses system memory and therefore accesses cached data based on the memory bus speed. If the caching controller only has 4M of RAM, even the base installation of Windows NT (with 16M of RAM and no caching disk controller) performs as well as (if not better than) the same system with a caching disk controller. As another item to consider, very few caching disk controllers are supported by Windows NT. These types of controllers require specific device driver support to use the cache on the disk controller. Most device drivers for caching disk controllers just turn off the cache when used with Windows NT.
Rather than use a caching controller, you might want to consider alternatives that just require a few basic techniques. These techniques center on balancing the load of your disk subsystem to increase the I/O performance. You will concentrate on using SCSI subsystems (because it provides the most benefit), but you can use other disk subsystems (such as IDE or EIDE), as well. These subsystems can be divided into three categories:
The Single Disk Subsystem. This particular installation has limited performance gain options. But this is not to say that there is nothing you can do; it just means the options for increasing your server's performance are based on the number of physical disk drives you have installed on your system and how much work you are willing to put in to obtaining the maximum benefit. Let's begin with the minimum performance gain option because it's also the easiest.
We will assume that you have one disk controller with two disk drives. Each disk drive is 500M in size. They can be IDE, EIDE, or SCSI. Each drive has a single primary partition of 500M. In this particular case, you have installed Windows NT Server to drive C: in the WINNT directory (the installation default). This directory is called the SystemRoot directory. In fact, you have a special environment variable called SystemRoot that equates to the installation directory. For instance, in this example, the SystemRoot environment variable is C:\WINNT. Because this is where all the system files are located, where all the print jobs are spooled (actually the print jobs are spooled to a subdirectory within the SystemRoot directory), and where the paging file resides (on the same drive), it is a heavily used disk drive.
To help balance the load, you can do two things. First, you can install another paging file on the second disk (D:). This provides Windows NT with the capability to use both paging files (the one on drive C: and the one on drive D:) when it needs to make use of virtual memory. If one disk is in use, the other disk can be used to access its paging file to fulfill the virtual memory request.
Second, you can place all your BackOffice (assuming that you will be using additional BackOffice components) and support files on the second disk drive. You can even go so far as to split up your user shares between both drives so that the load is equally balanced. This gives relatively good performance with a minimum of complexity.
NOTE: Windows NT Server makes heavy use of its paging file, and the most significant performance gain can be realized by placing your primary paging file on a stripe set. (For more information on stripe sets, see Chapter 28, "Protecting Your Disks.") The only alternative to paging to disk is to have enough physical memory installed on your system to avoid paging at all. And if you have the funds available, a 256M Windows NT Server can be an outstanding network server. Adding additional processors can increase its capabilities even more as an application server.
The alternative method requires that you either prepartition your hard disk drives to four equal sizes of 250M each before you install Windows NT Server; partition it as part of the install process (the simplest method); or back up your current NT Server installation and repartition, reformat, reinstall NT, and then restore your backed-up version (the toughest method). The idea here is to use two partitions (one on each physical disk) and create a stripe set of 500M. You could, alternatively, create four partitions with two partitions 150M in size and two partitions 350M in size to create a 700M stripe set.
NOTE: I would not recommend less than 150M (and even that's cutting it close) for the system partition because the available free space will dwindle as you install additional software or as print jobs are spooled. In addition, after this partition is filled, you will be required to back up, repartition, reformat, reinstall, and then restore your previous Windows NT installation--a lengthy and tedious process, to say the least.
Of course you cannot create the stripe set until after you have installed Windows NT, so your first task is installing Windows NT to your first primary partition (drive C:). After you have installed Windows NT and created the second primary partition (drive D:), you can proceed to create the stripe set (drive E:) with the Disk Administrator. Now you install your BackOffice software; then create your paging files and user directories. In this case, however, you should create small paging files for drives C: and D: (something in the 10M to 30M range), with your largest paging on drive E: (possibly in the 100M to 250M range, depending on your server load). Place the user directories on drive D:, and place all your other software on the drive E: (the stripe set). This gives a moderate increase in system performance and increased I/O capacity for your shared network files.
CAUTION: Because you are using a stripe set without parity, there is no fault tolerance. Your only means of ensuring data integrity is your system backups, so be sure to schedule daily backups.
The Multiple Disk Subsystem. In this scenario, you build on your previous performance optimizations by assuming that you have two disk controllers: one EIDE disk controller and single disk drive, which shipped with the computer, and an optional SCSI disk controller with at least two (preferably three to five) SCSI disk drives. In this case, you install Windows NT Server to the EIDE drive (drive C:) and devote this drive completely to Windows NT and the BackOffice system files. The SCSI subsystem will be used to create a stripe set or, if you have enough disk drives (at least three), a stripe set with parity.
TIP: When creating a stripe set or stripe set with parity, the more drives you add, the better the performance. This is because a stripe set stripes the data among the disk drives sequentially. For instance, if you have three disk drives in a stripe set, you can theoretically read or write three times as much data (actually the performance is not quite that scalable, but is still significantly improved). A stripe set with parity will only achieve two reads/writes for the same logical drive because a complete stripe includes two data blocks with one ECC block. It is even more important for a stripe set with parity to use more than three drives to obtain equal performance with a regular stripe set.
After the stripe set (or stripe set with parity) has been created (drive D:), you can install the BackOffice system files. These files should be installed on drive C: with all the data files (SQL Server devices, databases, and so on) installed to drive D: (the stripe set). All the additional user data files and shared applications should also be installed to drive D: to take advantage of the increase in the I/O subsystem. This offers a significant increase in overall system performance and a noticeable improvement in I/O capacity for your shared network files and SQL Server databases.
The Ultimate Disk Subsystem. To obtain the ultimate
I/O performance without using a hardware RAID solution (more on this later), you
can use multiple disk controllers with multiple disk drives. In this example, assume
that you have three disk controllers: one EIDE disk controller with one disk drive
(drive C:) and two SCSI disk controllers. One SCSI controller (SCSI I) will have
two disk drives (although more is better), whereas the other SCSI controller (SCSI
II) will have three or more disk drives. The single EIDE drive will again become
your SystemRoot partition where you will install Windows NT Server and all the BackOffice
system files, along with a small system paging file.
The SCSI 1 disk controller and disk drives is used to create a stripe set where you will install the system paging file and, alternatively, the printer spool files. In this case, using a stripe set increases system throughput without affecting data integrity because print jobs can be resubmitted should an error occur. If an error occurs on this stripe set, then the small paging file that you created on the SystemRoot partition will be used to keep the system up and running.
All your user data files, shared applications, and SQL Server devices and databases will be installed on the stripe set with parity, which you will create on the SCSI 2 disk controller. This provides an additional level of fault tolerance for your data files and increase I/O performance, as well. This gives you the best overall system performance and I/O capacity for your server.
TIP: If you use any of the preceding scenarios with multiple disk controllers in a multiprocessor platform, your performance increases even more. This is due to Windows NT's SMP model where any processor can service interrupts and can thereby achieve an additional level of I/O concurrency over a single-processor platform.
The Hardware RAID Alternatives. If you have the budget, nothing performs better than a hardware RAID system when selecting a disk subsystem. This is because a hardware-based RAID device generally has an internal battery backed-up memory buffer (in case a power failure occurs during a disk write) that adds fault tolerance over a software-based RAID solution. It also has its own processor so that the overhead involved in calculating the ECC stripe is performed by the disk controller rather than the host processor.
NOTE: We will discuss the use of a RAID 5 solution only, although several RAID levels are currently in use with Windows NT Server. Other RAID levels include RAID 0 (data striping), RAID 1 (disk mirroring), and RAID 5 (striping with parity). RAID levels 2, 3, and 4 are generally used with higher-end mainframes rather than with Windows NT. Each of these is just a slightly different variation of a stripe set with parity.
Additional benefits include the capability to mirror these RAID drives either in software with Windows NT or in hardware using the RAID controller. You can even go so far as to stripe multiple RAID drives because Windows NT sees these RAID drives as a single logical drive. If you stripe them, there is no need to use a stripe set with parity because this is already being performed at the hardware level.
Another advantage of the hardware-based RAID solution is that most of the hardware RAID solutions support hot swapping of a failed disk drive. Hot swapping is the capability to change a failed disk drive for a new working drive without powering off the entire computer system. After the drive has been replaced, the RAID controller begins to rebuild the missing data stripes, based on the available data stripes and the ECC stripe in the background. Replacing a software-based RAID solution requires powering off the system to replace the drive. Then, after powering back up, you need to use the Disk Administrator to regenerate the missing data.
When selecting your disk drives for a RAID solution, either hardware or software based, it's better to choose more small disk drives rather than fewer large disk drives to build an equivalent logical drive. For example, suppose that you want approximately a 5G logical drive. You could select either six 1G disk drives or three 2G drives for a maximum logical drive of 4.8G (RAID drives use approximately 20 percent of the storage for the ECC stripe). Either solution gives the exact same logical drive size, but the unit based on the six 1G drives generally outperforms the unit based on three 2G drives.
Generally speaking, a network server's video performance is not a high priority. Almost any video adapter provides adequate performance. As long as the video adapter is 100 percent VGA compatible, it can be used with Windows NT Server. This is not to say, however, that it doesn't matter which video adapter you use. Video performance can be important if you will be using the computer interactively to perform your basic management duties. After all, almost all the administrative tools you use are graphical in nature, and the speed of the video adapter can make a difference in how much work you get done on the server. So what should you do?
At the very least, consider using a video card that uses your fastest I/O expansion bus. It is hoped that this is a VESA or PCI bus. Keep in mind, however, that the primary role of your computer is to perform network services. Should you need to add a network adapter, it's best to place this adapter on your fastest I/O expansion bus, as well. If you only have one free VESA or PCI expansion slot left, it might be best to keep it free for future expansion and place your video card in an ISA slot.
Another important aspect of a video adapter is the display resolution, color depth, and refresh rate that it supports. Higher display resolutions can be used to display larger windows (or more smaller windows) that contain more user-specific information. Higher color depths can be used to provide a more pleasing appearance and eliminate the flashing that can occur during a color palette change (such as those that occur when you change color backgrounds with a 256 color palette). Higher refresh rates can improve the speed at which the display is rendered on the screen and can also eliminate the flicker that occurs under florescent lighting conditions. The key factors to consider here are how you will use your server and whether the video adapter can provide the performance you need for local administration at higher resolutions. This leads to the second point to consider for your video adapter.
Consider using a video adapter that is also a graphics accelerator. A graphics accelerator can use any of the following methods to improve video performance:
Most of today's video adapters have 32-bit paths to video memory. Some have 64-bit paths, and the fastest have 128-bit paths. The wider the data path, the more information can be read from or written to video memory in a given amount of time. This directly relates to your ability to see changes appear on the monitor.
You can also achieve improved performance by making sure that your video card uses the fastest possible memory technology. The least expensive video accelerators use DRAM for their video memory. The mid-range video accelerators use VRAM (Video RAM), which is dual ported memory (meaning that it can be read from and written to without a refresh cycle). High-end video cards use WRAM (Windows RAM) or SDRAM for even better performance.
The most expensive video cards often include a video coprocessor. This processor is used to offload the workload from the computer's CPU. Without a video coprocessor, your computer's CPU must manipulate the video memory directly to draw lines, fill objects, or change colors. By offloading this work to a video coprocessor, your server can continue to perform more important work.
Even if you have an optimized disk subsystem, multiple processors, and an abundance of physical RAM, your network server will not perform well if it has either a slow network adapter or too many network requests to handle. When you take the time to consider it, if you only have one network adapter installed on your server and many clients to support, then your network adapter had better be a 100M FDDI or Fast Ethernet adapter.
NOTE: While 100M network adapters are being discussed here, this does not mean that you must use them to obtain increased performance. The same benefits can be achieved from the techniques we will discuss for 10M network adapters.
Consider the network transports you will use. If they are all bound to one network adapter, that adapter will be constantly changing modes to send out a broadcast name to find an associated resource when a network request is received. As a generic example, assume that you're looking for a NetWare client that uses the IPX/SPX transport. To find this client, your server probably will send out name requests over the NetBEUI, TCP/IP, and IPX/SPX (assuming that this is the default binding order you've established) transport protocols--and all through the same adapter.
After the client has been found, all further requests will be routed just through the IPX/SPX protocol. But the time it takes for the operating system to switch modes, send out these name requests over the network adapter, and process them is just wasted and decreases the capability of your server to process additional client requests over that same adapter. It also increases the amount of useless network traffic over the network cabling, thereby decreasing overall network throughput.
If you want to increase network performance, you might even want to use multiple network adapters to split your entire network into discrete segments. This will limit the impact that these network clients have on each other for accessing resources. Only if the network client request requires access to a resource outside its default segment will it impact other network client users.
NOTE: If you use multiple network adapters on a TCP/IP-based network, each network adapter physically installed in your server must have its own IP address. To route network requests from one segment to the other, you must enable the Enable IP Forwarding check box in the Routing property sheet of the Microsoft TCP/IP Properties dialog box. Furthermore, each network adapter's IP address must be a distinct class C subnet because Windows NT can only route--not bridge--multiple TCP/IP segments.
© Copyright, Macmillan Computer Publishing. All rights reserved.