RDS: add receive message trace used by application
Socket option to tap receive path latency in various stages in nano seconds. It can be enabled on selective sockets using using SO_RDS_MSG_RXPATH_LATENCY socket option. RDS will return the data to application with RDS_CMSG_RXPATH_LATENCY in defined format. Scope is left to add more trace points for future without need of change in the interface. Reviewed-by: Sowmini Varadhan <sowmini.varadhan@oracle.com> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
This commit is contained in:
@@ -52,6 +52,13 @@
|
||||
#define RDS_GET_MR_FOR_DEST 7
|
||||
#define SO_RDS_TRANSPORT 8
|
||||
|
||||
/* Socket option to tap receive path latency
|
||||
* SO_RDS: SO_RDS_MSG_RXPATH_LATENCY
|
||||
* Format used struct rds_rx_trace_so
|
||||
*/
|
||||
#define SO_RDS_MSG_RXPATH_LATENCY 10
|
||||
|
||||
|
||||
/* supported values for SO_RDS_TRANSPORT */
|
||||
#define RDS_TRANS_IB 0
|
||||
#define RDS_TRANS_IWARP 1
|
||||
@@ -77,6 +84,12 @@
|
||||
* the same as for the GET_MR setsockopt.
|
||||
* RDS_CMSG_RDMA_STATUS (recvmsg)
|
||||
* Returns the status of a completed RDMA operation.
|
||||
* RDS_CMSG_RXPATH_LATENCY(recvmsg)
|
||||
* Returns rds message latencies in various stages of receive
|
||||
* path in nS. Its set per socket using SO_RDS_MSG_RXPATH_LATENCY
|
||||
* socket option. Legitimate points are defined in
|
||||
* enum rds_message_rxpath_latency. More points can be added in
|
||||
* future. CSMG format is struct rds_cmsg_rx_trace.
|
||||
*/
|
||||
#define RDS_CMSG_RDMA_ARGS 1
|
||||
#define RDS_CMSG_RDMA_DEST 2
|
||||
@@ -87,6 +100,7 @@
|
||||
#define RDS_CMSG_ATOMIC_CSWP 7
|
||||
#define RDS_CMSG_MASKED_ATOMIC_FADD 8
|
||||
#define RDS_CMSG_MASKED_ATOMIC_CSWP 9
|
||||
#define RDS_CMSG_RXPATH_LATENCY 11
|
||||
|
||||
#define RDS_INFO_FIRST 10000
|
||||
#define RDS_INFO_COUNTERS 10000
|
||||
@@ -171,6 +185,25 @@ struct rds_info_rdma_connection {
|
||||
uint32_t rdma_mr_size;
|
||||
};
|
||||
|
||||
/* RDS message Receive Path Latency points */
|
||||
enum rds_message_rxpath_latency {
|
||||
RDS_MSG_RX_HDR_TO_DGRAM_START = 0,
|
||||
RDS_MSG_RX_DGRAM_REASSEMBLE,
|
||||
RDS_MSG_RX_DGRAM_DELIVERED,
|
||||
RDS_MSG_RX_DGRAM_TRACE_MAX
|
||||
};
|
||||
|
||||
struct rds_rx_trace_so {
|
||||
u8 rx_traces;
|
||||
u8 rx_trace_pos[RDS_MSG_RX_DGRAM_TRACE_MAX];
|
||||
};
|
||||
|
||||
struct rds_cmsg_rx_trace {
|
||||
u8 rx_traces;
|
||||
u8 rx_trace_pos[RDS_MSG_RX_DGRAM_TRACE_MAX];
|
||||
u64 rx_trace[RDS_MSG_RX_DGRAM_TRACE_MAX];
|
||||
};
|
||||
|
||||
/*
|
||||
* Congestion monitoring.
|
||||
* Congestion control in RDS happens at the host connection
|
||||
|
Reference in New Issue
Block a user