From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yuval Mintz" Subject: [RFC net-next 00/14] default maximal number of RSS queues in mq drivers Date: Tue, 19 Jun 2012 18:13:54 +0300 Message-ID: <1340118848-30978-1-git-send-email-yuvalmin@broadcom.com> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Cc: eilong@broadcom.com, "Yuval Mintz" , "Divy Le Ray" , "Or Gerlitz" , "Jon Mason" , "Anirban Chakraborty" , "Jitendra Kalsaria" , "Ron Mercer" , "Jeff Kirsher" , "Jon Mason" , "Andrew Gallatin" , "Sathya Perla" , "Subbu Seetharaman" , "Ajit Khaparde" , "Matt Carlson" , "Michael Chan" To: netdev@vger.kernel.org, davem@davemloft.net Return-path: Received: from mms3.broadcom.com ([216.31.210.19]:2600 "EHLO mms3.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752506Ab2FSPQY (ORCPT ); Tue, 19 Jun 2012 11:16:24 -0400 Sender: netdev-owner@vger.kernel.org List-ID: Different vendors support different number of RSS queues by default. Today, there exists an ethtool API through which users can change the number of channels their driver supports; This enables us to pursue the goal of using a default number of RSS queues in various multi-queue drivers. This RFC intendeds to achieve the above default, by upper-limiting the number of interrupts multi-queue drivers request (by default, not via the new API) with correlation to the number of cpus on the machine. After examining multi-queue drivers that call alloc_etherdev_mq[s], it became evident that most drivers allocate their devices using hard-coded values. Changing those defaults directly will most likely cause a regression. However, (most) multi-queue driver look at the number of online cpus when requesting for interrupts. We assume that the number of interrupts the driver manages to request is propagated across the driver, and the number of RSS queues it configures is based upon it. This RFC modifies said logic - if the number of cpus is large enough, use a smaller default value instead. This serves 2 main purposes: 1. A step forward unity in the number of RSS queues of various drivers. 2. It prevents wasteful requests for interrupts on machines with many cpus. Notice no testing was made on this RFC (other than on the bnx2x driver) except for compilation test. Drivers identified as multi-queue, handled in this RFC: * mellanox mlx4 * neterion vxge * qlogic qlge * intel igb, igbxe, igbxevf * chelsio cxgb3, cxgb4 * myricom myri10ge * emulex benet * broadcom tg3, bnx2, bnx2x Driver identified as multi-queue, no reference to number of online cpus found, and thus unhandled in this RFC: * neterion s2io * marvell mv643xx * freescale gianfar * ibm ehea * ti cpmac * sun niu * sfc efx * chelsio cxgb4vf Cheers, Yuval Mintz Cc: Divy Le Ray Cc: Or Gerlitz Cc: Jon Mason Cc: Anirban Chakraborty Cc: Jitendra Kalsaria Cc: Ron Mercer Cc: Jeff Kirsher Cc: Jon Mason Cc: Andrew Gallatin Cc: Sathya Perla Cc: Subbu Seetharaman Cc: Ajit Khaparde Cc: Matt Carlson Cc: Michael Chan