Re: [PATCH/RFC] core/nfsd: allow kernel threads to use task_work.

From: NeilBrown
Date: Tue Nov 28 2023 - 19:15:03 EST


On Wed, 29 Nov 2023, Oleg Nesterov wrote:
> On 11/28, NeilBrown wrote:
> >
> > I have evidence from a customer site of 256 nfsd threads adding files to
> > delayed_fput_lists nearly twice as fast they are retired by a single
> > work-queue thread running delayed_fput(). As you might imagine this
> > does not end well (20 million files in the queue at the time a snapshot
> > was taken for analysis).
>
> On a related note... Neil, Al, et al, can you look at
>
> [PATCH 1/3] fput: don't abuse task_work_add() when possible
> https://lore.kernel.org/all/20150908171446.GA14589@xxxxxxxxxx/
>

Would it make sense to create a separate task_struct->delayed_fput
llist?
fput() adds the file to this llist and if it was the first item on the
list, it then adds the task_work. That would probably request adding a
callback_head to struct task_struct as well.

NeilBrown