RTI Connext Java API  Version 5.1.0
ThreadSettingsCpuRotationKind Class Reference

Determines how com.rti.dds.infrastructure.ThreadSettings_t.cpu_list affects processor affinity for thread-related QoS policies that apply to multiple threads. More...

Inheritance diagram for ThreadSettingsCpuRotationKind:
Enum Copyable

Static Public Attributes

static final
ThreadSettingsCpuRotationKind 
THREAD_SETTINGS_CPU_NO_ROTATION
 Any thread controlled by this QoS can run on any listed processor, as determined by OS scheduling.
 
static final
ThreadSettingsCpuRotationKind 
THREAD_SETTINGS_CPU_RR_ROTATION
 Threads controlled by this QoS will be assigned one processor from the list in round-robin order.
 

Additional Inherited Members

- Public Member Functions inherited from Enum
final int ordinal ()
 The integral value of this enumerated constant.
 
Object copy_from (Object src)
 
final String name ()
 The name of this enum constant, as declared in the enum declaration.
 
final String toString ()
 The string value of this enum constant.
 
- Protected Member Functions inherited from Enum
 Enum (String name, int ordinal)
 The constructor.
 

Detailed Description

Determines how com.rti.dds.infrastructure.ThreadSettings_t.cpu_list affects processor affinity for thread-related QoS policies that apply to multiple threads.

Controlling CPU Core Affinity for RTI Threads

Most thread-related QoS settings apply to a single thread (such as for the com.rti.dds.infrastructure.EventQosPolicy, com.rti.dds.infrastructure.DatabaseQosPolicy, and com.rti.dds.infrastructure.AsynchronousPublisherQosPolicy). However, the thread settings in the com.rti.dds.infrastructure.ReceiverPoolQosPolicy control every receive thread created. In this case, there are several schemes to map M threads to N processors; the rotation kind controls which scheme is used.

Controlling CPU Core Affinity is only relevant to the com.rti.dds.infrastructure.ReceiverPoolQosPolicy. It is ignored within other QoS policies that include com.rti.dds.infrastructure.ThreadSettings_t.

If com.rti.dds.infrastructure.ThreadSettings_t.cpu_list is empty, the rotation is irrelevant since no affinity adjustment will occur. Suppose instead that com.rti.dds.infrastructure.ThreadSettings_t.cpu_list = {0, 1} and that the middleware creates three receive threads: {A, B, C}. If com.rti.dds.infrastructure.ThreadSettings_t.cpu_rotation is com.rti.dds.infrastructure.ThreadSettingsCpuRotationKind.THREAD_SETTINGS_CPU_NO_ROTATION, threads A, B and C will have the same processor affinities (0-1), and the OS will control thread scheduling within this bound. It is common to denote CPU affinities as a bitmask, where set bits represent allowed processors to run on. This mask is printed in hex, so a CPU core affinity of 0-1 can be represented by the mask 0x3.

If com.rti.dds.infrastructure.ThreadSettings_t.cpu_rotation is com.rti.dds.infrastructure.ThreadSettingsCpuRotationKind.THREAD_SETTINGS_CPU_RR_ROTATION, each thread will be assigned in round-robin fashion to one of the processors in com.rti.dds.infrastructure.ThreadSettings_t.cpu_list; perhaps thread A to 0, B to 1, and C to 0. Note that the order in which internal middleware threads spawn is unspecified.

Not all of these options may be relevant for all operating systems. Refer to the Platform Notes for further information.

Member Data Documentation

final ThreadSettingsCpuRotationKind THREAD_SETTINGS_CPU_NO_ROTATION
static

Any thread controlled by this QoS can run on any listed processor, as determined by OS scheduling.

final ThreadSettingsCpuRotationKind THREAD_SETTINGS_CPU_RR_ROTATION
static

Threads controlled by this QoS will be assigned one processor from the list in round-robin order.


RTI Connext Java API Version 5.1.0 Copyright © Mon Feb 3 2014 Real-Time Innovations, Inc