$id$
Introduction:
  
  Process affinity in ARMCI comes into play for finding the optimal way to 
  assign the data server thread that is used on many platforms to different
  physical processors on the node. This is only functional for the LINUX
  and LINUX64 platforms 
  
  Normally, ARMCI will run only 1 data server thread per node. It can be 
  alternatively configured to run as many data servers as compute 
  processes on a node. The way to
  enable one data server per compute process is by setting the environment
  variable ARMCI_NSERV_EQ_NPROC
  
  These are two environment variables to control process affinity
  1. ARMCI_CHANGE_SERVER_AFFINITY
     if this is enabled in armci/src/GNUmakefile, data servers affinity
     is changed between different CPU's depending on the work load. Note
     that this is only applicable for the case where ARMCI_NSERV_EQ_NPROC is
     not defined. If both are defined, results may be undesirable.
  2. ARMCI_CHANGE_AFFINITY_GRANULARITY 
     Data server changes its affinity based on its work load. The
     granularity at which to switch between CPU's can be changed with this
     evronment variable. The three values of this variable are SMALL, MEDIUM
     and LARGE. SMALL changes affinity in the order of milli-seconds of work
     load, MEDIUM does it at a granularity of 1 second and LARGE changes in
     the order of 10's of seconds

Example:
  Please look at performance graph: affinity_performance.png which shows a
  case where changing affinity helps. The corresponding test for this is
  simple/affinity_test.c
