From: Robert Wisniewski <bob@watson.ibm.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: Robert Wisniewski <bob@watson.ibm.com>,
karim@opersys.com, tglx@linutronix.de,
Andrew Morton <akpm@osdl.org>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: 2.6.11-rc1-mm1
Date: Sun, 16 Jan 2005 16:14:48 -0500 (EST) [thread overview]
Message-ID: <16874.55284.161722.553907@kix.watson.ibm.com> (raw)
In-Reply-To: <20050116203914.GA29959@infradead.org>
Christoph Hellwig writes:
> On Sun, Jan 16, 2005 at 03:11:00PM -0500, Robert Wisniewski wrote:
> > int global_val;
> >
> > modify_val_spin()
> > {
> > acquire_spin_lock()
> > // calculate some_value based on global_val
> > // for example c=global_val; if (c%0) some_value=10; else some_value=20;
> > global_val = global_val + some_value
> > release_spin_lock()
> > }
> >
> > modify_val_atomic()
> > {
> > do
> > // calculate some_value based on global_val
> > // for example c=global_val; if (c%0) some_value=10; else some_value=20;
> > global_val = global_val + some_value
> > while (compare_and_store(global_val, , ))
> > }
> >
> > What's the difference. The deal is if two processes execute this code
> > simultaneously and one gets interrupted in the middle of modify_val_spin,
> > then the other wastes its entire quantum spinning for the lock. In the
> > modify_val_atomic if one process gets interrupted, no problem, the other
> > process can proceed through, then when the first one runs again the CAS
> > will fail, and it will go around the loop again. Now imagine it was the
> > kernel involved...
>
> Just prevent that with spin_lock_irq. But anyway this example doesn't
> fit the ltt code. cmpxchg loops can make lots of sense for such simple
> loops, but as soon as you need to do significant work in the loop it
> starts to get problematic. Your example would btw be better off using
The loop in question is where we grab the current (old) index, perform a
computation (or three). The only expensive operation is the timestamp
acquisition which has been modified to use the cheaper rtsc, so I still
think that's within the realm of a reasonably simply loop. I think what
you want to avoid is starting to walk a (potentially indeterminate) data
structure in such atomic op loop.
> atomic_t and it's primitives so you abstract away the actual implementation
> and the architecture can chose the most efficient implementation.
>
That's an interesting thought because it might address Andrew's concern.
We'll investigate. Thanks.
-bob
next prev parent reply other threads:[~2005-01-16 21:15 UTC|newest]
Thread overview: 142+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-14 8:23 2.6.11-rc1-mm1 Andrew Morton
2005-01-14 8:47 ` 2.6.11-rc1-mm1 Andi Kleen
2005-01-14 9:27 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-14 10:27 ` 2.6.11-rc1-mm1 Nikita Danilov
2005-01-14 10:38 ` 2.6.11-rc1-mm1 Andi Kleen
2005-01-14 11:06 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-14 15:31 ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-14 21:11 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-14 22:58 ` 2.6.11-rc1-mm1 Tim Bird
2005-01-15 0:20 ` 2.6.11-rc1-mm1 Andi Kleen
2005-01-15 4:25 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-15 1:06 ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-15 4:18 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16 2:38 ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-16 6:00 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16 16:52 ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-16 21:18 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-17 1:37 ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-17 2:24 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-17 12:20 ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-17 20:32 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-17 22:31 ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-17 22:42 ` 2.6.11-rc1-mm1 Robert Wisniewski
2005-01-17 23:26 ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-17 23:41 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-18 0:02 ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-18 3:05 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-17 13:54 ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-17 21:27 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-17 23:57 ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-18 4:03 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-18 4:30 ` 2.6.11-rc1-mm1 Aaron Cohen
2005-01-18 4:46 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-18 8:07 ` 2.6.11-rc1-mm1 Tom Zanussi
2005-01-18 16:40 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-18 19:37 ` 2.6.11-rc1-mm1 Tom Zanussi
2005-01-18 15:31 ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-21 6:26 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-21 22:23 ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-23 7:43 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-23 7:52 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-23 8:28 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-24 0:38 ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-25 9:12 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-18 1:13 ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-18 2:52 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-17 17:02 ` 2.6.11-rc1-mm1 Tom Zanussi
2005-01-16 19:05 ` 2.6.11-rc1-mm1 Tom Zanussi
2005-01-19 11:14 ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-19 16:53 ` 2.6.11-rc1-mm1 Tom Zanussi
2005-01-16 16:14 ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-16 19:47 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16 20:30 ` 2.6.11-rc1-mm1 Tom Zanussi
2005-01-19 11:11 ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-14 15:24 ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-18 11:19 ` 2.6.11-rc1-mm1 Masami Hiramatsu
2005-01-18 11:46 ` 2.6.11-rc1-mm1 Andi Kleen
2005-01-18 14:52 ` [Lkst-develop] 2.6.11-rc1-mm1 Masami Hiramatsu
2005-01-14 12:36 ` 2.6.11-rc1-mm1 Miklos Szeredi
2005-01-14 13:04 ` 2.6.11-rc1-mm1 Kasper Sandberg
2005-01-14 18:35 ` 2.6.11-rc1-mm1 Andrew Morton
2005-01-14 19:08 ` 2.6.11-rc1-mm1 Rogério Brito
2005-01-14 19:41 ` 2.6.11-rc1-mm1 Peter Buckingham
2005-01-17 17:04 ` 2.6.11-rc1-mm1 Matthias Urlichs
2005-01-14 19:02 ` 2.6.11-rc1-mm1 Bill Davidsen
2005-01-14 15:07 ` 2.6.11-rc1-mm1 Barry K. Nathan
2005-01-14 16:56 ` 2.6.11-rc1-mm1 Dave Jones
2005-01-14 17:55 ` 2.6.11-rc1-mm1 Barry K. Nathan
2005-01-19 23:06 ` 2.6.11-rc1-mm1 Marcos D. Marado Torres
2005-01-19 23:54 ` 2.6.11-rc1-mm1 Barry K. Nathan
2005-01-14 15:35 ` 2.6.11-rc1-mm1 Zwane Mwaikambo
2005-01-14 22:03 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-14 17:35 ` [patch] 2.6.11-rc1-mm1: ip_tables.c: ipt_find_target must be EXPORT_SYMBOL'ed Adrian Bunk
2005-01-14 17:43 ` Patrick McHardy
2005-01-14 22:41 ` 2.6.11-rc1-mm1 Tim Bird
2005-01-14 22:46 ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-14 23:22 ` 2.6.11-rc1-mm1 Tim Bird
2005-01-15 0:24 ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-15 1:27 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16 16:18 ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-15 13:08 ` [RFC] Instrumentation (was Re: 2.6.11-rc1-mm1) Thomas Gleixner
2005-01-16 2:09 ` Karim Yaghmour
2005-01-16 3:11 ` Roman Zippel
2005-01-16 4:23 ` Karim Yaghmour
2005-01-16 23:43 ` Thomas Gleixner
2005-01-17 1:54 ` Karim Yaghmour
2005-01-17 10:26 ` Thomas Gleixner
2005-01-17 20:34 ` Karim Yaghmour
2005-01-17 22:18 ` Thomas Gleixner
2005-01-17 23:57 ` Karim Yaghmour
2005-01-18 8:46 ` Thomas Gleixner
2005-01-18 16:31 ` Karim Yaghmour
2005-01-19 7:13 ` Werner Almesberger
2005-01-19 17:38 ` Karim Yaghmour
2005-01-14 22:48 ` 2.6.11-rc1-mm1 Andre Eisenbach
2005-01-15 8:42 ` 2.6.11-rc1-mm1 Miklos Szeredi
2005-01-15 8:45 ` 2.6.11-rc1-mm1 Miklos Szeredi
[not found] ` <1105740276.8604.83.camel@tglx.tec.linutronix.de>
2005-01-14 23:09 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-15 0:01 ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-15 0:26 ` 2.6.11-rc1-mm1 Andrew Morton
2005-01-15 1:00 ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-15 1:25 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-15 10:20 ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-16 4:13 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16 15:19 ` 2.6.11-rc1-mm1 Robert Wisniewski
2005-01-15 1:14 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-15 9:57 ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-16 16:21 ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-16 19:49 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16 20:11 ` 2.6.11-rc1-mm1 Robert Wisniewski
2005-01-16 20:32 ` 2.6.11-rc1-mm1 Andrew Morton
2005-01-16 21:06 ` 2.6.11-rc1-mm1 Robert Wisniewski
2005-01-16 21:40 ` 2.6.11-rc1-mm1 Arjan van de Ven
2005-01-17 15:48 ` 2.6.11-rc1-mm1 Robert Wisniewski
2005-01-17 16:13 ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-17 21:38 ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16 20:39 ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-16 21:14 ` Robert Wisniewski [this message]
2005-01-15 2:58 ` 2.6.11-rc1-mm1 William Lee Irwin III
2005-01-17 22:19 ` 2.6.11-rc1-mm1 William Lee Irwin III
2005-01-16 0:59 ` 2.6.11-rc1-mm1 Joseph Fannin
2005-01-16 19:09 ` 2.6.11-rc1-mm1 Daniel Drake
2005-01-16 19:20 ` 2.6.11-rc1-mm1 William Lee Irwin III
2005-01-16 21:09 ` 2.6.11-rc1-mm1 Daniel Drake
2005-01-17 23:31 ` 2.6.11-rc1-mm1 J.A. Magallon
2005-01-18 2:35 ` 2.6.11-rc1-mm1 Daniel Drake
2005-01-18 2:54 ` [PATCH] Wait and retry mounting root device (revised) Daniel Drake
2005-01-18 0:34 ` Al Viro
2005-01-18 0:02 ` Randy.Dunlap
2005-01-18 8:05 ` Andries Brouwer
2005-01-18 8:28 ` Helge Hafting
2005-01-18 8:49 ` Andrew Morton
2005-01-18 13:20 ` Helge Hafting
2005-01-20 20:55 ` [PATCH] Configurable delay before mounting root device Daniel Drake
2005-01-20 20:24 ` Andrew Morton
2005-01-21 18:15 ` Daniel Drake
2005-01-20 22:49 ` William Park
2005-01-18 1:03 ` [PATCH] Wait and retry mounting root device (revised) William Park
2005-01-19 0:43 ` Werner Almesberger
2005-01-18 8:02 ` Andries Brouwer
2005-01-19 20:11 ` Frank van Maarseveen
2005-01-17 6:49 2.6.11-rc1-mm1 Prasanna S Panchamukhi
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=16874.55284.161722.553907@kix.watson.ibm.com \
--to=bob@watson.ibm.com \
--cc=akpm@osdl.org \
--cc=hch@infradead.org \
--cc=karim@opersys.com \
--cc=linux-kernel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®