Skip to content

Commit

Permalink
sunrpc: Move trace_svc_xprt_dequeue()
Browse files Browse the repository at this point in the history
Reduce the amount of noise generated by trace_svc_xprt_dequeue by
moving it to the end of svc_get_next_xprt. This generates exactly
one trace event when a ready xprt is found, rather than spurious
events when there is no work to do. The empty events contain no
information that can't be obtained simply by tracing function calls
to svc_xprt_dequeue.

A small additional benefit is simplification of the svc_xprt_event
trace class, which no longer has to handle the case when the @xprt
parameter is NULL.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
  • Loading branch information
Chuck Lever authored and J. Bruce Fields committed Apr 3, 2018
1 parent 03edb90 commit caa3e10
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 15 deletions.
16 changes: 5 additions & 11 deletions include/trace/events/sunrpc.h
Original file line number Diff line number Diff line change
Expand Up @@ -634,24 +634,18 @@ DECLARE_EVENT_CLASS(svc_xprt_event,
TP_STRUCT__entry(
__field(struct svc_xprt *, xprt)
__field(unsigned long, flags)
__dynamic_array(unsigned char, addr, xprt != NULL ?
xprt->xpt_remotelen : 0)
__dynamic_array(unsigned char, addr, xprt->xpt_remotelen)
),

TP_fast_assign(
__entry->xprt = xprt;
if (xprt) {
memcpy(__get_dynamic_array(addr),
&xprt->xpt_remote,
xprt->xpt_remotelen);
__entry->flags = xprt->xpt_flags;
} else
__entry->flags = 0;
__entry->flags = xprt->xpt_flags;
memcpy(__get_dynamic_array(addr),
&xprt->xpt_remote, xprt->xpt_remotelen);
),

TP_printk("xprt=0x%p addr=%pIScp flags=%s", __entry->xprt,
__get_dynamic_array_len(addr) != 0 ?
(struct sockaddr *)__get_dynamic_array(addr) : NULL,
(struct sockaddr *)__get_dynamic_array(addr),
show_svc_xprt_flags(__entry->flags))
);

Expand Down
5 changes: 1 addition & 4 deletions net/sunrpc/svc_xprt.c
Original file line number Diff line number Diff line change
Expand Up @@ -454,13 +454,9 @@ static struct svc_xprt *svc_xprt_dequeue(struct svc_pool *pool)
struct svc_xprt, xpt_ready);
list_del_init(&xprt->xpt_ready);
svc_xprt_get(xprt);

dprintk("svc: transport %p dequeued, inuse=%d\n",
xprt, kref_read(&xprt->xpt_ref));
}
spin_unlock_bh(&pool->sp_lock);
out:
trace_svc_xprt_dequeue(xprt);
return xprt;
}

Expand Down Expand Up @@ -734,6 +730,7 @@ static struct svc_xprt *svc_get_next_xprt(struct svc_rqst *rqstp, long timeout)
rqstp->rq_chandle.thread_wait = 5*HZ;
else
rqstp->rq_chandle.thread_wait = 1*HZ;
trace_svc_xprt_dequeue(rqstp->rq_xprt);
return rqstp->rq_xprt;
}

Expand Down

0 comments on commit caa3e10

Please sign in to comment.