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. Start of changes for service refresh 2 fix pack 10Support for NIO channel applications is added in this update.End of changes for service refresh 2 fix pack 10

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.

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
  • Start of changes for service refresh 2 fix pack 10RDMA_PollEnd of changes for service refresh 2 fix pack 10
  • Start of changes for service refresh 2 fix pack 10RDMA_FcntlEnd of changes for service refresh 2 fix pack 10
  • Start of changes for service refresh 2 fix pack 10RDMA_FinishConnectEnd of changes for service refresh 2 fix pack 10
For more information about tracing, trace components, and tracepoints, see the following topics:

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)