From: Thomas Gleixner <tglx@linutronix.de>
To: Jens Axboe <axboe@kernel.dk>, linux-kernel@vger.kernel.org
Cc: peterz@infradead.org, mingo@redhat.com
Subject: Re: [PATCH 1/2] sched/core: switch struct rq->nr_iowait to a normal int
Date: Thu, 29 Feb 2024 18:42:47 +0100 [thread overview]
Message-ID: <87wmqn6uaw.ffs@tglx> (raw)
In-Reply-To: <c3abe716-3d8f-47dc-9c7d-203b05b25393@kernel.dk>
On Thu, Feb 29 2024 at 10:19, Jens Axboe wrote:
> On 2/29/24 9:53 AM, Thomas Gleixner wrote:
>> On Wed, Feb 28 2024 at 12:16, Jens Axboe wrote:
>>> In 3 of the 4 spots where we modify rq->nr_iowait we already hold the
>>
>> We modify something and hold locks? It's documented that changelogs
>> should not impersonate code. It simply does not make any sense.
>
> Agree it doesn't read that well... It's meant to say that we already
> hold the rq lock in 3 of the 4 spots, hence using atomic_inc/dec is
> pointless for those cases.
That and the 'we'. Write it neutral.
The accounting of rq::nr_iowait is using an atomic_t but 3 out of 4
places hold runqueue lock already. ....
So but I just noticed that there is actually an issue with this:
> unsigned int nr_iowait_cpu(int cpu)
> {
> - return atomic_read(&cpu_rq(cpu)->nr_iowait);
> + struct rq *rq = cpu_rq(cpu);
> +
> + return rq->nr_iowait - atomic_read(&rq->nr_iowait_remote);
The access to rq->nr_iowait is not protected by the runqueue lock and
therefore a data race when @cpu is not the current CPU.
This needs to be properly annotated and explained why it does not
matter.
So s/Reviewed-by/Un-Reviewed-by/
Though thinking about it some more. Is this split a real benefit over
always using the atomic? Do you have numbers to show?
Thanks,
tglx
next prev parent reply other threads:[~2024-02-29 17:42 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-28 19:16 [PATCHSET v3 0/2] Split iowait into two states Jens Axboe
2024-02-28 19:16 ` [PATCH 1/2] sched/core: switch struct rq->nr_iowait to a normal int Jens Axboe
2024-02-29 16:53 ` Thomas Gleixner
2024-02-29 17:19 ` Jens Axboe
2024-02-29 17:42 ` Thomas Gleixner [this message]
2024-02-29 17:49 ` Jens Axboe
2024-02-29 19:52 ` Thomas Gleixner
2024-02-29 22:30 ` Jens Axboe
2024-03-01 0:02 ` Thomas Gleixner
2024-02-28 19:16 ` [PATCH 2/2] sched/core: split iowait state into two states Jens Axboe
2024-02-29 17:31 ` Thomas Gleixner
2024-02-29 17:45 ` Jens Axboe
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=87wmqn6uaw.ffs@tglx \
--to=tglx@linutronix.de \
--cc=axboe@kernel.dk \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
/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.