Received: by 2002:a25:f815:0:0:0:0:0 with SMTP id u21csp2975498ybd; Fri, 28 Jun 2019 00:21:17 -0700 (PDT) X-Google-Smtp-Source: APXvYqxe4oVinf8SSafyQSHmfCbv/M/fVv1TG1K+ZdSfvr+80Gw/xE0ltoKtXOxQSdU0Wp04O9dB X-Received: by 2002:a17:90a:3344:: with SMTP id m62mr7046072pjb.135.1561706477358; Fri, 28 Jun 2019 00:21:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561706477; cv=none; d=google.com; s=arc-20160816; b=ogtJsKpiO8EW/Bme1MQVEveSFD/BOtRYKuix3kXjmy1dD4TIzzIgoEyo3pKPUMMlJh CuKDyNnk5gO/+rmEOWiBy5ocIpaGdlo9+67DmCFVcUK195p3Goe0qdJ34xHUTx2NUnK4 hTnAvk4hsQ/Jha2nZX/m1kheJAo4p7ZLDHApnmxxHpYMD3Sm2JwRU0oMDS6iDhST7dme AdEDxSo/iB2gJX+435bcKtJy0eB6lWFT+CNLqVzoKOOBUAvHXYLE1PjjOJA/U2MqUstu fBwugUpqMO/ThUW9QOCWkRsF8z0byOLa0XrLPljWOFJTjMISv14bkx2av33yqY1h0d8c nMJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=IYgxIggiL3Vp6cFFumrIC01sT9mQSZw9XN9GhM4BPlg=; b=fv4BVqyxfMVRFUUIEDl6Io6BjlhmcmlpqMK67IHeXt8pm/M5YUCCQW0t65g8WHKIva IsZjk9XPPvA+5FhW/zEdCd/tSUdQihDMZjzKMA7nhN/R2mHHlVNPVIErloW5IRtiP5Oo XHiQTObfSjNKNX5+nXjiMujDH2ptXABPSD29DdYQUrS4p+pfCxM3bQbELbCSENr4xvTb NULp8RoFEXat6CVZnaclP9URf37Hah4Tar9Mc/lewl8KQ6KQs5hT28GaSd0DH0uuLVfv dSX8GMgFxLmy/VC6s6FnxpOS34FxIcBptkeB6YEPIfX1Ndn4SQMfe5IPsVaPes46Wwbr yYfQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=YF5tVCEh; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g23si1565687pfi.153.2019.06.28.00.21.00; Fri, 28 Jun 2019 00:21:17 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=YF5tVCEh; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727346AbfF1HT3 (ORCPT + 99 others); Fri, 28 Jun 2019 03:19:29 -0400 Received: from mail-oi1-f194.google.com ([209.85.167.194]:41324 "EHLO mail-oi1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726648AbfF1HT3 (ORCPT ); Fri, 28 Jun 2019 03:19:29 -0400 Received: by mail-oi1-f194.google.com with SMTP id g7so3551039oia.8 for ; Fri, 28 Jun 2019 00:19:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=IYgxIggiL3Vp6cFFumrIC01sT9mQSZw9XN9GhM4BPlg=; b=YF5tVCEhSN/WHSd7ULCwYD/YsEEZ0Q0uUDsBVYfxRymbVvtT+P8W19sfS5LvTN2dwb 21YkZSshy6M97XDhdqUmk2oALasr73OPRARA9kNpXjyqwcRAMUtbKU/cK/eeJS6A2ufI 5B/wfqnKU7mRpSsjgs7e12zSmBXXTWT6pKCftl0tOvbAqHl85prfVrdX1eDFjjN9XsZe oJrkOqWhBWHcRVuvpa4P1wQ1OtziUzrMIwZY5gzdPEKqNdu3TfVxTngxMDgsqwxSzNLd Hk4Ja9Pcjmy4T9/iWdTDZc62BWB85lgUBaOmlYLK1y4bor7oql7fDT9t2momu4lSywhR wBow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=IYgxIggiL3Vp6cFFumrIC01sT9mQSZw9XN9GhM4BPlg=; b=KucdkHHYRcgZldZk4CMkPbfhBKNJklyx3z/8YL4fW9mOO3xP1IO3yUVeqSUAkP5qgj 4rs0pebAFbRn3nvOvjztpD9OMLUV/6uEAFFPb37ZaEJCEI1ywJUX76yw2G4mjzPCLL1E 6DlowkY5soI3+OiuEYhRpVWatjgEcTa5AsRdvBdEyLXfbBXNT/ME0mvpGgj3kzY4mBXh uJoe1JwfN5VejbSbLTTXrGCPJDVZP9GCVeQZGNXp5gfAnVplTSOqkXB5V+kBFoG3qqJ1 Uu+uQnGDXWNHqCN4l3BTvMaumDjnk56kAU3N//w5Eln3Th2Svt6PytxFI+ECpUmqxX9M F35A== X-Gm-Message-State: APjAAAWvAbxFAQLf9OQBWhF2rcQZqigbDKiaR73BGgx4iFdmcoNB8Mwq iT31U2Vg9RoJGTPX6+4vgPgpPHsEkV6KIcHNglM= X-Received: by 2002:aca:544b:: with SMTP id i72mr891266oib.174.1561706368854; Fri, 28 Jun 2019 00:19:28 -0700 (PDT) MIME-Version: 1.0 References: <1561682593-12071-1-git-send-email-wanpengli@tencent.com> <1561682593-12071-2-git-send-email-wanpengli@tencent.com> <20190628065802.GA27699@linux.vnet.ibm.com> In-Reply-To: <20190628065802.GA27699@linux.vnet.ibm.com> From: Wanpeng Li Date: Fri, 28 Jun 2019 15:19:17 +0800 Message-ID: Subject: Re: [PATCH RESEND v3] sched/isolation: Prefer housekeeping cpu in local node To: Srikar Dronamraju Cc: LKML , Ingo Molnar , Peter Zijlstra , Ingo Molnar , Frederic Weisbecker , Thomas Gleixner Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Srikar, On Fri, 28 Jun 2019 at 14:58, Srikar Dronamraju wrote: > > * Wanpeng Li [2019-06-28 08:43:13]: > > > > > > +/* > > + * sched_numa_find_closest() - given the NUMA topology, find the cpu > > + * closest to @cpu from @cpumask. > > + * cpumask: cpumask to find a cpu from > > + * cpu: cpu to be close to > > + * > > + * returns: cpu, or >= nr_cpu_ids when nothing found (or !NUMA). > > One nit: > I dont see sched_numa_find_closest returning anything greater than > nr_cpu_ids. So 's/>= //' for the above comment. > > > + */ > > +int sched_numa_find_closest(const struct cpumask *cpus, int cpu) > > +{ > > +#ifdef CONFIG_NUMA > > + int i, j = cpu_to_node(cpu); > > + > > + for (i = 0; i < sched_domains_numa_levels; i++) { > > + cpu = cpumask_any_and(cpus, sched_domains_numa_masks[i][j]); > > + if (cpu < nr_cpu_ids) > > + return cpu; > > + } > > +#endif > > + return nr_cpu_ids; > > +} > > + > > Should we have a static function for sched_numa_find_closest instead of > having #ifdef in the function? > > > static int __sdt_alloc(const struct cpumask *cpu_map) > > { > > struct sched_domain_topology_level *tl; So, how about add this? diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index a7e7d8c..5f2b262 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1225,13 +1225,17 @@ enum numa_topology_type { extern void sched_init_numa(void); extern void sched_domains_numa_masks_set(unsigned int cpu); extern void sched_domains_numa_masks_clear(unsigned int cpu); +extern int sched_numa_find_closest(const struct cpumask *cpus, int cpu); #else static inline void sched_init_numa(void) { } static inline void sched_domains_numa_masks_set(unsigned int cpu) { } static inline void sched_domains_numa_masks_clear(unsigned int cpu) { } +static inline int sched_numa_find_closest(const struct cpumask *cpus, int cpu) +{ + return nr_cpu_ids; +} #endif -extern int sched_numa_find_closest(const struct cpumask *cpus, int cpu); #ifdef CONFIG_NUMA_BALANCING /* The regions in numa_faults array from task_struct */ diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c index 72731ed..9372c18 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -1734,19 +1734,16 @@ void sched_domains_numa_masks_clear(unsigned int cpu) } } -#endif /* CONFIG_NUMA */ - /* * sched_numa_find_closest() - given the NUMA topology, find the cpu * closest to @cpu from @cpumask. * cpumask: cpumask to find a cpu from * cpu: cpu to be close to * - * returns: cpu, or >= nr_cpu_ids when nothing found (or !NUMA). + * returns: cpu, or nr_cpu_ids when nothing found. */ int sched_numa_find_closest(const struct cpumask *cpus, int cpu) { -#ifdef CONFIG_NUMA int i, j = cpu_to_node(cpu); for (i = 0; i < sched_domains_numa_levels; i++) { @@ -1754,10 +1751,11 @@ int sched_numa_find_closest(const struct cpumask *cpus, int cpu) if (cpu < nr_cpu_ids) return cpu; } -#endif return nr_cpu_ids; } +#endif /* CONFIG_NUMA */ + static int __sdt_alloc(const struct cpumask *cpu_map) { struct sched_domain_topology_level *tl;