Performance optimization is a bit of a
black art in that every user has different needs, every configuration
has different operating parameters, and every system can react in a
unique and unpredictable way to performance tweaks. What
this means is that if you want to optimize your system, you have to get
to know how it works, what it needs, and how it reacts to changes. You
can do this just by using the system and paying attention to how things
look and feel, but a more rigorous approach is often called for. To
that end, the next few sections take you on a tour of Windows Home
Server’s performance monitoring capabilities.
1. Monitoring Performance with Task Manager
The Task Manager utility is excellent for getting a
quick overview of the current state of the system. To get it onscreen,
press Ctrl+Alt+Delete, and then click Task Manager.
Tip
For faster service, either press Ctrl+Shift+Esc or right-click an empty section of the taskbar and then click Task Manager.
1.1 Monitoring Processes
The Processes tab, shown in Figure 1,
displays a list of the programs, services, and system components that
are currently running on your system. The processes appear in the order
in which they were started, but you can change their order by clicking
the column headings. (To return to the original, chronological order,
you must close and restart Task Manager.)
Note
In the list of processes, you’ll likely see several instances of svchost.exe.
This is a program that acts as a host process for services that run
from dynamic-link libraries (DLLs) instead of from executable files. To
see which services the various instances of svchost.exe are running, start a command prompt session and enter the following command:
This displays a list of all the running processes
and includes a column that displays the services that are hosted in
each process.
In addition to the name of each process and the user who started the process, you see two performance measures:
CPU— The
values in this column tell you the percentage of CPU resources that
each process is using. If your system seems sluggish, look for a
process that is consuming all or nearly all the CPU’s resources. Most
programs monopolize the CPU occasionally for short periods, but a
program that is stuck at 100 (percent) for a long time most likely has
some kind of problem. In that case, try shutting down the program. If
that doesn’t work, click the program’s process and then click End
Process. Click Yes when Windows Home Server asks whether you’re sure
that you want to do this. Memory (Private Working Set)—
This value tells you approximately how much memory the process is
using. (See the following discussion for a more detailed explanation.)
This value is less useful because a process might genuinely require a
lot of memory to operate. However, if this value is steadily increasing
for a process that you’re not using, it could indicate a problem, and
you should shut down the process.
Tip
You can control how often Task Manager refreshes its
data. Select View, Update Speed, and then select High (Task Manager
refreshes the data twice per second), Normal (Task Manager refreshes
the data every 2 seconds; this is the default), or Low (Task Manager
refreshes the data every 4 seconds). If you want to freeze the current
data, select Paused. You can also refresh the data at any time by
selecting View, Refresh Now.
The four default columns in the Processes tab aren’t
the only data available to you. Select the View, Select Columns
command. As you can see in Figure 2,
the Select Columns dialog box that Task Manager opens has a long list
of values that you can monitor. To add a value to the Processes tab,
activate its check box and click OK.
Here’s a summary of the columns you can add:
PID (Process Identifier)— This is a unique numerical value that Windows Home Server assigns to the process while it’s running. User Name— This value tells you the name of the user or service that launched the process. Session ID—
This is a unique numerical value that Windows Home Server assigns to
the process while it’s running within a Terminal Services session (such
as if a user is running Windows Home Server Dashboard or has logged on
to Windows Home Server via Remote Desktop). Tip
To see the Session ID values, activate the Show Processes from All Users check box.
CPU Usage— This is the CPU value discussed earlier in this section. CPU Time—
This column shows the total time (in hours, minutes, and seconds) that
the process has used the CPU since the process was launched. Because
most computers (including Windows Home Server) don’t access the
processor constantly, the CPU is usually idle, which means the System
Idle Process almost always shows the lion’s share of the CPU Time
value. However, if you see another process that seems to have used an
inordinate amount of CPU time (for example, hours of CPU time, when all
other processes have used only minutes or seconds of CPU time), it
could mean that the process is frozen or out of control and should be
shut down. Memory - Working Set— This value tells you the size (in kilobytes) of the working set, which is the number of kilobytes the process currently has resident in memory). Note
The memory values are listed in kilobytes. To convert to megabytes, divide by 1,024.
Memory - Peak Working Set—
This value tells you the maximum amount of memory (in kilobytes) used
by each process. For most processes, the current working set value
should be quite a bit less than the peak working set value. If a
process is showing a current working set value at or very near the peak
over a long period of time, it could be a sign that the process is
stuck or has a memory leak. Memory - Working Set Delta—
This value tells you how much the Memory Usage value changed (in
kilobytes) since the last time Task Manager updated the processes. You
see a positive value when memory use increases and a negative value
when memory usage decreases. Under normal conditions, a program might
show gradually increasing memory usage as more resources are used, and
gradually decreasing memory usage as files and other objects are
closed. If you see a process that has a constantly positive Delta
value, particularly when it’s not obvious that the process is being
used, it might be the sign of a memory leak in the process. Memory - Private Working Set—
This value tells you the amount of working set memory that is dedicated
to the process and cannot be shared with other processes. The
difference between the full working set and the private working set is
the amount of memory that the process is using that can be shared with
other processes. Because shareable memory is, in a sense, available
memory, the private working set is more useful as a measure of how much
memory a process is currently consuming (hence, this value’s status as
a default Task Manager column). Memory - Commit Size— This value shows the total amount of virtual memory, in kilobytes, that Windows Home Server has allocated to each process. If page faults
are high (see the Page Faults bullet), it could be due to a process
using a large amount of virtual memory. Consider ending and restarting
that process. Note
Your computer can address memory beyond what is physically installed on the system. This nonphysical memory is called virtual memory,
and it’s implemented by using a piece of your hard disk that’s set up
to emulate physical memory. This hard disk storage is actually a single
file called a paging file (or sometimes a swap file).
When physical memory is full, Windows Home Server makes room for new
data by taking some data that’s currently in memory and swapping it out
to the paging file.
Memory - Paged Pool— This value is the amount of virtual memory, in kilobytes, that Windows Home Server has allocated to the process in the paged pool—the
system memory area that Windows Home Server uses for objects that can
be written back to the disk when the system doesn’t need them. The most
active processes have the largest paged pool values, so it’s normal for
this value to increase over time. However, it’s unusual for any one
process to have a significantly large paged pool value. You can improve
performance by shutting down and restarting such a process. Memory - Non-Paged Pool— This value is the amount of virtual memory, in kilobytes, that Windows Home Server has allocated to the process in the nonpaged pool—the
system memory area that Windows Home Server uses for objects that must
remain in memory and so can’t be written back to the disk when the
system doesn’t need them. Because the nonpaged pool takes up physical
RAM on the system, if memory is running low, processes that require a
lot of nonpaged pool memory could generate lots of page faults and slow
down the system. Consider closing some programs to reduce memory usage. Page Faults—
This value tells you how often each process has requested a page from
virtual memory and the system couldn’t find the page. (A page is an
area of virtual memory used to transfer data between virtual memory and
a storage medium, usually the hard disk.) The system then either
retrieves the data from another virtual memory location (this is called
a soft page fault) or from the hard disk (this is called a hard page fault).
Lots of hard page faults can slow down overall system performance and
may be a sign that your system doesn’t have enough memory or that the
virtual memory paging file isn’t big enough. Note
Unfortunately, Task Manager doesn’t give you any way
to differentiate between soft page faults and hard page faults.
Note
If you display the Page Faults column, you may notice that the Windows shell process (explorer.exe)
seems to constantly accumulate page faults. (To see this, it helps to
display the Page Faults Delta column, described next.) In fact, the
Page Fault value increases every 2 seconds. Does this mean explorer.exe has a problem? Not at all. The page faults are caused by Task Manager, which causes an explorer.exe
page fault every time it updates the CPU Usage value. Because that
happens every 2 seconds (assuming that Task Manager’s update speed is
set to Normal), the explorer.exe Page Faults value also increases every 2 seconds.
Page Faults Delta—
This value tells you how much the Page Faults value changed since the
last time Task Manager updated the processes. Because the total number
of page faults can never decrease, this will always be either 0
or a positive number. A process that shows a consistently high Page
Faults Delta value might not have enough memory to run properly.
Consider shutting down the process and starting it again. Base Priority— This value shows you the priority level that each process uses.
Handles— This value shows you the number of object handles in the object table associated with each process. An object handle
is an index that points to an entry in a table of available objects,
and it enables programs to interface with those objects. Handles take
up memory, so a process with an inordinately large handle count could
adversely affect system performance. Threads— This value tells you the number of threads that each process is using. A thread
is a program task that can run independently of and (usually)
concurrently with other tasks in the same program (in which case, the
program is said to support multithreading).
Multithreading improves program performance, but programs that have an
unusually large number of threads can slow down the server because
Windows has to spend too much time switching from one thread of
execution to another. USER Objects—
This value tells you the number of interface objects (which are part of
User, a core system component used by applications and other processes
that impact the user) that the process is using. Interface objects
include windows, menus, cursors, icons, monitors, keyboard layouts, and
other internal objects. If performance is slow, look for the process
that has the highest USER Objects value and close it. (The exception here is the explorer.exe
process, which usually has a high number of USER objects, but because
it represents the Windows Home Server shell, you should never close it.) GDI Objects— This value shows the number of graphics device interface (GDI)
objects that each process is currently using. The GDI is a core Windows
component that manages the operating system’s graphical interface. It
contains routines that draw graphics primitives (such as lines and
circles), manage colors, display fonts, manipulate bitmap images, and
interact with graphics drivers. A process that uses an unusually large
number of GDI objects can slow down the system. I/O Reads—
This value shows the total number of input/output (I/O) operations that
the process has used to read data since the process was started. The
total includes reads from local files, network files, and devices, but
not reads from the console input object, which includes the keyboard.
Some processes generate tens or even hundreds of thousands of I/O
reads, so this value isn’t very useful in monitoring performance. I/O Writes—
This value shows the total number of input/output operations that the
process has used to write data since the process was started. The total
includes writes to local files, network files, and devices, but not
writes to the console input object, which includes the monitor. Some
processes generate tens or even hundreds of thousands of I/O writes, so
this value isn’t very useful in monitoring performance. I/O Other— This
value shows the total number of non-read and non-write input/output
operations that the process has used since the process was started.
Examples include starting another process, stopping a running process,
requesting the status of a device, and other control functions. I/O Read Bytes—
This value shows the total number of bytes generated by the read in
input/output operations since the process was started. Again, because
you often see I/O Ready Bytes values in the hundreds of millions or
even billions, this value isn’t much use for performance monitoring. I/O Write Bytes—
This value shows the total number of bytes generated by the write
input/output operations since the process was started. Because you
often see I/O Write Bytes values in the hundreds of millions or even
billions, this value isn’t much use for performance monitoring. I/O Other Bytes—
This value shows the total number of bytes generated by non-read and
non-write input/output operations since the process was started. Image Path Name— This column informs you of the full path name (drive, folder, and filename) of the process executable. Command Line— This column tells you the command that was used to launch the process. User Account Control (UAC) Virtualization—
This column tells you whether the process is allowed to be virtualized,
which means that Windows Home Server creates virtual copies of the
process for use during a program install where no user credentials have
been given. Description— This default column specifies the name of the process. Data Execution Prevention— This column tells you whether DEP is enabled for the process.
|