RE: re Dual Processor vs. Single Processor

  • From: "Edwin Gnichtel" <Ned@xxxxxxxxxxx>
  • To: "[ISAserver.org Discussion List]" <isalist@xxxxxxxxxxxxx>
  • Date: Sat, 8 Dec 2001 02:18:26 -0500

Lets clarify a few things about how Win2k (and other NT kernel based
OS's) handle SMP. First of all, every process has at least one unit of
execution, or thread. In NT, the thread is the unit of execution, not
the process. The process is a container (or address space) that contains
application code (heap, etc.). Any thread, from any process can be
scheduled to run on any processor at any time, by default. So if you
have two single threaded applications, you still have two threads that
will be distributed across two processors, all else being even. With no
special or alternative settings, process scheduling in NT/2k is truly
symmetrical and doesn't require "SMP awareness". Multithreaded processes
benefit, on an individual basis, from SMP in that they are able to
literally run that processes code on more than one processor at a time
(provided the code is well optimized and doesn't have ugly
synchronization issues). Furthermore, multithreading has some
significant benefits over the older Parent/Child process model in that
threads share a single address space eliminating the need for
potentially (compute) expensive inter-process communication and
synchronization methods. 
 
There is no "locking" of threads by default. In fact, NT/2K employs what
is referred to as "soft affinity". This means that the dispatcher
(scheduler) attempts to schedule the thread to run on the processor it
last ran on (to prevent L1/L2 cache reloading and such). However, if
that processor is busy, it will schedule the thread to run on any
available processor in the system. Now, in certain instances, it is
advantageous to override the dispatcher's ability to schedule threads of
certain processes to run on certain processors (especially in SMP
systems with 8 or more processors). Short, repetitive transaction OLTP
systems and systems where application (or process instance) partitioning
is employed may benefit from setting "hard affinities" for processes. A
hard affinity mask prevents a process's threads from running on any
processors other than those defined by the affinity mask.
 
The quickest and easiest way to set process affinity is to go to the
Windows (NT) Task Manager Process tab, right click on the process you
would like to set affinity for and select "Set Affinity". You will be
presented with the Processor Affinity dialog with checkboxes labeled CPU
0 through CPU 31. You will only be able to select those that are not
grayed out (equal to the number of processors you have in your system).
Note that the process affinity, when set through the task manager, is
only for the life of that instance of the process. If the process is
restarted, it will no longer have any hard affinity set. If you have
Datacenter Server, you can use the Process Control Tool (which works in
concert with the Process Control Service to create Job Objects, via the
Job Object API) to automatically set process affinity that will apply to
each instance of a process through the use of either a Process Execution
Rule or a Process Group Execution Rule.
 
I hope this sheds some light on NT/2k's implementation of SMP, threading
and process affinity.
 
Regards,
 
-Ned Gnichtel
 
-----Original Message-----
From: Craft, Steve [mailto:SCraft@xxxxxxxxxxx] 
Sent: Thursday, December 06, 2001 8:55 AM
To: [ISAserver.org Discussion List]
Subject: [isalist] re Dual Processor vs. Single Processor
 
http://www.ISAserver.org


I have some doubts about the performance boost an extra processor might
give to ISA.  But there might be some indirect benefit in that Win2K is
much smoother with two processors, so that will leave more "headroom"
for ISA processes.
In Win2K, all processing is symmetrical, so every multi-threaded
processes uses both processors; you can't necessarily lock a single
multi-threaded process to an individual CPU, since they decide which one
is least busy and share the load internally.  But with something
single-threaded (like any of the VB desktop apps out there for example,
or most games), only one CPU will run the app at a time and it will stay
locked on that app.  
So the real question is, out of the 3-4 services (and device drivers?)
that make up ISA, which ones are truly multi-threaded and SMP aware?
I think RAM is more of an issue, in my limited experience when I doubled
the RAM everything got snappier.  I have done a lot of stuff on
double-CPUs but not with ISA (yet).
Licensing I don't know about. 
 
---------------------- 
I'm about to purchase hardware to host an ISA server. 
I will be purchasing the single-processor license. 
If I get a dual-processor machine: 
1) will the single-processor license work okay (does it allow there to
be 
two processors)? 
2) will the second processor give me any performance boost? 
I'm thinking that the second processor might still be able to handle 
non-ISA related tasks, like network traffic, while the ISA specific 
processor (whichever ISA thinks that is...?) deals with ISA related
task, 
like firewall processing and cache processing. 
Thanks in advance for any thoughts on this. 
ToddC 
toddc@xxxxxxxxx 
------------------------------------------------------
You are currently subscribed to this ISAserver.org Discussion List as:
ned@xxxxxxxxxxx
To unsubscribe send a blank email to $subst('Email.Unsub')

Other related posts: