Messages in this thread | | | Date | Sat, 29 Aug 2015 14:49:21 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH] task_work: remove fifo ordering guarantee |
| |
On 08/28, Eric Dumazet wrote: > > From: Eric Dumazet <edumazet@google.com> > > In commit f341861fb0b ("task_work: add a scheduling point in > task_work_run()") I fixed a latency problem adding a cond_resched() > call. > > Later, commit ac3d0da8f329 added yet another loop to reverse a list, > bringing back the latency spike : > > I've seen in some cases this loop taking 275 ms, if for example a > process with 2,000,000 files is killed. > > We could add yet another cond_resched() in the reverse loop,
Can't we do this?
> or we > can simply remove the reversal, as I do not think anything > would depend on order of task_work_add() submitted works.
Personally I'd prefer to keep the fifo ordering. It just makes more sense imho. Even if currently nobody depends on it (although I am not sure about out-of-tree modules, say, systemtap).
Let's look keyctl_session_to_parent(). It does task_work_cancel() but only because we can not trust user-space. Otherwise we could remove it and just do task_work_add(), but this needs fifo.
Fifo just looks more sane to me.
Oleg.
| |