Skip to content

Commit 1c443ef

Browse files
chuckleveramschuma-ntap
authored andcommitted
xprtrdma: Add trace points to instrument MR allocation and recovery
Signed-off-by: Chuck Lever <[email protected]> Signed-off-by: Anna Schumaker <[email protected]>
1 parent 2937fed commit 1c443ef

File tree

2 files changed

+60
-3
lines changed

2 files changed

+60
-3
lines changed

include/trace/events/rpcrdma.h

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,37 @@ DECLARE_EVENT_CLASS(xprtrdma_reply_event,
5151
), \
5252
TP_ARGS(rep))
5353

54+
DECLARE_EVENT_CLASS(xprtrdma_rxprt,
55+
TP_PROTO(
56+
const struct rpcrdma_xprt *r_xprt
57+
),
58+
59+
TP_ARGS(r_xprt),
60+
61+
TP_STRUCT__entry(
62+
__field(const void *, r_xprt)
63+
__string(addr, rpcrdma_addrstr(r_xprt))
64+
__string(port, rpcrdma_portstr(r_xprt))
65+
),
66+
67+
TP_fast_assign(
68+
__entry->r_xprt = r_xprt;
69+
__assign_str(addr, rpcrdma_addrstr(r_xprt));
70+
__assign_str(port, rpcrdma_portstr(r_xprt));
71+
),
72+
73+
TP_printk("peer=[%s]:%s r_xprt=%p",
74+
__get_str(addr), __get_str(port), __entry->r_xprt
75+
)
76+
);
77+
78+
#define DEFINE_RXPRT_EVENT(name) \
79+
DEFINE_EVENT(xprtrdma_rxprt, name, \
80+
TP_PROTO( \
81+
const struct rpcrdma_xprt *r_xprt \
82+
), \
83+
TP_ARGS(r_xprt))
84+
5485
DECLARE_EVENT_CLASS(xprtrdma_rdch_event,
5586
TP_PROTO(
5687
const struct rpc_task *task,
@@ -240,6 +271,31 @@ DECLARE_EVENT_CLASS(xprtrdma_mr,
240271
** Call events
241272
**/
242273

274+
TRACE_EVENT(xprtrdma_createmrs,
275+
TP_PROTO(
276+
const struct rpcrdma_xprt *r_xprt,
277+
unsigned int count
278+
),
279+
280+
TP_ARGS(r_xprt, count),
281+
282+
TP_STRUCT__entry(
283+
__field(const void *, r_xprt)
284+
__field(unsigned int, count)
285+
),
286+
287+
TP_fast_assign(
288+
__entry->r_xprt = r_xprt;
289+
__entry->count = count;
290+
),
291+
292+
TP_printk("r_xprt=%p: created %u MRs",
293+
__entry->r_xprt, __entry->count
294+
)
295+
);
296+
297+
DEFINE_RXPRT_EVENT(xprtrdma_nomrs);
298+
243299
DEFINE_RDCH_EVENT(xprtrdma_read_chunk);
244300
DEFINE_WRCH_EVENT(xprtrdma_write_chunk);
245301
DEFINE_WRCH_EVENT(xprtrdma_reply_chunk);
@@ -423,6 +479,7 @@ DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_li_wake);
423479
DEFINE_MR_EVENT(xprtrdma_localinv);
424480
DEFINE_MR_EVENT(xprtrdma_dma_unmap);
425481
DEFINE_MR_EVENT(xprtrdma_remoteinv);
482+
DEFINE_MR_EVENT(xprtrdma_recover_mr);
426483

427484
/**
428485
** Reply events

net/sunrpc/xprtrdma/verbs.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -998,7 +998,7 @@ rpcrdma_mr_recovery_worker(struct work_struct *work)
998998
mr = rpcrdma_mr_pop(&buf->rb_stale_mrs);
999999
spin_unlock(&buf->rb_recovery_lock);
10001000

1001-
dprintk("RPC: %s: recovering MR %p\n", __func__, mr);
1001+
trace_xprtrdma_recover_mr(mr);
10021002
mr->mr_xprt->rx_ia.ri_ops->ro_recover_mr(mr);
10031003

10041004
spin_lock(&buf->rb_recovery_lock);
@@ -1054,7 +1054,7 @@ rpcrdma_mrs_create(struct rpcrdma_xprt *r_xprt)
10541054
r_xprt->rx_stats.mrs_allocated += count;
10551055
spin_unlock(&buf->rb_mrlock);
10561056

1057-
dprintk("RPC: %s: created %u MRs\n", __func__, count);
1057+
trace_xprtrdma_createmrs(r_xprt, count);
10581058
}
10591059

10601060
static void
@@ -1310,7 +1310,7 @@ rpcrdma_mr_get(struct rpcrdma_xprt *r_xprt)
13101310
return mr;
13111311

13121312
out_nomrs:
1313-
dprintk("RPC: %s: no MRs available\n", __func__);
1313+
trace_xprtrdma_nomrs(r_xprt);
13141314
if (r_xprt->rx_ep.rep_connected != -ENODEV)
13151315
schedule_delayed_work(&buf->rb_refresh_worker, 0);
13161316

0 commit comments

Comments
 (0)