From: "Jeff V. Merkey" <jmerkey@wolfmountaingroup.com>
To: Bill Davidsen <davidsen@tmr.com>
Cc: Linus Torvalds <torvalds@osdl.org>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
"H. Peter Anvin" <hpa@zytor.com>, Andi Kleen <ak@suse.de>,
Gerd Knorr <kraxel@suse.de>, Dave Jones <davej@redhat.com>,
Zachary Amsden <zach@vmware.com>, Pavel Machek <pavel@ucw.cz>,
Andrew Morton <akpm@osdl.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Zwane Mwaikambo <zwane@arm.linux.org.uk>,
Pratap Subrahmanyam <pratap@vmware.com>,
Christopher Li <chrisl@vmware.com>,
"Eric W. Biederman" <ebiederm@xmission.com>,
Ingo Molnar <mingo@elte.hu>
Subject: Re: [patch] SMP alternatives
Date: Mon, 28 Nov 2005 15:19:38 -0700 [thread overview]
Message-ID: <438B827A.2090609@wolfmountaingroup.com> (raw)
In-Reply-To: <438B600C.1050604@tmr.com>
Bill Davidsen wrote:
> Linus Torvalds wrote:
>
>>
>> On Wed, 23 Nov 2005, Daniel Jacobowitz wrote:
>>
>>> Why should we use a silicon based solution for this, when I posit that
>>> there are simpler and equally effective userspace solutions?
>>
>>
>>
>> Name them.
>>
>> In user space, doing things like clever run-time linking things is
>> actually horribly bad. It causes COW faults at startup, and/or makes
>> the compiler have to do indirections unnecessarily. Both of which
>> actually make caches less effective, because now processes that
>> really effectively do have exactly the same contents have them in
>> different pages.
>>
>> The other alternative (which apparently glibc actually does use) is
>> to dynamically branch over the lock prefixes, which actually works
>> better: it's more work dynamically, but it's much cheaper from a
>> startup standpoint and there's no memory duplication, so while it is
>> the "stupid" approach, it's actually better than the clever one.
>>
>> The third alternative is to know at link-time that the process never
>> does anything threaded, but that needs more developer attention and
>> non-standard setups, and you _will_ get it wrong (some library will
>> create some thread without the developer even realizing). It also has
>> the duplicated library overhead (but at least now the duplication is
>> just twice, not "each process duplicates its own private pointer")
>>
>> In short, there simply isn't any good alternatives. The end result is
>> that thread-safe libraries are always in practice thread-safe even on
>> UP, even though that serializes the CPU altogether unnecessarily.
>>
>> I'm sure you can make up alternatives every time you hit one
>> _particular_ library, but that just doesn't scale in the real world.
>>
>> In contrast, the simple silicon support scales wonderfully well.
>> Suddenly libraries can be thread-safe _and_ efficient on UP too. You
>> get to eat your cake and have it too.
>
>
> I believe that a hardware solution would also accomodate the case
> where a program runs unthreaded for most of the processing, and only
> starts threads to do the final stage "report generation" tasks, where
> that makes sense. I don't believe that it helps in the case where init
> uses threads and then reverts to a single thread for the balance of
> the task. I can't think of anything which does that, so it's probably
> a non-critical corner case, or something the thread library could
> correct.
>
>
In 2-3 years we might actually see the hardware solution, maybee .... I
am skeptical Intel will move quickly on it. A software solution will get
out faster.
Jeff
next prev parent reply other threads:[~2005-11-28 22:46 UTC|newest]
Thread overview: 163+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-10 0:32 [PATCH 1/10] Cr4 is valid on some 486s Zachary Amsden
2005-11-11 10:36 ` Pavel Machek
2005-11-11 17:49 ` H. Peter Anvin
2005-11-11 18:00 ` Maciej W. Rozycki
2005-11-11 19:36 ` Zachary Amsden
2005-11-11 19:58 ` Linus Torvalds
2005-11-11 20:14 ` Zachary Amsden
2005-11-11 20:22 ` Linus Torvalds
2005-11-13 7:42 ` Dave Jones
2005-11-13 10:59 ` Andi Kleen
2005-11-13 17:26 ` Alan Cox
2005-11-13 17:09 ` Eric W. Biederman
2005-11-13 19:00 ` Andi Kleen
2005-11-13 19:07 ` Eric W. Biederman
2005-11-13 19:41 ` Alan Cox
2005-11-13 19:36 ` Linus Torvalds
2005-11-13 21:32 ` Alan Cox
2005-11-14 7:46 ` Arjan van de Ven
2005-11-13 19:56 ` H. Peter Anvin
2005-11-13 19:24 ` Linus Torvalds
2005-11-13 20:29 ` Linus Torvalds
2005-11-14 15:06 ` Gerd Knorr
2005-11-14 19:25 ` Linus Torvalds
2005-11-14 19:46 ` Zachary Amsden
2005-11-14 19:52 ` Arjan van de Ven
2005-11-14 20:34 ` Zachary Amsden
2005-11-14 20:52 ` Arjan van de Ven
2005-11-15 14:12 ` Gerd Knorr
2005-11-15 16:01 ` Gerd Knorr
2005-11-15 16:04 ` Zachary Amsden
2005-11-15 16:06 ` Arjan van de Ven
2005-11-15 16:10 ` Dave Jones
2005-11-15 16:14 ` H. Peter Anvin
2005-11-15 16:19 ` Dave Jones
2005-11-15 16:25 ` Arjan van de Ven
2005-11-15 16:34 ` Zachary Amsden
2005-11-15 16:28 ` H. Peter Anvin
2005-11-15 16:24 ` Zachary Amsden
2005-11-15 16:52 ` Linus Torvalds
2005-11-15 16:16 ` Gerd Knorr
2005-11-15 16:08 ` Roland Dreier
2005-11-16 9:58 ` Gerd Knorr
2005-11-15 16:12 ` Linus Torvalds
2005-11-15 16:16 ` Dave Jones
2005-11-15 16:27 ` Gerd Knorr
2005-11-16 16:12 ` [RFC] SMP alternatives Gerd Knorr
2005-11-22 17:48 ` [patch] " Gerd Knorr
2005-11-22 18:01 ` Pavel Machek
2005-11-23 15:12 ` Vincent Hanquez
2005-11-23 19:17 ` Andi Kleen
2005-11-23 15:29 ` Gerd Knorr
2005-11-23 16:42 ` Alan Cox
2005-11-23 16:39 ` Andi Kleen
2005-11-23 17:21 ` Alan Cox
2005-11-23 16:59 ` Andi Kleen
2005-11-23 22:00 ` Alan Cox
2005-11-24 13:13 ` Andi Kleen
2005-11-24 13:30 ` Eric W. Biederman
2005-11-24 13:39 ` Andi Kleen
2005-11-24 13:58 ` Eric W. Biederman
2005-11-24 19:16 ` thockin
2005-11-24 19:26 ` Andi Kleen
2005-11-24 14:34 ` Alan Cox
2005-11-24 14:22 ` Andi Kleen
2005-11-24 15:15 ` Alan Cox
2005-11-24 14:55 ` Andi Kleen
2005-11-24 15:09 ` Eric W. Biederman
2005-11-24 15:36 ` Andi Kleen
2005-11-24 16:49 ` Eric W. Biederman
2005-11-24 19:12 ` thockin
2005-11-24 19:14 ` Andi Kleen
2005-11-24 19:24 ` thockin
2005-11-24 19:29 ` Andi Kleen
2005-11-24 19:44 ` thockin
2005-11-24 21:20 ` Andi Kleen
2005-11-24 21:40 ` thockin
2005-11-24 23:33 ` Eric W. Biederman
2005-11-24 23:12 ` Alan Cox
2005-11-24 22:48 ` thockin
2005-11-24 23:35 ` Andi Kleen
2005-11-25 0:13 ` Alan Cox
2005-11-25 1:33 ` H. Peter Anvin
2005-11-28 19:15 ` Bill Davidsen
2005-11-24 16:02 ` Alan Cox
2005-11-24 19:09 ` thockin
2005-11-24 14:30 ` Alan Cox
2005-11-23 17:02 ` Linus Torvalds
2005-11-23 18:02 ` H. Peter Anvin
2005-11-23 18:42 ` Linus Torvalds
2005-11-23 17:26 ` Jeff V. Merkey
2005-11-23 19:03 ` Linus Torvalds
2005-11-23 19:31 ` jmerkey
2005-11-23 18:46 ` Andi Kleen
2005-11-23 19:12 ` H. Peter Anvin
2005-11-23 19:30 ` jmerkey
2005-11-23 21:44 ` Alan Cox
2005-11-23 21:13 ` Andi Kleen
2005-11-23 21:46 ` Jeff Garzik
2005-11-23 22:23 ` Andi Kleen
2005-11-23 22:30 ` Pavel Machek
2005-11-23 22:05 ` Alan Cox
2005-11-23 21:36 ` Arjan van de Ven
2005-11-23 21:36 ` Andi Kleen
2005-11-23 22:13 ` Linus Torvalds
2005-11-23 21:36 ` Linus Torvalds
2005-11-23 21:43 ` Andi Kleen
2005-11-23 22:15 ` Linus Torvalds
2005-11-23 22:22 ` Andi Kleen
2005-11-23 22:25 ` H. Peter Anvin
2005-11-23 22:32 ` Andi Kleen
2005-11-23 22:36 ` H. Peter Anvin
2005-11-23 22:40 ` Andi Kleen
2005-11-23 22:52 ` H. Peter Anvin
2005-11-23 23:10 ` Linus Torvalds
2005-11-24 0:55 ` Jeff Garzik
2005-11-23 21:48 ` Daniel Jacobowitz
2005-11-23 21:53 ` H. Peter Anvin
2005-11-23 22:03 ` Daniel Jacobowitz
2005-11-23 22:09 ` H. Peter Anvin
2005-11-23 22:21 ` Linus Torvalds
2005-11-23 23:29 ` Eric W. Biederman
2005-11-23 23:40 ` Linus Torvalds
2005-11-23 22:19 ` Linus Torvalds
2005-11-23 22:20 ` Daniel Jacobowitz
2005-11-23 23:08 ` Linus Torvalds
2005-11-23 23:02 ` Jeff V. Merkey
2005-11-23 23:42 ` Daniel Jacobowitz
2005-11-23 23:59 ` Linus Torvalds
2005-11-24 2:06 ` Daniel Jacobowitz
2005-11-24 22:32 ` Ulrich Drepper
2005-11-28 19:58 ` Bill Davidsen
2005-11-24 1:02 ` Jeff Garzik
2005-11-24 13:01 ` Pádraig Brady
2005-11-24 13:12 ` Arjan van de Ven
2005-11-28 19:52 ` Bill Davidsen
2005-11-28 20:05 ` Zachary Amsden
2005-11-28 22:19 ` Jeff V. Merkey [this message]
2005-11-28 23:00 ` Zachary Amsden
2005-11-28 23:07 ` H. Peter Anvin
2005-11-28 23:30 ` Zachary Amsden
2005-11-28 23:32 ` H. Peter Anvin
2005-11-28 23:12 ` Andi Kleen
2005-11-23 22:50 ` Alan Cox
2005-11-23 22:22 ` H. Peter Anvin
2005-11-25 7:38 ` Chris Wedgwood
2005-11-25 17:33 ` Linus Torvalds
2005-11-28 20:25 ` Bill Davidsen
2005-11-25 20:13 ` H. Peter Anvin
2005-11-24 3:23 ` Mikulas Patocka
2005-11-24 3:31 ` Mikulas Patocka
2005-11-24 3:55 ` H. Peter Anvin
2005-11-24 22:30 ` Ulrich Drepper
2005-11-23 16:43 ` Gerd Knorr
2005-11-23 16:51 ` H. Peter Anvin
-- strict thread matches above, loose matches on Subject: below --
2005-11-24 17:48 linux
2005-11-24 18:48 ` Linus Torvalds
2005-11-24 18:24 colin
2006-01-24 15:33 [PATCH] " Gerd Hoffmann
2006-01-24 16:22 ` Ben Collins
2006-01-25 9:20 ` Gerd Hoffmann
2006-01-26 10:22 ` Pavel Machek
2006-01-26 11:17 ` Gerd Hoffmann
2006-01-26 11:48 ` Pavel Machek
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=438B827A.2090609@wolfmountaingroup.com \
--to=jmerkey@wolfmountaingroup.com \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=chrisl@vmware.com \
--cc=davej@redhat.com \
--cc=davidsen@tmr.com \
--cc=ebiederm@xmission.com \
--cc=hpa@zytor.com \
--cc=kraxel@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=pavel@ucw.cz \
--cc=pratap@vmware.com \
--cc=torvalds@osdl.org \
--cc=zach@vmware.com \
--cc=zwane@arm.linux.org.uk \
/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.