From: Jan Kiszka <jan.kiszka@siemens.com>
To: Ronny Meeus <ronny.meeus@gmail.com>
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai] [xenomai-forge] timer-internal consume a lot of cpu
Date: Thu, 18 Dec 2014 14:35:10 +0100 [thread overview]
Message-ID: <5492D80E.3010701@siemens.com> (raw)
In-Reply-To: <CAMJ=MEeWPyBFBbjj7_JLENZQ+xBkxbaKGiZBehKCatVa-1owqA@mail.gmail.com>
On 2014-12-18 13:28, Ronny Meeus wrote:
> On Thu, Dec 18, 2014 at 10:04 AM, Jan Kiszka <jan.kiszka@siemens.com> wrote:
>> On 2014-12-18 09:00, Ronny Meeus wrote:
>>>>
>>>> A release of the glibc that fixes this issue. I must admit that I did
>>>> not track this problem lately. Jan likely knows better here.
>>>>
>>>
>>> Jan,
>>>
>>> what version glibc solves the priority inversion issue on conditional variables?
>>> I already tried the glibc 2.18 but the issue is still there.
>>
>> The bug is still not fixed, and discussion stalled again, see
>> https://sourceware.org/bugzilla/show_bug.cgi?id=11588
>>
>> Jan
>>
>> --
>> Siemens AG, Corporate Technology, CT RTC ITP SES-DE
>> Corporate Competence Center Embedded Linux
>
> Philippe, Jan
>
> as long as this issue is not fixed in glibc, it is not OK to use
> conditional variables
> in application space for real-time applications in my opinion.
...when combining them with PI mutexes, right. For real-time QEMU/KVM, I
worked around this by using prio-ceiling mutexes. That is by far not
optimal, performance-wise, but at least you avoid random lockups or the
other side effects of that bug.
>
> Since the pSOS skin uses conditional variables to implement events and realtime
> priority threads to implement pSOS tasks, it is by definition broken
> and not useable
> for any real application.
>
> For example the internal-timer server, sending events to lower priority tasks,
> will be blocked until all middle prio tasks have completed. We have seen
> massive load consumed by the internal-timer server due to this.
> What happens is that the timer thread is blocked on the mutex currently owned
> by an thread running at normal (lower) priority. Every time a Linux
> timer expires,
> a signal is sent to the timer-server which will wake-up the task,
> return to the c-library
> which will re-invoke the futex call. In case a high number of timers
> is used, the overhead
> of this can be large. Since the timer-server is running at the highest
> priority (-100) we
> see all kinds of strange crashes.
>
> The same priority inversion is true for our own drivers since they are
> running at
> high prio as well.
>
> Has the replacement of these conditional variables by some other POSIX mechanism
> (like mutexes) ever been considered?
Sometimes it is possible to design a algorithm that uses a semaphore for
event signaling instead. Doesn't work for all cond-var scenarios, though.
Jan
--
Siemens AG, Corporate Technology, CT RTC ITP SES-DE
Corporate Competence Center Embedded Linux
next prev parent reply other threads:[~2014-12-18 13:35 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-07 16:26 [Xenomai] [xenomai-forge] timer-internal consume a lot of cpu Ronny Meeus
2014-12-16 17:36 ` Ronny Meeus
2014-12-16 17:58 ` Philippe Gerum
2014-12-16 19:41 ` Ronny Meeus
2014-12-16 20:07 ` Philippe Gerum
2014-12-18 8:00 ` Ronny Meeus
2014-12-18 9:04 ` Jan Kiszka
2014-12-18 12:28 ` Ronny Meeus
2014-12-18 13:35 ` Jan Kiszka [this message]
2014-12-18 14:17 ` Ronny Meeus
2014-12-18 14:12 ` Gilles Chanteperdrix
2014-12-18 14:58 ` Jan Kiszka
2014-12-18 15:04 ` Gilles Chanteperdrix
2014-12-18 15:25 ` Ronny Meeus
2014-12-18 15:30 ` Gilles Chanteperdrix
2014-12-18 15:35 ` Jan Kiszka
2014-12-18 15:49 ` Ronny Meeus
2014-12-18 16:06 ` Jan Kiszka
2014-12-18 17:21 ` Ronny Meeus
2014-12-23 17:36 ` Ronny Meeus
2015-01-23 16:45 ` Philippe Gerum
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=5492D80E.3010701@siemens.com \
--to=jan.kiszka@siemens.com \
--cc=ronny.meeus@gmail.com \
--cc=xenomai@xenomai.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.