SUNRPC: Add trace event when alloc_pages_bulk() makes no progress
This is an operational low memory situation that needs to be flagged. The new tracepoint records a timestamp and the nfsd thread that failed to allocate pages. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
45f1358468
commit
22a027e8c0
|
@ -1859,6 +1859,24 @@ TRACE_EVENT(svc_wake_up,
|
|||
TP_printk("pid=%d", __entry->pid)
|
||||
);
|
||||
|
||||
TRACE_EVENT(svc_alloc_arg_err,
|
||||
TP_PROTO(
|
||||
unsigned int pages
|
||||
),
|
||||
|
||||
TP_ARGS(pages),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned int, pages)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->pages = pages;
|
||||
),
|
||||
|
||||
TP_printk("pages=%u", __entry->pages)
|
||||
);
|
||||
|
||||
TRACE_EVENT(svc_handle_xprt,
|
||||
TP_PROTO(struct svc_xprt *xprt, int len),
|
||||
|
||||
|
|
|
@ -687,6 +687,7 @@ static int svc_alloc_arg(struct svc_rqst *rqstp)
|
|||
set_current_state(TASK_RUNNING);
|
||||
return -EINTR;
|
||||
}
|
||||
trace_svc_alloc_arg_err(pages);
|
||||
schedule_timeout(msecs_to_jiffies(500));
|
||||
}
|
||||
rqstp->rq_page_end = &rqstp->rq_pages[pages];
|
||||
|
|
Loading…
Reference in New Issue