From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
LKML <linux-kernel@vger.kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Ingo Molnar <mingo@elte.hu>, Steven Rostedt <rostedt@goodmis.org>,
Tony Lindgren <tony@atomide.com>, Mike Galbraith <efault@gmx.de>
Subject: Re: [RFC PATCH 00/11] sched: CFS low-latency features
Date: Fri, 27 Aug 2010 12:09:46 -0400 [thread overview]
Message-ID: <20100827160946.GG14926@Krystal> (raw)
In-Reply-To: <1282923686.1975.2780.camel@laptop>
* Peter Zijlstra (peterz@infradead.org) wrote:
> On Fri, 2010-08-27 at 11:21 -0400, Mathieu Desnoyers wrote:
> > SIGEV_THREAD
> > Upon timer expiration, invoke sigev_notify_function as if it
> > were the start function of a new thread. (Among the implementa‐
> > tion possibilities here are that each timer notification could
> > result in the creation of a new thread, or that a single thread
> > is created to receive all notifications.) The function is
> > invoked with sigev_value as its sole argument. If
> > sigev_notify_attributes is not NULL, it should point to a
> > pthread_attr_t structure that defines attributes for the new
> > thread (see pthread_attr_init(3).
> >
> > So basically, it's the glibc implementation that is broken, not the standard.
>
> The standard is broken too, what context will the new thread inherit?
Besides pthread_attr_t, thinking of the scheduler/cgroups/etc stuff, I'd think
it might be expected to inherit the state of the thread which calls
timer_create(). But this is not what glibc does right now, and it is not spelled
out clearly by the standard.
> The pthread_attr_t stuff tries to cover some of that, but pthread_attr_t
> doesn't cover all inherited task attributes, and allows for some very
> 'interesting' bugs [1].
(see below)
>
> The specification also doesn't cover the case where the handler takes
> more time to execute than the timer interval.
Why should it ? It seems valid for a workload to result in spawning many threads
bound to more than a single core on a multi-core system. So concurrency
management should be performed by the application.
>
> [1] - consider the case where pthread_attr_t includes the stack and we
> use a spawn thread on expire policy and then run into the situation
> where the handler is delayed past the next expiration.
Setting a thread stack and generating the signal more than once is taken into
account in the standard. It leads to unspecified result (IOW: don't do this):
http://www.opengroup.org/onlinepubs/009695399/functions/timer_create.html
"If evp->sigev_sigev_notify is SIGEV_THREAD and sev->sigev_notify_attributes is
not NULL, if the attribute pointed to by sev->sigev_notify_attributes has a
thread stack address specified by a call to pthread_attr_setstack() or
pthread_attr_setstackaddr(), the results are unspecified if the signal is
generated more than once."
Thanks,
Mathieu
--
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
next prev parent reply other threads:[~2010-08-27 16:09 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-26 18:09 [RFC PATCH 00/11] sched: CFS low-latency features Mathieu Desnoyers
2010-08-26 18:09 ` [RFC PATCH 01/11] sched: fix string comparison in features Mathieu Desnoyers
2010-08-26 18:09 ` [RFC PATCH 02/11] sched: debug spread check account for nr_running Mathieu Desnoyers
2010-08-26 18:09 ` [RFC PATCH 03/11] sched: FAIR_SLEEPERS feature Mathieu Desnoyers
2010-08-26 18:09 ` [RFC PATCH 04/11] sched: debug cleanup place entity Mathieu Desnoyers
2010-08-26 18:09 ` [RFC PATCH 05/11] sched buddy enable buddy logic starting at 2 running threads Mathieu Desnoyers
2010-08-26 18:09 ` [RFC PATCH 06/11] sched: dynamic min_vruntime Mathieu Desnoyers
2010-08-26 18:09 ` [RFC PATCH 07/11] sched rename struct task in_iowait field to sched_in_iowait Mathieu Desnoyers
2010-08-26 18:09 ` [RFC PATCH 08/11] sched input interactivity-driven next buddy Mathieu Desnoyers
2010-08-26 18:09 ` [RFC PATCH 09/11] sched: timer-driven " Mathieu Desnoyers
2010-08-27 18:02 ` [RFC PATCH 09/11] sched: timer-driven next buddy (update) Mathieu Desnoyers
2010-08-27 18:14 ` Thomas Gleixner
2010-08-26 18:09 ` [RFC PATCH 10/11] sched: fork expedited Mathieu Desnoyers
2010-08-26 18:09 ` [RFC PATCH 11/11] sched: fair sleepers for timer and interactive Mathieu Desnoyers
2010-08-26 18:57 ` [RFC PATCH 00/11] sched: CFS low-latency features Peter Zijlstra
2010-08-26 21:25 ` Thomas Gleixner
2010-08-26 22:22 ` Thomas Gleixner
2010-08-26 23:09 ` Mathieu Desnoyers
2010-08-26 23:36 ` Mathieu Desnoyers
2010-08-27 7:38 ` Peter Zijlstra
2010-08-27 15:23 ` Mathieu Desnoyers
2010-08-27 8:43 ` Thomas Gleixner
2010-08-27 15:50 ` Mathieu Desnoyers
2010-08-27 7:37 ` Peter Zijlstra
2010-08-27 15:21 ` Mathieu Desnoyers
2010-08-27 15:41 ` Peter Zijlstra
2010-08-27 16:09 ` Mathieu Desnoyers [this message]
2010-08-27 17:27 ` Peter Zijlstra
2010-08-27 18:32 ` Mathieu Desnoyers
2010-08-27 19:23 ` Peter Zijlstra
2010-08-27 19:57 ` Mathieu Desnoyers
2010-08-31 15:02 ` Mathieu Desnoyers
2010-08-26 23:18 ` Paul E. McKenney
2010-08-26 23:28 ` Mathieu Desnoyers
2010-08-26 23:38 ` Paul E. McKenney
2010-08-26 23:53 ` Mathieu Desnoyers
2010-08-27 0:09 ` Paul E. McKenney
2010-08-27 15:18 ` Mathieu Desnoyers
2010-08-27 15:20 ` Thomas Gleixner
2010-08-27 15:30 ` Mathieu Desnoyers
2010-08-27 15:41 ` Peter Zijlstra
2010-08-26 23:49 ` Mathieu Desnoyers
2010-08-27 7:42 ` Peter Zijlstra
2010-08-27 8:19 ` Mike Galbraith
2010-08-27 15:43 ` Mathieu Desnoyers
2010-08-27 18:38 ` Mathieu Desnoyers
2010-08-28 7:33 ` Mike Galbraith
2010-08-27 10:47 ` Indan Zupancic
2010-08-27 10:58 ` Peter Zijlstra
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=20100827160946.GG14926@Krystal \
--to=mathieu.desnoyers@efficios.com \
--cc=akpm@linux-foundation.org \
--cc=efault@gmx.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=tony@atomide.com \
--cc=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 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.