public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Michael Poole <poole@troilus.org>
To: Padraig Brady <padraig@antefacto.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: horrible disk thorughput on itanium
Date: 07 Dec 2001 17:26:34 -0500	[thread overview]
Message-ID: <87oflapsyt.fsf@sanosuke.troilus.org> (raw)
In-Reply-To: <p73n10v6spi.fsf@amdsim2.suse.de> <Pine.LNX.4.33.0112070941330.8465-100000@penguin.transmeta.com> <20011207185847.A20876@wotan.suse.de> <87wuzyq4ms.fsf@sanosuke.troilus.org> <3C110C0B.4030102@antefacto.com> <87snampvww.fsf@sanosuke.troilus.org> <3C11368F.4020408@antefacto.com>
In-Reply-To: <3C11368F.4020408@antefacto.com>

Padraig Brady <padraig@antefacto.com> writes:

> Well you have to deal with the general case. A single threaded
> app linking against a multithreaded lib. It mightn't be just
> shared FILE*'s that could cause problems.

The question was about putc(), and presumably other stdio functions.
They deal with FILE*'s.  They are also commonly used and small
operations, so forcing locking on an app that doesn't ask for it can
(and has in the past) cause a major performance degredation.  I bet
you could find very similar results for memory allocation in other
applications.

> > Linus's suggestion to add hooks to pthread_create() gets around that
> > problem, anyway.
> 
> I don't think this will work as I said before current apps that
> use _unlocked() functions directly manipulate the stdio structures,
> hence a "new smarter locking stdio" would never get used by existing
> compiled apps.

As Linus pointed out, you just need another test in those macros, so
they can be forced to call functions rather than using inline code.
When you call a function, it can use whatever new smarter locking
library you want.

> > Alternatively, the multi-threaded library could
> > require any application linking to it to define _REENTRANT.
> 
> It could, but what if an existing interface (lib) is changed
> from signle to multithreaded. You can't preclude this.

I certainly can preclude that.  I'd consider adding threads and their
locking considerations to the library a change in the API and ABI --
and quite a big one at that.  If you change the ABI (rather than just
extending it), you must increase the major version number, which
prevents linking with those applications that expect the semantics of
earlier versions.

(BSD variants have in the past had both libc and libc_r, where only
libc_r makes you pay locking overhead.  This is yet another way to
enforce the ABI separation between single- and multi-threaded
applications, with different tradeoffs than the others mentioned.)

-- Michael

  reply	other threads:[~2001-12-07 22:26 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <p73r8q86lpn.fsf@amdsim2.suse.de.suse.lists.linux.kernel>
     [not found] ` <Pine.LNX.4.33.0112070710120.747-100000@mikeg.weiden.de.suse.lists.linux.kernel>
     [not found]   ` <9upmqm$7p4$1@penguin.transmeta.com.suse.lists.linux.kernel>
2001-12-07 13:54     ` horrible disk thorughput on itanium Andi Kleen
2001-12-07 14:20       ` Padraig Brady
2001-12-07 16:14       ` Richard Gooch
2001-12-07 17:18         ` Robert Love
2001-12-07 17:40           ` Richard Gooch
2001-12-07 17:48             ` Robert Love
2001-12-07 17:45       ` Linus Torvalds
2001-12-07 17:58         ` Andi Kleen
2001-12-07 18:14           ` Michael Poole
2001-12-07 18:35             ` Padraig Brady
2001-12-07 21:22               ` Michael Poole
2001-12-07 21:37                 ` Padraig Brady
2001-12-07 22:26                   ` Michael Poole [this message]
2001-12-07 18:15           ` Linus Torvalds
2001-12-07 18:41             ` Padraig Brady
2001-12-07 18:33           ` Padraig Brady
2001-12-07 20:44         ` Greg Hennessy
2001-12-07 21:37           ` Marco Colombo
2001-12-07 20:42       ` David S. Miller
     [not found]         ` <3C112DE4.60206@antefacto.com>
     [not found]           ` <20011207.130316.39156883.davem@redhat.com>
2001-12-09  1:19             ` [OT] fputc vs putc " Tom Vier
2001-12-09  1:33               ` Eric W. Biederman
2001-12-09  9:27                 ` H. Peter Anvin
2001-12-09 19:14                   ` Tom Vier
2001-12-09 22:15                     ` H. Peter Anvin
2001-12-07  6:42 Dan Kegel
     [not found] <20011206110713.A8404@cox.rr.com.suse.lists.linux.kernel>
     [not found] ` <3C0FD955.4510B738@zip.com.au.suse.lists.linux.kernel>
2001-12-06 22:13   ` Andi Kleen
2001-12-07  6:11     ` Mike Galbraith
2001-12-07  6:15       ` Linus Torvalds
2001-12-07 12:32         ` Greg Hennessy
2001-12-07 17:57           ` Marco Colombo
  -- strict thread matches above, loose matches on Subject: below --
2001-12-06 16:07 Greg Hennessy
2001-12-06 16:17 ` Arjan van de Ven
2001-12-06 20:47 ` Andrew Morton
2001-12-09 23:13 ` Kurt Garloff

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=87oflapsyt.fsf@sanosuke.troilus.org \
    --to=poole@troilus.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=padraig@antefacto.com \
    /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