Hi Zaibo, On Tue, Feb 25, 2020 at 11:30:05AM +0800, Xu Zaibo wrote: > > +struct iopf_queue * > > +iopf_queue_alloc(const char *name, iopf_queue_flush_t flush, void *cookie) > > +{ > > + struct iopf_queue *queue; > > + > > + queue = kzalloc(sizeof(*queue), GFP_KERNEL); > > + if (!queue) > > + return NULL; > > + > > + /* > > + * The WQ is unordered because the low-level handler enqueues faults by > > + * group. PRI requests within a group have to be ordered, but once > > + * that's dealt with, the high-level function can handle groups out of > > + * order. > > + */ > > + queue->wq = alloc_workqueue("iopf_queue/%s", WQ_UNBOUND, 0, name); > Should this workqueue use 'WQ_HIGHPRI | WQ_UNBOUND' or some flags like this > to decrease the unexpected > latency of I/O PageFault here? Or maybe, workqueue will show an uncontrolled > latency, even in a busy system. I'll investigate the effect of these flags. So far I've only run on completely idle systems but it would be interesting to add some workqueue-heavy load in my tests. Thanks, Jean