SUNRPC: Remove the .svo_enqueue_xprt method
We have never been able to track down and address the underlying
cause of the performance issues with workqueue-based service
support. svo_enqueue_xprt is called multiple times per RPC, so
it adds instruction path length, but always ends up at the same
function: svc_xprt_do_enqueue(). We do not anticipate needing
this flexibility for dynamic nfsd thread management support.
As a micro-optimization, remove .svo_enqueue_xprt because
Spectre/Meltdown makes virtual function calls more costly.
This change essentially reverts commit b9e13cdfac ("nfsd/sunrpc:
turn enqueueing a svc_xprt into a svc_serv operation").
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
70a60cbfb6
commit
a9ff2e99e9
6 changed files with 5 additions and 13 deletions
|
|
@ -61,9 +61,6 @@ struct svc_serv_ops {
|
|||
/* function for service threads to run */
|
||||
int (*svo_function)(void *);
|
||||
|
||||
/* queue up a transport for servicing */
|
||||
void (*svo_enqueue_xprt)(struct svc_xprt *);
|
||||
|
||||
/* optional module to count when adding threads.
|
||||
* Thread function must call module_put_and_kthread_exit() to exit.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -131,7 +131,6 @@ int svc_create_xprt(struct svc_serv *, const char *, struct net *,
|
|||
const int, const unsigned short, int,
|
||||
const struct cred *);
|
||||
void svc_xprt_received(struct svc_xprt *xprt);
|
||||
void svc_xprt_do_enqueue(struct svc_xprt *xprt);
|
||||
void svc_xprt_enqueue(struct svc_xprt *xprt);
|
||||
void svc_xprt_put(struct svc_xprt *xprt);
|
||||
void svc_xprt_copy_addrs(struct svc_rqst *rqstp, struct svc_xprt *xprt);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue