JSOR zero copy function (Linux only)

By default, JSOR data transfers involve the use of intermediate buffer copy operations. For large data transfers, you can improve performance by enabling the zero copy function. This function copies data directly from Java™ application memory on one host to Java application memory on a different host, without using the processor on either host.

Note: Start of changes for service refresh 8 fix pack 30The RDMA implementation, which was previously deprecated is removed from IBM® SDK, Java Technology Edition, Version 8.End of changes for service refresh 8 fix pack 30
As shown in the following diagram, the buffer copy process always uses the host operating system, resulting in multiple intermediate copies and computationally expensive context switches between user space and kernel space. The zero copy process uses the host CPU only when buffers are registered for use in direct copy operations. After a buffer is registered, the data transfer happens directly.
This diagram shows an overview of JSOR communication between two hosts. On each host, a Java application with a buffer runs on an instance of the IBM Developer Kit, which contains the JSOR feature. The IBM Developer Kit interacts with an RDMA adapter through the host's operating system. This process is the buffer copy process. The zero copy function is described in the following text by using buffer copy and by using zero copy. The two communication sides are linked at the lowest level by an RDMA conduit, used by an RDMA adapter on each side. At the highest level, each side has a Java application with a buffer.

When application 2, in the diagram, has a buffer available to receive data, the application advertises that availability by registering the buffer for direct data placement. When application 1 has data to send, it writes the data directly into the registered buffer. When the write operation is complete, a write completion message is sent by application 1 to the other side. When application 2 receives this message it can process the transferred data. When the data transfer is complete, application 2 can unregister the receive buffer.

Because of buffer registration overheads, the expected reduction in CPU cycles is achieved only if the data transfer sizes are large. For example, for a single connection you might not see a reduction until the data transfer size exceeds 256 KB. If multiple parallel connections share the same buffer for direct data placement, this data threshold can be reduced.

Because the performance gains are achieved only for large data sizes, the zero copy function is not enabled by default. To enable the function, use the -Dcom.ibm.net.rdma.zeroCopy=true property.

Restriction: Full duplex communication is not currently supported. When one side sends, the other side must receive only.
Restriction: Start of changes for service refresh 2 fix pack 10The JSOR zero copy function is not supported for NIO channels. End of changes for service refresh 2 fix pack 10