From: torvalds@linux-foundation.org (Linus Torvalds)
Subject: [ltt-dev] [PATCH] Fix dirty page accounting in redirty_page_for_writepage()
Date: Thu, 30 Apr 2009 09:13:44 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.2.00.0904300901490.3395@localhost.localdomain> (raw)
In-Reply-To: <20090430154255.GA3714@elte.hu>
On Thu, 30 Apr 2009, Ingo Molnar wrote:
>
> nice. Do these all get called with irqs off, all the time?
There are lots of non-irq-off cases where non-atomic counters are safe. A
couple of reasons:
- counters that just don't care enough. Some statistics are very
important to always be exact, others are "helpful" but performance is
more important than being exactly right.
- counters simply not accessed (or at least changed) from interrupts at
all. This is very common for some cases, notably "user event" stats.
They may need preemption support, but nothing fancier.
- counters that are "idempotent" wrt interrupts. For example, anything
that will always count up and then down again in a paired fashion
(think kernel lock counter, preemption counter etc) is inherently safe
as a per-cpu counter without needing any protection at all, since any
interrupts may _change_ them, but will always change them back, so even
if a non-atomic sequence gets interrupted, it doesn't matter.
In fact, I'd argue that for a per-cpu counter, the whole _point_ of the
exercise is almost always performance, so locked sequences would be bad to
assume. The fact that x86 can do "atomic" per-cpu accesses with basically
zero cost (by virtue of it's rmw memory ops) is unusual.
Most other architectures will have a very hard time making such counters
cheap, since for them, there "irq atomicity" (expensive irq disable or
store conditional) or "SMP atomicity" (the same fairly expensive
store-conditional or something even worse).
Linus
next prev parent reply other threads:[~2009-04-30 16:13 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-29 23:25 Mathieu Desnoyers
2009-04-29 23:56 ` Mathieu Desnoyers
2009-04-29 23:59 ` Andrew Morton
2009-04-30 2:34 ` Mathieu Desnoyers
2009-04-30 0:06 ` Linus Torvalds
2009-04-30 2:43 ` Mathieu Desnoyers
2009-04-30 6:21 ` Ingo Molnar
2009-04-30 6:33 ` Mathieu Desnoyers
2009-04-30 6:50 ` Ingo Molnar
2009-04-30 13:38 ` Christoph Lameter
2009-04-30 14:10 ` Ingo Molnar
2009-04-30 14:12 ` Mathieu Desnoyers
2009-04-30 14:12 ` Christoph Lameter
2009-04-30 19:41 ` Mathieu Desnoyers
2009-04-30 20:17 ` Christoph Lameter
2009-04-30 21:17 ` Mathieu Desnoyers
2009-04-30 13:22 ` Christoph Lameter
2009-04-30 13:38 ` Ingo Molnar
2009-04-30 13:40 ` Christoph Lameter
2009-04-30 14:14 ` Ingo Molnar
2009-04-30 14:15 ` Christoph Lameter
2009-04-30 14:38 ` Ingo Molnar
2009-04-30 14:45 ` Christoph Lameter
2009-04-30 15:01 ` Ingo Molnar
2009-04-30 15:25 ` Christoph Lameter
2009-04-30 15:42 ` Ingo Molnar
2009-04-30 15:44 ` Christoph Lameter
2009-04-30 16:06 ` Ingo Molnar
2009-04-30 16:11 ` Christoph Lameter
2009-04-30 16:16 ` Linus Torvalds
2009-04-30 17:23 ` Ingo Molnar
2009-04-30 18:07 ` Christoph Lameter
2009-04-30 16:13 ` Linus Torvalds [this message]
2009-04-30 15:54 ` Ingo Molnar
2009-04-30 16:00 ` Ingo Molnar
2009-04-30 16:08 ` Christoph Lameter
2009-04-30 13:50 ` Mathieu Desnoyers
2009-04-30 13:55 ` Christoph Lameter
2009-04-30 14:32 ` Ingo Molnar
2009-04-30 14:42 ` Christoph Lameter
2009-04-30 14:59 ` Ingo Molnar
2009-04-30 16:03 ` Mathieu Desnoyers
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=alpine.LFD.2.00.0904300901490.3395@localhost.localdomain \
--to=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox