mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
xprtrdma: Add tracepoints showing FastReg WRs and remote invalidation
The Send signaling logic is a little subtle, so add some
observability around it. For every xprtrdma_mr_fastreg event, there
should be an xprtrdma_mr_localinv or xprtrdma_mr_reminv event.
When these tracepoints are enabled, we can see exactly when an MR is
DMA-mapped, registered, invalidated (either locally or remotely) and
then DMA-unmapped.
kworker/u25:2-190 [000] 787.979512: xprtrdma_mr_map: task:351@5 mr.id=4 nents=2 5608@0x8679e0c8f6f56000:0x00000503 (TO_DEVICE)
kworker/u25:2-190 [000] 787.979515: xprtrdma_chunk_read: task:351@5 pos=148 5608@0x8679e0c8f6f56000:0x00000503 (last)
kworker/u25:2-190 [000] 787.979519: xprtrdma_marshal: task:351@5 xid=0x8679e0c8: hdr=52 xdr=148/5608/0 read list/inline
kworker/u25:2-190 [000] 787.979525: xprtrdma_mr_fastreg: task:351@5 mr.id=4 nents=2 5608@0x8679e0c8f6f56000:0x00000503 (TO_DEVICE)
kworker/u25:2-190 [000] 787.979526: xprtrdma_post_send: task:351@5 cq.id=0 cid=73 (2 SGEs)
...
kworker/5:1H-219 [005] 787.980567: xprtrdma_wc_receive: cq.id=1 cid=161 status=SUCCESS (0/0x0) received=164
kworker/5:1H-219 [005] 787.980571: xprtrdma_post_recvs: peer=[192.168.100.55]:20049 r_xprt=0xffff8884974d4000: 0 new recvs, 70 active (rc 0)
kworker/5:1H-219 [005] 787.980573: xprtrdma_reply: task:351@5 xid=0x8679e0c8 credits=64
kworker/5:1H-219 [005] 787.980576: xprtrdma_mr_reminv: task:351@5 mr.id=4 nents=2 5608@0x8679e0c8f6f56000:0x00000503 (TO_DEVICE)
kworker/5:1H-219 [005] 787.980577: xprtrdma_mr_unmap: mr.id=4 nents=2 5608@0x8679e0c8f6f56000:0x00000503 (TO_DEVICE)
Note that I've moved the xprtrdma_post_send tracepoint so that event
always appears after the xprtrdma_mr_fastreg tracepoint. Otherwise
the event log looks counterintuitive (FastReg is always supposed to
happen before Send).
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
committed by
Trond Myklebust
parent
b3ce7a25f4
commit
4ddd0fc32c
@@ -1010,7 +1010,9 @@ TRACE_EVENT(xprtrdma_frwr_maperr,
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
DEFINE_MR_EVENT(fastreg);
|
||||||
DEFINE_MR_EVENT(localinv);
|
DEFINE_MR_EVENT(localinv);
|
||||||
|
DEFINE_MR_EVENT(reminv);
|
||||||
DEFINE_MR_EVENT(map);
|
DEFINE_MR_EVENT(map);
|
||||||
|
|
||||||
DEFINE_ANON_MR_EVENT(unmap);
|
DEFINE_ANON_MR_EVENT(unmap);
|
||||||
|
|||||||
@@ -400,6 +400,7 @@ int frwr_send(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req)
|
|||||||
list_for_each_entry(mr, &req->rl_registered, mr_list) {
|
list_for_each_entry(mr, &req->rl_registered, mr_list) {
|
||||||
struct rpcrdma_frwr *frwr;
|
struct rpcrdma_frwr *frwr;
|
||||||
|
|
||||||
|
trace_xprtrdma_mr_fastreg(mr);
|
||||||
frwr = &mr->frwr;
|
frwr = &mr->frwr;
|
||||||
|
|
||||||
frwr->fr_cqe.done = frwr_wc_fastreg;
|
frwr->fr_cqe.done = frwr_wc_fastreg;
|
||||||
@@ -440,6 +441,7 @@ void frwr_reminv(struct rpcrdma_rep *rep, struct list_head *mrs)
|
|||||||
list_for_each_entry(mr, mrs, mr_list)
|
list_for_each_entry(mr, mrs, mr_list)
|
||||||
if (mr->mr_handle == rep->rr_inv_rkey) {
|
if (mr->mr_handle == rep->rr_inv_rkey) {
|
||||||
list_del_init(&mr->mr_list);
|
list_del_init(&mr->mr_list);
|
||||||
|
trace_xprtrdma_mr_reminv(mr);
|
||||||
frwr_mr_put(mr);
|
frwr_mr_put(mr);
|
||||||
break; /* only one invalidated MR per RPC */
|
break; /* only one invalidated MR per RPC */
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user