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:
Chuck Lever 2021-10-04 10:16:26 -04:00 committed by J. Bruce Fields
parent 45f1358468
commit 22a027e8c0
2 changed files with 19 additions and 0 deletions

View File

@ -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),

View File

@ -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];