Configuration Guide
|
Transport acceleration options enable kernel-bypass acceleration in conjunction with the following vendor solutions:
DBL is a kernel-bypass technology that accelerates sending and receiving UDP traffic and operates with DBL-enabled Myricom 10-Gigabit Ethernet adapter cards for Linux and Microsoft Windows.
DBL does not support fragmentation and reassembly, so do not send messages larger than the MTU size configured on the DBL interface.
DBL acceleration is compatible with the following Ultra Messaging transport types:
To use DBL Transport Acceleration, perform the following steps:
Users of DBL are advised to make use of Dynamic Fragmentation Reduction.
Scope: | context |
Type: | int |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 4.0. |
Value | Description |
---|---|
1 | DBL acceleration is enabled for LBT-RM. |
0 | DBL acceleration is not enabled for LBT-RM. Default for all. |
Scope: | context |
Type: | int |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 4.0. |
Value | Description |
---|---|
1 | DBL acceleration is enabled for LBT-RU. |
0 | DBL acceleration is not enabled for LBT-RU. Default for all. |
Scope: | context |
Type: | int |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 4.0. |
Value | Description |
---|---|
1 | DBL acceleration is enabled for MIM. |
0 | DBL acceleration is not enabled for MIM. Default for all. |
Scope: | context |
Type: | int |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 4.0. |
Value | Description |
---|---|
1 | DBL acceleration is enabled for topic resolution. |
0 | DBL acceleration is not enabled for topic resolution. Default for all. |
In UM documentation, we use the term "Solarflare" for NIC technology that was originally developed by Solarflare Communications Inc. As of this writing, that technology is currently owned by Advanced Micro Devices, Inc (AMD) and sold under their Xilinx brand.
Onload is a kernel-bypass technology available for Linux that accelerates message traffic and operates with Solarflare Ethernet NICs. There is an open-source version of Onload called OpenOnload. Ultra Messaging does not differentiate between the two versions.
Ultra Messaging loads the Onload library dynamically if Onload functionality is specified in the UM configuration. Specifically, the use of any of the following configuration options will lead to UM loading the Onload library:
Onload and Solarflare NICs can support multiple "stacks" which can be used by software to send and receive packets. Different stacks can be used concurrently without interference, which is valuable to latency-sensitive multi-threaded applications. By ensuring that the sockets of a stack are only accessed by a single thread, you can keep latency outliers to a minimum.
Onload defaults to accelerating all sockets within a process on a single stack. But this is not always desired; users often want to accelerate only certain sockets and not others, or assign different sockets to different stacks, depending on their threading needs. The UM configuration options onload_acceleration_stack_name (context), onload_acceleration_stack_name (source), and onload_acceleration_stack_name (receiver), control the stack used by various sockets. These options apply to transport types TCP, LBT-RU, and LBT-RM.
The onload_acceleration_stack_name (source) option controls the Onload stack for the sockets associated with the underlying transport session of a UM source object. Note that the option only applies when the first source object on a given transport session is created. Subsequent sources created on the same transport session do not affect the Onload stack.
Similarly, the onload_acceleration_stack_name (receiver) option controls the Onload stack for the sockets associated with the underlying Transport Sessions of a UM receiver object. Note that unlike a source, a receiver object can be associated with more than one transport session if the topic is published by more than one application instance. If sources come and go, the receiver may join and exit from transport sessions. Note that the stack name option only applies when a receiver object discovers and causes UM to join a transport session. Subsequent receiver objects mapped to the same transport session do not affect the Onload stack. However, when using multiple XSPs, care should be taken to ensure that all transport sessions associate with a given receiver object are handled by the same XSP. Otherwise you can have multiple XSPs handling the same Onload stack, which can introduce latency outliers.
Finally, the onload_acceleration_stack_name (context) option controls the Onload stack for the sockets associated with the entire context. This includes all sockets associated with source and receiver objects, as well as sockets associated with topic resolution, Unicast Immediate Messaging, and a Unix pipe used by UM for internal thread synchronization. Note that if the context stack name option is supplied, any source or receiver scoped stack name options are ignored.
If your application uses the onload_set_stackname API directly for any non-UM sockets, note that after UM accelerates a transport socket, Ultra Messaging resets the stackname to the default for all threads by calling:
Ultra Messaging resets the stackname during source creation and when a receiver matched topic opens a transport session.
To enable Onload socket acceleration for only selected transports, perform the following steps:
Start the application as in the following example:
onload <app_name> [app_options]
Users of Onload are advised to set Dynamic Fragmentation Reduction.
For detailed information about onload, see the Onload User Guide.
Onload does not support IP fragmentation and reassembly, so do not configure UM send datagrams that would require IP fragmentation. See Datagram Max Size and Network MTU.
For many of our customers, having bursts of many tens or even hundreds of thousands of messages per second is not unusual during a trading day. Message rates this high can stress the networking stack, from switch to NIC and driver to UM. Packet loss can happen, leading to high latency if those packets are successfully recovered, or potentially to Unrecoverable Loss.
Informatica is not an expert in tuning Solarflare NICs and Onload. We recommend using the Onload documentation and discussing your use case with Onload support engineers.
However, we can give a few tips based on our own experience and that of our customers.
Scope: | context |
Type: | string |
Default value: | NULL |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in UM 6.16. |
Scope: | receiver |
Type: | string |
Default value: | NULL |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in UM 6.5. |
Scope: | source |
Type: | string |
Default value: | NULL |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in UM 6.5. |
UD (Unreliable Datagram) acceleration is a kernel-bypass technology that accelerates sending and receiving UDP traffic and operates with Mellanox 10-Gigabit Ethernet or InfiniBand adapter cards for 64-bit Linux on X86 platforms.
UD acceleration does not support fragmentation and reassembly, so do not send messages larger than the MTU size configured on the Mellanox interface.
UD acceleration is available for the following Ultra Messaging transport types:
To use UD acceleration, perform the following steps:
Users of UD acceleration are advised to make use of Dynamic Fragmentation Reduction.
Scope: | context |
Type: | int |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 5.2. |
Value | Description |
---|---|
1 | Accelerated Topic Resolution is enabled. |
0 | Accelerated Topic Resolution is not enabled. Default for all. |
Scope: | context |
Type: | int |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 4.1. |
Value | Description |
---|---|
1 | Accelerated Multicast is enabled. |
0 | Accelerated Multicast is not enabled. Default for all. |