RE: re Dual Processor vs. Single Processor

  • From: "George Kalman" <gkalman@xxxxxxxxxxxxxx>
  • To: "[ISAserver.org Discussion List]" <isalist@xxxxxxxxxxxxx>
  • Date: Mon, 10 Dec 2001 17:23:55 -0500

re Dual Processor vs. Single ProcessorYes. If you are only running ISA
Server on the new machine (i.e., no other compute intensive mail filtering
products)  then there is really no reason to spend extra money on a dual
processor. Especially if it is one of the newer 1.7 Ghz or higher
processors. Lots of memory first and a good disk subsystem second. I would
think that you would be forced to purchase a dual processor license if
running ISA server on a dual processor -- there is no way to force it to use
only one processor via the license.
  -----Original Message-----
  From: Edwin Gnichtel [mailto:Ned@xxxxxxxxxxx]
  Sent: Saturday, December 08, 2001 2:18 AM
  To: [ISAserver.org Discussion List]
  Subject: [isalist] RE: re Dual Processor vs. Single Processor


  http://www.ISAserver.org


  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')

  ------------------------------------------------------
  You are currently subscribed to this ISAserver.org Discussion List as:
gkalman@xxxxxxxxxxxxxx
  To unsubscribe send a blank email to $subst('Email.Unsub')

Other related posts: