2. SuperSockets Configuration

The following sections describe the configuration files that specifically control the behaviour of Dolphin SuperSockets. Next to these files, SuperSockets retrieve important configuration information from dishosts.conf as well (see above).

2.1. supersockets_profiles.conf

/etc/dis/supersockets_profiles.conf defines system-wide protocol settings for all SuperSockets applications using LD_PRELOAD. It can be used to fine-tune the behaviour of SuperSockets to specific requirements or applications. However, in most cases, the default setting will work well, and you need a good understanding to use these options usefully.

The options set in /etc/dis/supersockets_profiles.conf are read when a process opens its first socket, and then applied to all sockets that this process will open. This means, that established socket connections, and sockets that are created by processes that had already sockets open before supersockets_profiles.conf was changed, are not effected by changes you make to this file.

Additionally, all settings of supersockets_profiles.conf described below can be overridden by environment variables named SSOCKS_<option>. Example:

export SSOCKS_DISABLE_FALLBACK=1

Empty lines and lines starting with # are ignored.

SYSTEM_POLL [ 0 | 1 ]

Usage of poll/select optimization. Default is 0 which means that the SuperSockets optimization for the poll() and select() system calls is used. This optimization typically reduces the latency without increasing the CPU load. To only use the native system methods for poll() and select(), set this value to 1.

RX_POLL_TIME <int>

Receive poll time [µs]. Default is 30. Increasing this value may reduce the latency as the CPU will spin longer to wait for new data until it blocks sleeping. Reducing this value will send the CPU to sleep earlier, but this may increase message latency.

TX_POLL_TIME <int>

Transmit poll time [µs]. Default is 0, which means that the CPU does not spin at all when a no buffers at the receiving side are available. Instead, it will immediately block until the receiver reads data from these buffers (which makes buffer space available again for sending). The situation of no available receive buffers does rarely occur, and increasing this value is not recommended.

MSQ_BUF_SIZE <int>

Message buffer size [byte]. Default is 128KB. This value determines how much data can be sent without the receiver reading it. It has no significant impact on bandwidth.

MIN_DMA_SIZE <int>

Minimum message size for DMA [byte]. Default is 0 (DMA disabled).

MAX_DMA_GATHER <int>

Maximum number of messages gather into a single DMA transfer. Default is 1.

MIN_SHORT_SIZE <int>

Switch point [byte] from INLINE to SHORT protocol. Default depends on driver.

MIN_LONG_SIZE <int>

Switch point [byte] from SHORT to LONG protocol. Default depends on driver.

FAST_GTOD [ 0 | 1 ]

Usage of accelerated gettimeofday(). Default is 0 which disables this optimization. Set to 1 to enable it.

DISABLE_FALLBACK [ 0 | 1 ]

Control fall-back from SuperSockets to native sockets. Default is 0, which means fall-back (and fall-forward) is enabled. To ensure that only SuperSockets are used (i.e. for benchmarking), set it to 1.

ASYNC_PIO [ 0 | 1 ]

Usage of fully asynchronous transfers. Default is 0, which means that all data transfers are performed by the CPU running the process that called the send function. To enable asynchronous transfers, set this option to 1. If enabled, the SHORT and LONG protocol is processed by a dedicated kernel thread. By this, the sending process is available immediately, and the actual data transfer is performed asynchronously. This generally increases throughput and reduces CPU load with affecting small message latency.

FAST_LOOPBACK [ 0 | 1 ]

Control acceleration of loop-back connections. Default is 1, that means that all loop-back connections are accelerated by SuperSockets. Set it to 0 if you don't want loop-back connections to by handled by SuperSockets.

2.2. supersockets_ports.conf

/etc/dis/supersockets_ports.conf is used to configure the port filter for SuperSockets. If no such file exists all ports will be enabled by default. It is, however, recommended to exclude all system ports. A suitable port configuration file is part of the SuperSockets software package. You can adjust it to your specific needs.

To make changes in supersockets_ports.conf effective, you need to run dis_ssocks_cfg on this Cluster Node. Changes do not affect established socket connections.

# Default port configuration for Dolphin SuperSockets
# Ports specifically enabled or disabled to run over SuperSockets.
# Any socket not specifically covered, is handled by the default:

EnablePortsByDefault yes

# Recommended settings:

# Disable the privileged ports used by system services.
DisablePortRange        tcp     1 1023
DisablePortRange        udp     1 1023

# Disable Dolphin Interconnect Manager service ports. 
DisablePortRange        tcp     3443 3444

The following keywords are valid:

EnablePortsByDefault [ yes | no ]

Determines the policy for unspecified ports.

DisablePortRange [ tcp | udp ] <from> <to>

Explicitly disables the given port range for the given socket type.

EnablePortRange [ tcp | udp ] <from> <to>

Explicitly enables the given port range for the given socket type.