JSOR trace options (Linux only)
You can trace Java™ Sockets over Remote Direct
Memory Access (JSOR) runtime calls down to the native level by using the standard trace options,
including sending the trace output to a file. Support for NIO
channel applications is added in this update.
Note:
The RDMA implementation which was previously
deprecated is removed from IBM® SDK, Java Technology Edition, Version 8.


The JSOR component has more than 200 tracepoint identifiers at the native level alone. To trace the entire RDMA stack, use JSOR component tracing with Java method tracing and NET or NIO component tracing.
RDMA JNI layer tracing includes approximately 85 tracing points that are covered by the NET and NIO tracing components. RDMA Native layer tracing includes approximately 158 tracing points and is covered by the JSOR tracing component.
Look for the following native methods in the trace output to understand call flow at the library level:
- RDMA_Accept
- RDMA_Available
- RDMA_Bind
- RDMA_Close
- RDMA_Connect
- RDMA_Destroy
- RDMA_GetSockOpt
- RDMA_Init
- RDMA_Listen
- RDMA_Read
- RDMA_ReadDirect
- RDMA_Send
- RDMA_SendDirect
- RDMA_SetSockOpt
- RDMA_Shutdown
- RDMA_Socket
- RDMA_Timeout
RDMA_Poll
RDMA_Fcntl
RDMA_FinishConnect
For more information about tracing, trace components, and tracepoints, see the following topics:
- -Xtrace in the OpenJ9 user documentation
- Determining the tracepoint ID of a trace point in the J9 VM reference
Examples
To trace only RDMA Java method calls, use the following
command line option:
-Xtrace:methods={java/net/RDMA.*},iprint=mt
To trace RDMA Java method calls and JNI method calls, use
the following command line
option:
-Xtrace:methods={java/net/RDMA.*},iprint=mt,iprint=NET
To trace RDMA Java method calls, JNI method calls and
native method calls, use the following command line
option:
-Xtrace:methods={java/net/RDMA.*},iprint=mt,iprint=NET,iprint=JSOR
Here is some sample trace output from a simple server, which accepts an RDMA connection and
receives a message from the
client:
01:49:07.061*0x20d2c100 JSOR.0 > RDMA_Init()
01:49:07.061 0x20d2c100 JSOR.39 > initverbs()
01:49:07.062 0x20d2c100 JSOR.43 < initverbs(rc=0)
01:49:07.062 0x20d2c100 JSOR.46 > initjsor()
01:49:07.064 0x20d2c100 JSOR.47 < initjsor(rc=0)
01:49:07.064 0x20d2c100 JSOR.3 < RDMA_Init(rc=0)
01:49:07.077 0x20d2c100 JSOR.25 > RDMA_Socket(fd=60)
01:49:07.077 0x20d2c100 JSOR.27 < RDMA_Socket(rsockp=00007FB690355150, fd=60, state=0x0)
01:49:07.078 0x20d2c100 JSOR.28 > RDMA_Bind(rsockp=00007FB690355150, fd=60, my_addr=00007FB6957DE620, state=0x0)
01:49:07.078 0x20d2c100 JSOR.50 > create_event_channel(rsockp=00007FB690355150, fd=60, state=0x0)
01:49:07.078 0x20d2c100 JSOR.52 < create_event_channel(state=0x0, rc=0)
01:49:07.078 0x20d2c100 JSOR.53 > create_id(rsockp=00007FB690355150, fd=60, state=0x0)
01:49:07.078 0x20d2c100 JSOR.55 < create_id(state=0x0, rc=0)
01:49:07.078 0x20d2c100 JSOR.220 > get_addrinfo_from_sockaddr(address=00007FB6957DE620, len=28)