Hi, On Thu, 2018-03-15 at 15:31 +0000, Eric Dumazet wrote: > On Thu, Mar 15, 2018 at 8:08 AM Paolo Abeni <pab...@redhat.com> wrote: > > > Currently, most MQ netdevice setup the default XPS configuration mapping > > 1-1 > > the first real_num_tx_queues queues and CPUs and no mapping is created for > > the CPUs with id greater then real_num_tx_queues, if any. > > As a result, the xmit path for unconnected sockets on such cores > > experiences a > > relevant overhead in netdev_pick_tx(), which needs to dissect each packet > > and > > compute its hash. > > Such scenario is easily triggered. e.g. from DNS server under relevant > > load, as > > the user-space process is moved away from the CPUs serving the softirqs > > (note: > > this is beneficial for the overall DNS server performances). > > This series introduces an helper to easily setup up XPS mapping for all > > the > > online CPUs, and use it in the ixgbe driver, demonstrating a relevant > > performance improvement in the above scenario. > > Paolo Abeni (2): > > net: introduce netif_set_xps() > > ixgbe: setup XPS via netif_set_xps() > > > Resent, not HTML this time, sorry for duplication. > > I truly believe XPS should not be setup by devices. > > XPS is policy, and policy does belong to user space.
Thank you for your comments! As general principle, I agree policies should be in user-space, but I also think that the kernel should provide a reasonable default. Many MQ devices already configure XPS and their default is AFAICS sub-optimal. > Note that if XPS is not setup, MQ queue selection is just fine by default ; I'm sorry, I do not follow. AFAICS with unconnected sockets without XPS we always hit the netdev_pick_tx()/skb_tx_hash()/skb_flow_dissect() overhead in xmit path. Cheers, Paolo