Received: by 2002:a05:7412:b10a:b0:f3:1519:9f41 with SMTP id az10csp20246rdb; Wed, 29 Nov 2023 18:18:41 -0800 (PST) X-Google-Smtp-Source: AGHT+IHQgIoFgBRXM6ce3ca17+DnN3Ea+udjtK0pRSoWBqUqWGCap6T9de1eOdkjo+xfXkI5KVLX X-Received: by 2002:a17:903:124b:b0:1cc:2dad:7ae9 with SMTP id u11-20020a170903124b00b001cc2dad7ae9mr25178935plh.32.1701310721620; Wed, 29 Nov 2023 18:18:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701310721; cv=none; d=google.com; s=arc-20160816; b=eQ9fVb9/gXhDjtYZEoRNzLbV//FO+GUi5Lkpm5Y3CKmCBBtVo3LM9OO69pbUxJI+vJ pnleOvcyp34dSPQQtV8wwbiQsHzndXb4gswYmvaPKDjMsFn63ySgSGMqwFcynVkHfrdi 3Wn0osymFm0sYS+09hAPVPjb37u4ok3R6WX0RBPgZYbWSL/SH8979WjXaDFXrOXJvLzP NloML6gcyXDwnCkGvzNXTd34Wi7gNwt9D1b9ChAljNZ+CYwzXGwai2dA1dzHEU2IFKHf 4GRDTKNFMIUoCeqhhQhyTGO2QruM9QH5tk5KegHG49vwb/q6LGxy6wxZ+jZOt62lj7at c+kQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=yBdXLaF+9RHMtk4jpl9AirU8X0PKQ3Gndl66cDuFsMk=; fh=9wS0XQouq2Y73gdW+4wJrCo/V/z6MndUAKOuWMRxNeM=; b=razv2XJneqyQrx6YCx5nS/djMW1Gti4TCIwlQISjf7CzxLDxNc+AkfudmFbLrwvWnK RtIDRiIk4Sxwg6gm+hoHJdI2KC0tC3ng6wLwt0VGmugC6kfQ5bV5pa69IkATTN6AQsv0 4A1sWmCdj1q90gAiFvPOygZTal2tVyyvUaz2zcE2EQ83HU4Jmoo5ynzmmfCnx41VrDoC LkUEMddGtPS06BYQrrL1UB5zvspYlfYx3514kbKtft+owshniQdXZhxaUZ4y7IhkqCem TVF5odVH5p+8JeZV8SgR9SuWKcCHpOY1J+jmXip/DtTclCoBRjaevA7CZuDWnU2+oFnZ 66hQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=SrzwlTA6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id p6-20020a170902b08600b001cfda41729esi95894plr.364.2023.11.29.18.18.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Nov 2023 18:18:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=SrzwlTA6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id D216B802BE43; Wed, 29 Nov 2023 18:18:38 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344014AbjK3CS3 (ORCPT + 99 others); Wed, 29 Nov 2023 21:18:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37870 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229658AbjK3CS1 (ORCPT ); Wed, 29 Nov 2023 21:18:27 -0500 Received: from mail-pf1-x430.google.com (mail-pf1-x430.google.com [IPv6:2607:f8b0:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 35609D5C; Wed, 29 Nov 2023 18:18:34 -0800 (PST) Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-6cdd4aab5f5so469773b3a.3; Wed, 29 Nov 2023 18:18:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701310713; x=1701915513; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=yBdXLaF+9RHMtk4jpl9AirU8X0PKQ3Gndl66cDuFsMk=; b=SrzwlTA6cZ3eFQmWITJ8TY4EWEFQmtd33uaImiJXdgR1Gq/khTcR4745JVpjdBPwV4 h+1FOUZWoGAGD0oZSEgkleg5vYzsNj/lpS3HYpbRxYd0q+D0FPVIX0Aico4q2SM9AdkH 2fBpKlIU+HiatTGpcmOEZgxMRBzYLQbBm/VCzS0fKtyBlY3JW24s11H5xaq/3cQ58moU pR5nasJ3nikjkZM0DbStsHpC8dqXiL8p8D63gdLHgRWiauEmKkrgldrxlpOVWrWFP+Fc wE1RrK2hKJ7pO+LnSdJrynOPGC2/fQ4DlceEG92llLXjrYW8UBDIK/DAVybSF4NMOH/Z 67pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701310713; x=1701915513; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=yBdXLaF+9RHMtk4jpl9AirU8X0PKQ3Gndl66cDuFsMk=; b=U1RHAtOBFKaUQNYgZNYu7y7kkBxx+67QFslp93BoWNadON4Z+IzaD+KV8gd/hzXjB5 3Bp8n7qDsLSL3YtBTKQ/W0G9Mk3WjFO7CwEKSrddd2ozKomz0e5aj1oH6Tly4Oo5jz4u 6pYWd/WNoPR44nqWpzSKzeFUv5lny6TUXJiFLl5MShVoiava53Tvr+IyIon0UeWBKhQ0 Rd8De4c1ZTEf/bedQvifrJkJh1nrl4QEkrOjDJixW4ViNl1VvXVl5pCRB4CaeQnwwySs 9W5WQUiOWIB+kVWMWKL//6/VOtoHBd6Mqe5+04YuooYCxO/bXN0iVa0gnEU8wd4Ho901 nH0w== X-Gm-Message-State: AOJu0YyDhDyH0O2dpKpsKJEFtXlgeZjx8VbiQ6TyvvdQa/M5dVBFse0W 7b/8qvkwF4sjaaNluCguXyE= X-Received: by 2002:a05:6a00:3988:b0:6be:25c5:4f74 with SMTP id fi8-20020a056a00398800b006be25c54f74mr24484777pfb.13.1701310713470; Wed, 29 Nov 2023 18:18:33 -0800 (PST) Received: from localhost ([216.228.127.128]) by smtp.gmail.com with ESMTPSA id fa21-20020a056a002d1500b006cde4c8d94fsm76727pfb.135.2023.11.29.18.18.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Nov 2023 18:18:33 -0800 (PST) Date: Wed, 29 Nov 2023 18:16:17 -0800 From: Yury Norov To: Souradeep Chakrabarti Cc: Jakub Kicinski , Souradeep Chakrabarti , KY Srinivasan , Haiyang Zhang , "wei.liu@kernel.org" , Dexuan Cui , "davem@davemloft.net" , "edumazet@google.com" , "pabeni@redhat.com" , Long Li , "sharmaajay@microsoft.com" , "leon@kernel.org" , "cai.huoqing@linux.dev" , "ssengar@linux.microsoft.com" , "vkuznets@redhat.com" , "tglx@linutronix.de" , "linux-hyperv@vger.kernel.org" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-rdma@vger.kernel.org" , Paul Rosswurm Subject: Re: [EXTERNAL] Re: [PATCH V2 net-next] net: mana: Assigning IRQ affinity on HT cores Message-ID: References: <1700574877-6037-1-git-send-email-schakrabarti@linux.microsoft.com> <20231121154841.7fc019c8@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 29 Nov 2023 18:18:39 -0800 (PST) On Mon, Nov 27, 2023 at 09:36:38AM +0000, Souradeep Chakrabarti wrote: > > > >-----Original Message----- > >From: Jakub Kicinski > >Sent: Wednesday, November 22, 2023 5:19 AM > >To: Souradeep Chakrabarti > >Cc: KY Srinivasan ; Haiyang Zhang > >; wei.liu@kernel.org; Dexuan Cui > >; davem@davemloft.net; edumazet@google.com; > >pabeni@redhat.com; Long Li ; > >sharmaajay@microsoft.com; leon@kernel.org; cai.huoqing@linux.dev; > >ssengar@linux.microsoft.com; vkuznets@redhat.com; tglx@linutronix.de; linux- > >hyperv@vger.kernel.org; netdev@vger.kernel.org; linux-kernel@vger.kernel.org; > >linux-rdma@vger.kernel.org; Souradeep Chakrabarti > >; Paul Rosswurm > >Subject: [EXTERNAL] Re: [PATCH V2 net-next] net: mana: Assigning IRQ affinity on > >HT cores > > > >On Tue, 21 Nov 2023 05:54:37 -0800 Souradeep Chakrabarti wrote: > >> Existing MANA design assigns IRQ to every CPUs, including sibling > >> hyper-threads in a core. This causes multiple IRQs to work on same CPU > >> and may reduce the network performance with RSS. > >> > >> Improve the performance by adhering the configuration for RSS, which > >> assigns IRQ on HT cores. > > > >Drivers should not have to carry 120 LoC for something as basic as spreading IRQs. > >Please take a look at include/linux/topology.h and if there's nothing that fits your > >needs there - add it. That way other drivers can reuse it. > Because of the current design idea, it is easier to keep things inside > the mana driver code here. As the idea of IRQ distribution here is : > 1)Loop through interrupts to assign CPU > 2)Find non sibling online CPU from local NUMA and assign the IRQs > on them. > 3)If number of IRQs is more than number of non-sibling CPU in that > NUMA node, then assign on sibling CPU of that node. > 4)Keep doing it till all the online CPUs are used or no more IRQs. > 5)If all CPUs in that node are used, goto next NUMA node with CPU. > Keep doing 2 and 3. > 6) If all CPUs in all NUMA nodes are used, but still there are IRQs > then wrap over from first local NUMA node and continue > doing 2, 3 4 till all IRQs are assigned. Hi Souradeep, (Thanks Jakub for sharing this thread with me) If I understand your intention right, you can leverage the existing cpumask_local_spread(). But I think I've got something better for you. The below series adds a for_each_numa_cpu() iterator, which may help you doing most of the job without messing with nodes internals. https://lore.kernel.org/netdev/ZD3l6FBnUh9vTIGc@yury-ThinkPad/T/ By using it, the pseudocode implementing your algorithm may look like this: unsigned int cpu, hop; unsigned int irq = 0; again: cpu = get_cpu(); node = cpu_to_node(cpu); cpumask_copy(cpus, cpu_online_mask); for_each_numa_cpu(cpu, hop, node, cpus) { /* All siblings are the same for IRQ spreading purpose */ irq_set_affinity_and_hint(irq, topology_sibling_cpumask()); /* One IRQ per sibling group */ cpumask_andnot(cpus, cpus, topology_sibling_cpumask()); if (++irq == num_irqs) break; } if (irq < num_irqs) goto again; (Completely not tested, just an idea.) Thanks, Yury