RTI Connext Java API  Version 5.0.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.

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.

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.0.0 Copyright © Thu Aug 30 2012 Real-Time Innovations, Inc