To reduce false cacheline sharing, separate counters that are likely to be accessed in the Call path from those accessed in the Reply path. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> --- Hi Anna- This was the final xprtrdma change I've prepared for v4.14. There might be one more, on top of Trond's recent lock contention patches. I don't know if Trond intends to merge those changes into v4.14, but they are going to conflict with the xprtrdma changes I've sent you so far. A possible strategy for resolving the conflict is to apply my changes, which restructure rpcrdma_reply_handler, first. Then apply Trond's changes, which should be straightforward to adapt to the restructured code. Then I can send you the extra patch I mentioned above, respun to apply on all of those, either to accompany the initial submission, or as an -rc fix. Another way to do this would be for you and Trond to provide a for-v4.14 branch with the lock contention changes applied. Then I would rework all the xprtrdma patches to apply on that, and add the extra patch on top of the xprtrdma patches I've sent so far, and send them to you to be reviewed and applied to for-4.14. net/sunrpc/xprtrdma/xprt_rdma.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/net/sunrpc/xprtrdma/xprt_rdma.h b/net/sunrpc/xprtrdma/xprt_rdma.h index 546c264..45dab24 100644 --- a/net/sunrpc/xprtrdma/xprt_rdma.h +++ b/net/sunrpc/xprtrdma/xprt_rdma.h @@ -441,24 +441,27 @@ struct rpcrdma_create_data_internal { * Statistics for RPCRDMA */ struct rpcrdma_stats { + /* accessed when sending a call */ unsigned long read_chunk_count; unsigned long write_chunk_count; unsigned long reply_chunk_count; - unsigned long long total_rdma_request; - unsigned long long total_rdma_reply; + /* rarely accessed error counters */ unsigned long long pullup_copy_count; - unsigned long long fixup_copy_count; unsigned long hardway_register_count; unsigned long failed_marshal_count; unsigned long bad_reply_count; - unsigned long nomsg_call_count; - unsigned long bcall_count; unsigned long mrs_recovered; unsigned long mrs_orphaned; unsigned long mrs_allocated; + + /* accessed when receiving a reply */ + unsigned long long total_rdma_reply; + unsigned long long fixup_copy_count; unsigned long local_inv_needed; + unsigned long nomsg_call_count; + unsigned long bcall_count; }; /* -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html