On Fri, Nov 27, 2020 at 11:24:33AM +1100, NeilBrown wrote: > > nfsiod is currently a concurrency-managed workqueue (CMWQ). > This means that workitems scheduled to nfsiod on a given CPU are queued > behind all other work items queued on any CMWQ on the same CPU. This > can introduce unexpected latency. > > Occaionally nfsiod can even cause excessive latency. If the work item > to complete a CLOSE request calls the final iput() on an inode, the > address_space of that inode will be dismantled. This takes time > proportional to the number of in-memory pages, which on a large host > working on large files (e.g.. 5TB), can be a large number of pages > resulting in a noticable number of seconds. > > We can avoid these latency problems by switching nfsiod to WQ_UNBOUND. > This causes each concurrent work item to gets a dedicated thread which > can be scheduled to an idle CPU. > > There is precedent for this as several other filesystems use WQ_UNBOUND > workqueue for handling various async events. > > Signed-off-by: NeilBrown <neilb@xxxxxxx> Acked-by: Tejun Heo <tj@xxxxxxxxxx> Thanks. -- tejun