From: Ming Lei <ming.lei@redhat.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org,
Keith Busch <kbusch@kernel.org>, Christoph Hellwig <hch@lst.de>,
Jon Derrick <jonathan.derrick@intel.com>
Subject: Re: [PATCH V6 2/2] genirq/affinity: Spread vectors on node according to nr_cpu ratio
Date: Thu, 22 Aug 2019 11:09:48 +0800 [thread overview]
Message-ID: <20190822030947.GD28635@ming.t460p> (raw)
In-Reply-To: <alpine.DEB.2.21.1908191601520.2147@nanos.tec.linutronix.de>
On Mon, Aug 19, 2019 at 04:02:21PM +0200, Thomas Gleixner wrote:
> On Mon, 19 Aug 2019, Ming Lei wrote:
> > On Mon, Aug 19, 2019 at 03:13:58PM +0200, Thomas Gleixner wrote:
> > > On Mon, 19 Aug 2019, Ming Lei wrote:
> > >
> > > > Cc: Jon Derrick <jonathan.derrick@intel.com>
> > > > Cc: Jens Axboe <axboe@kernel.dk>
> > > > Reported-by: Jon Derrick <jonathan.derrick@intel.com>
> > > > Reviewed-by: Jon Derrick <jonathan.derrick@intel.com>
> > > > Reviewed-by: Keith Busch <kbusch@kernel.org>
> > >
> > > This version is sufficiently different from the previous one, so I do not
> > > consider the reviewed-by tags still being valid and meaningful. Don't
> > > include them unless you just do cosmetic changes.
> >
> > Fine.
> >
> > However, the V6 only change isn't big, just for addressing the un-initialized
> > warning, and the change is only done on function of irq_build_affinity_masks().
>
> They are not trivial either:
>
> affinity.c | 28 +++++++++++++---------------
> 1 file changed, 13 insertions(+), 15 deletions(-)
>
> --- a/kernel/irq/affinity.c
> +++ b/kernel/irq/affinity.c
> @@ -339,7 +339,7 @@ static int irq_build_affinity_masks(unsi
> unsigned int firstvec,
> struct irq_affinity_desc *masks)
> {
> - unsigned int curvec = startvec, nr_present, nr_others;
> + unsigned int curvec = startvec, nr_present = 0, nr_others = 0;
> cpumask_var_t *node_to_cpumask;
> cpumask_var_t nmsk, npresmsk;
> int ret = -ENOMEM;
> @@ -354,19 +354,17 @@ static int irq_build_affinity_masks(unsi
> if (!node_to_cpumask)
> goto fail_npresmsk;
>
> - ret = 0;
> /* Stabilize the cpumasks */
> get_online_cpus();
> build_node_to_cpumask(node_to_cpumask);
>
> /* Spread on present CPUs starting from affd->pre_vectors */
> - nr_present = __irq_build_affinity_masks(curvec, numvecs,
> - firstvec, node_to_cpumask,
> - cpu_present_mask, nmsk, masks);
> - if (nr_present < 0) {
> - ret = nr_present;
> + ret = __irq_build_affinity_masks(curvec, numvecs, firstvec,
> + node_to_cpumask, cpu_present_mask,
> + nmsk, masks);
> + if (ret < 0)
> goto fail_build_affinity;
> - }
> + nr_present = ret;
>
> /*
> * Spread on non present CPUs starting from the next vector to be
> @@ -379,16 +377,16 @@ static int irq_build_affinity_masks(unsi
> else
> curvec = firstvec + nr_present;
> cpumask_andnot(npresmsk, cpu_possible_mask, cpu_present_mask);
> - nr_others = __irq_build_affinity_masks(curvec, numvecs,
> - firstvec, node_to_cpumask,
> - npresmsk, nmsk, masks);
> - if (nr_others < 0)
> - ret = nr_others;
> + ret = __irq_build_affinity_masks(curvec, numvecs, firstvec,
> + node_to_cpumask, npresmsk, nmsk,
> + masks);
> + if (ret >= 0)
> + nr_others = ret;
>
> fail_build_affinity:
> put_online_cpus();
>
> - if (min(nr_present, nr_others) >= 0)
> + if (ret >= 0)
> WARN_ON(nr_present + nr_others < numvecs);
>
> free_node_to_cpumask(node_to_cpumask);
> @@ -398,7 +396,7 @@ static int irq_build_affinity_masks(unsi
>
> fail_nmsk:
> free_cpumask_var(nmsk);
> - return ret;
> + return ret < 0 ? ret : 0;
> }
>
> static void default_calc_sets(struct irq_affinity *affd, unsigned int affvecs)
Hi Keith & Jon,
Could you review the above V6 extra change so that we can move on?
BTW, in-balanced numa nodes can be made easily via passing 'possible_cpus=N'.
Thanks,
Ming
next prev parent reply other threads:[~2019-08-22 3:10 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-19 12:49 [PATCH V6 0/2] genriq/affinity: Make vectors allocation fair Ming Lei
2019-08-19 12:49 ` [PATCH V6 1/2] genirq/affinity: Improve __irq_build_affinity_masks() Ming Lei
2019-08-22 16:03 ` Keith Busch
2019-08-22 16:36 ` Derrick, Jonathan
2019-08-19 12:49 ` [PATCH V6 2/2] genirq/affinity: Spread vectors on node according to nr_cpu ratio Ming Lei
2019-08-19 13:13 ` Thomas Gleixner
2019-08-19 13:52 ` Ming Lei
2019-08-19 14:02 ` Thomas Gleixner
2019-08-22 3:09 ` Ming Lei [this message]
2019-08-22 16:03 ` Keith Busch
2019-08-22 16:36 ` Derrick, Jonathan
2019-08-25 8:02 ` [PATCH V6 0/2] genriq/affinity: Make vectors allocation fair Ming Lei
2019-08-25 9:45 ` Thomas Gleixner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190822030947.GD28635@ming.t460p \
--to=ming.lei@redhat.com \
--cc=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=jonathan.derrick@intel.com \
--cc=kbusch@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.