JSOR 系統需求及支援的 API (僅限Linux )
Java™ 用戶端和伺服器應用程式必須已安裝特定的硬體和執行時期軟體,才能使用 JSOR 特性。 JSOR 支援一組有限的 API 和類別。
附註: RDMA 實作已淘汰,並可能在未來版本 IBM® SDK Java Technology Edition 第 8 版中移除。 可能的替代方案是開放程式碼 Libfabric 程式庫。
支援的硬體和執行時期需求
下列必要條件適用:
- 下列平台及「遠端直接存取記憶體 (RDMA)」配接卡上提供此特性:
- Linux® 32 位元 x-86 ,具有 InfiniBand (IB) 或 RDMA over Converged Ethernet (RoCE)
- Linux AMD64/EM64T 搭配 IB 或 RoCE
- Linux 32 位元 POWER ® 搭配 RoCE
- Linux 64 位元 POWER (含 RoCE )
Linux 64 位元 POWER8® (Little Endian) with IB
- 您必須安裝 OpenFabrics Enterprise Distribution (OFED) v1.5.3 或更新版本,您可以從 OpenFabrics Alliance 網站下載: https://www.openfabrics.org/index.php/resources/ofed-for-linux-ofed-for-windows/ofed-overview.html。 在執行時期期間,會動態尋找並載入下列程式庫中的符號: librdmacm.so 和 libibverbs.so。 這些程式庫由 OFED 執行時期提供。
- 使用者必須具有足夠的許可權,才能鎖定兩個主機系統上的記憶體。 必須鎖定或固定 RDMA Socket 緩衝區,以避免作業系統在資料傳送期間交換記憶體頁面。
已測試環境
- Mellanox MT26428 ConnectX 虛擬通訊協定交互連接 (VPI) PCI Express ® (PCIe) 主機,它們透過 Voltaire 40 GB InfiniBand 交換器交互連接。
- Mellanox MT25208 InfiniHost III Ex 主機,由 Cisco 4x InfiniBand 交換器互連。
- Mellanox MT26448 ConnectX EN PCIe 主機 (直接交互連接)。
- Mellanox MT4099 ConnectX-3 VPI 主機,它們直接交互連接。
支援的 API 和類別
下列 API 和類別集的支援受到限制:
- java.net.Socket 及 java.net.ServerSocket 會排除下列方法的支援:
- Socket(Proxy proxy)
- Socket(SocketImpl impl)
- setSocketFactory(SocketImplFactory fac)
- setPerformancePreferences(int connectionTime, int latency, int bandwidth).
- java.io.InputStream,包括下列方法的支援:
- available()
- close()
- mark(int readlimit)
- markSupported()
- read()
- read(byte[] b)
- read(byte[] b, int off, int len)
- reset()
- skip()
- java.io.OuputStream 包括下列方法的支援:
- close()
- flush()
- write(byte[] b)
- write(byte[] b, int off, int len)
- write(int b)
- java.net.SocketOptions 包括下列選項的支援:
- SO_TIMEOUT
- TCP_NODELAY
- SO_LINGER
- SO_BINDADDR
- SO_REUSEADDR
- SO_BROADCAST
- SO_SNDBUF
- SO_RCVBUF
- SO_KEEPALIVE
- SO_OOBINLINE
- SO_BINDADDR
- SO_REUSEADDR
- SO_SNDBUF
- SO_RCVBUF
附註: 在 Socket 建立之後,但在該 Socket 上進行連接或連結作業之前, SO_SNDBUF 及 SO_RCVBUF 立即生效。對於其餘 Socket 選項, JSOR 執行時期會回復到 TCP/IP 實作。

- java.nio.channels.SocketChannel
- java.nio.channels.ServerSocketChannel
- java.nio.channels.Selector

如果要管理 Socket 傳送和接收緩衝區大小,請使用 JSOR 所包含的 Java 環境變數。 如需相關資訊,請參閱 JSOR 環境設定 (僅限Linux )。