On 09/02/2014 02:15 PM, Eliezer Tamir wrote: > On 02/09/2014 06:29, Jason Wang wrote: >> On 09/01/2014 02:39 PM, Eliezer Tamir wrote: >>> On 29/08/2014 06:08, Jason Wang wrote: >>>>> Yes, but rx busy polling only works in process context and does not >>>>> disable bh, so it may be not an issue. >>> sk_busy_loop() uses rcu_read_lock_bh(), so it does run with bh disabled. >> True, so we need probably also exit the loop when there are pending bhs. > I'm not so sure, in the typical busy poll scenario, the incoming > traffic is the most time-critical thing in the system. > It's so important that you are willing to trade lots of CPU power > for better latency. The user has decided that he wants to dedicate > this CPU mostly for that.
But user should increase the process priority or cgroup in this case. > This is not something that plays nice with > other apps, but this is what the user wants. So the busy polling looks have a higher priority somehow than other processes. > So, you definitely don't want to starve any bh, and you should > regularly re-enable bh's, but you also don't want to stop everything > at any time a bh is scheduled. If I get your meaning, you may want call to rcu_read_lock_bh() and get socket napi id inside the do{} loop? This seems can prevent bhs from being starved and can also handle the case that the packets were from different NAPIs. > > You also want network processing on the queues that are busy polled > to come through busy polling and not through NAPI, which is run in bh > context. > > -Eliezer > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- 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/