dynamic management of nfsd thread count

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Neil-

The clean-up of NFSD thread management has been merged into v5.17-rc.
I'm wondering if you have thought more about how to implement dynamic
management.

One thing that occurred to me was that there was a changeset that
attempted to convert NFSD threads into work queues. We merged some
of that but stopped when it was found that work queue scheduling
seems to have some worst case behavior that sometimes impacts the
performance of the Linux NFS server.

The part of that work that was merged is now vestigial, and might
need to be reverted before proceeding with dynamic NFSD thread
management. For example:

 476 void svc_xprt_enqueue(struct svc_xprt *xprt)
 477 {
 478         if (test_bit(XPT_BUSY, &xprt->xpt_flags))
 479                 return;
 480         xprt->xpt_server->sv_ops->svo_enqueue_xprt(xprt);
 481 }
 482 EXPORT_SYMBOL_GPL(svc_xprt_enqueue);

The svo_enqueue_xprt method was to be different for the different
scheduling mechanisms. But to this day there is only one method
defined: svc_xprt_do_enqueue()

Do you have plans to use this or discard it? If not, I'd like to
see that it is removed eventually, as virtual functions are
more costly than they used to be thanks to Spectre/Meltdown, and
this one is invoked multiple times per RPC.


--
Chuck Lever







[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux