JSOR system requirements and supported APIs (Linux only)

Java™ client and server applications must have specific hardware and runtime software installed in order to use the JSOR features. JSOR supports a limited set of APIs and classes.

Note: The RDMA implementation is deprecated and will likely be removed in a future release of IBM® SDK, Java Technology Edition, Version 8. A possible alternative is the open source Libfabric library.

Supported hardware and runtime requirements

The following prerequisites apply:
  • This feature is available on the following platforms and Remote Direct Memory Access (RDMA) adapters:
    • Linux® 32-bit x-86 with either InfiniBand (IB) or RDMA over Converged Ethernet (RoCE)
    • Linux AMD64/EM64T with IB or RoCE
    • Linux 32-bit POWER® with RoCE
    • Linux 64-bit POWER with RoCE
    • Start of changes for service refresh 2Linux 64-bit POWER8® (Little Endian) with IBEnd of changes for service refresh 2
    The adapters must be interconnected by a suitable high-performance switch.
  • You must install OpenFabrics Enterprise Distribution (OFED) v1.5.3 or later, which can be downloaded from the OpenFabrics Alliance website: https://www.openfabrics.org/index.php/resources/ofed-for-linux-ofed-for-windows/ofed-overview.html. During run time, symbols from the following libraries are dynamically located and loaded: librdmacm.so and libibverbs.so. These libraries are provided by the OFED run time.
  • Users must have adequate permissions to lock memory on both host systems. RDMA socket buffers must be locked, or pinned, to avoid the operating system swapping out the memory pages during data transfers.

Tested environments

  • Mellanox MT26428 ConnectX Virtual Protocol Interconnect (VPI) PCI Express® (PCIe) hosts, which are interconnected by a Voltaire 40 GB InfiniBand Switch.
  • Mellanox MT25208 InfiniHost III Ex hosts, which are interconnected by a Cisco 4x InfiniBand Switch.
  • Mellanox MT26448 ConnectX EN PCIe hosts, which are directly interconnected.
  • Mellanox MT4099 ConnectX-3 VPI hosts, which are directly interconnected.

Supported APIs and classes

Support is limited for the following set of APIs and classes:
  • java.net.Socket and java.net.ServerSocket excludes support for the following methods:
    • Socket(Proxy proxy)
    • Socket(SocketImpl impl)
    • setSocketFactory(SocketImplFactory fac)
    • setPerformancePreferences(int connectionTime, int latency, int bandwidth).
  • java.io.InputStream, includes support for the following methods:
    • available()
    • close()
    • mark(int readlimit)
    • markSupported()
    • read()
    • read(byte[] b)
    • read(byte[] b, int off, int len)
    • reset()
    • skip()
  • java.io.OuputStream includes support for the following methods:
    • close()
    • flush()
    • write(byte[] b)
    • write(byte[] b, int off, int len)
    • write(int b)
  • java.net.SocketOptions includes support for the following option:
    • SO_TIMEOUT
    • TCP_NODELAY
    • SO_LINGER
    • SO_BINDADDR
    • SO_REUSEADDR
    • SO_BROADCAST
    • SO_SNDBUF
    • SO_RCVBUF
    • SO_KEEPALIVE
    • SO_OOBINLINE
    At run time, the following options are acted upon at the RDMA socket level:
    • SO_BINDADDR
    • SO_REUSEADDR
    • SO_SNDBUF
    • SO_RCVBUF
    Note: SO_SNDBUF and SO_RCVBUF are effective immediately after socket creation, but before a connect or bind operation takes place on that socket.
    For the remaining socket options, the JSOR run time falls back to the TCP/IP implementation.
Start of changes for service refresh 2 fix pack 10For NIO stream socket applications, the following Java classes are supported:
  • java.nio.channels.SocketChannel
  • java.nio.channels.ServerSocketChannel
  • java.nio.channels.Selector
End of changes for service refresh 2 fix pack 10

To manage socket send and receive buffer sizes, use the Java environment variables included within JSOR. For more information, see JSOR environment settings (Linux only).