Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

  1. Decimal

    Code Block
    WorkerCpuAffinity = 31

    The setting above exposes cores #0,1,2,3,4
    (see Backward compatibility)

  2. Hexadecimal 

    Info

    Introduced in FA C++ 2.27.1

    Code Block
    WorkerCpuAffinity = 0x1F3A 

    The setting above exposes cores #1,3,4,5,8,9,10,11,12

  3. Cores-set format (like Linux' taskset command)

    Info

    Introduced in FA C++ 2.27.1

    Code Block
    # core numbers: integer values of set [0..63]
    Session.Default.RecvCpuAffinity = 2-4
    
    # separator character: ','
    HelperCpuAffinity = 1,4
    
    # grouping characters: '{' '}'
    WorkerCpuAffinity = {0}

    The settings above expose cores respectively #2,3,4;  #1,4; #0;

    Info

    NOTE: To avoid erroneous reading with the cores-set format, use a grouping of characters in case of single-core in the mask:

    WorkerCpuAffinity = 31 - it means cores #0,1,2,3,4

    WorkerCpuAffinity ={31} - it means cores #31core #31

Support ranges

  • Use comma-separated list instead of bitmask (decimal values in the range [0..63] separated by comma)

    Code Block
    Session.Default.RecvCpuAffinity = {1,3,4,5,8,9,10,11,12}
  • Supports ranges (like Linux' taskset command) 

    Code Block
    Session.Default.RecvCpuAffinity = 1,3-5,8-12

...

by default - the decimal format is used.

Examples of conflicting configuration:

Code Block
# The new settings uses core #2
WorkerCpuAffinity = 2 4
WorkerCpuAffinity = 0x2 0x4
WorkerCpuAffinity =  {2}


# The old behavior uses cores # 1, 2, 3. Not using core #0
WorkerCpuAffinity = 14
# The old behavior uses cores #0
WorkerCpuAffinity = 1

# The new behavior uses cores #2 and #4
WorkerCpuAffinity = 0x14
# The new behavior uses core #14
WorkerCpuAffinity = {14}
# The new behavior uses core #2 and #4
WorkerCpuAffinity = {2,4}

# The old behavior means all cores for mapping (default) 
WorkerCpuAffinity = 0
# The new behavior uses core #0
WorkerCpuAffinity = {0}
# The new representation to map all cores:
WorkerCpuAffinity = {0-63}
WorkerCpuAffinity = 0xFFFFFFFFFFFFFFFF


...


Linux thread nameFIX Antenna thread nameDescription
1FA: TimerTimer

Several timer threads which can be used for:

  • Internal scheduling events.  Stop, Start, Reconnect a session
  • Scheduling for delayed message delivery. (non-public functionality).
  • Scheduled backup logs (non-public functionality).
  • Some internal health checks (non-public functionality)
  • Timer for connection timeout checks (non-public functionality)
  • Public health checks like control of used memory for windows.
  • Heartbeats timer.
2FA: Worker_0
...
FA: Worker_N

Worker_0
...
Worker_N

Several threads.

Session processing (receive/send) threads from thread pool used by EVEN and DIRECT_SEND modes and configuring by NumberOfWorkers parameter

3FA: DispacherDispacher

Thread that is listening and handling incoming and outgoing connections.
Performs protection from abnormal behavior (DDOS protection)

4FA: AbsolutTimeAbsolutTimerPublic timer scheduling tasks.
5FA: ExlusiveRecExlusiveReceiveTaskDedicatedWorkerA dedicated thread for receiving in aggressive mode.
6FA: NewInLinkTaNewInLinkTaskThread that accepts a new connection.
7FA: ExlusiveSenExlusiveSendTaskDedicatedWorkerA dedicated thread to send in the aggressive mode if sending try in the current thread has failed.
8FA: AsyncConnecAsyncConnectTaskAsynchronous connection to the initiator.
9FA: DBLDispacheDBLDispacherThread that is listening and handling incoming and outgoing connections for Myricom DBL network cards.
10FA: LSCommunicaLSCommunicator_Impl
  • Some internal utility threads.
11
<Unnamed threads>
  • Some internal utility threads.
  • TCP logging thread (TCPAppender for log4cpp)

...