On Tue, Sep 02, 2014 at 12:03:42PM +0800, Jason Wang wrote: > On 09/01/2014 06:19 PM, Peter Zijlstra wrote: > > OK I suppose that more or less makes sense, the contextual behaviour is > > of course tedious in that it makes behaviour less predictable. The > > 'other' tasks might not want to generate data and you then destroy > > throughput by not spinning. > > The patch try to make sure: > - the the performance of busy read was not worse than it was disabled in > any cases. > - the performance improvement of a single socket was not achieved by > sacrificing the total performance (all other processes) of the system > > If 'other' tasks are also CPU or I/O intensive jobs, we switch to do > them so the total performance were kept or even increased, and the > performance of current process were guaranteed not worse than when busy > read was disabled (or even better since it may still do busy read > sometimes when it was the only runnable process). If 'other' task are > not intensive, they just do little work and sleep soon, then the busy > read can still work in most of the time during the future reads, we may > still get obvious improvements.
Not entirely true; the select/poll whatever will now block, which means we need a wakeup, which increases the latency immensely. > > I'm not entirely sure I see how its all supposed to work though; the > > various poll functions call sk_busy_poll() and do_select() also loops. > > > > The patch only kills the sk_busy_poll() loop, but then do_select() will > > still loop and not sleep, so how is this helping? > > Yes, the patch only help for processes who did a blocking reads (busy > read). For select(), maybe we can do the same thing but need more test > and thoughts. What's the blocking read callgraph, how so we end up in sk_busy_poll() there? But that's another reason the patch is wrong. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/