All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-help] Time for rt_mutex_acquire
@ 2007-08-16 13:11 Dirk Eibach
  2007-08-16 18:14 ` Gilles Chanteperdrix
  0 siblings, 1 reply; 6+ messages in thread
From: Dirk Eibach @ 2007-08-16 13:11 UTC (permalink / raw)
  To: Xenomai help

Hello,

I'm wondering how long a rt_mutex_acquire is supposed to take on a PPC405 
platform. I'm getting times about 50 usec here, which is too much for my 
application. Is anything wrong in my kernel/xenomai configuration or is 
this time to expected?

Cheers,
Dirk





^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xenomai-help] Time for rt_mutex_acquire
  2007-08-16 13:11 [Xenomai-help] Time for rt_mutex_acquire Dirk Eibach
@ 2007-08-16 18:14 ` Gilles Chanteperdrix
  2007-08-17 11:00   ` Dirk Eibach
  0 siblings, 1 reply; 6+ messages in thread
From: Gilles Chanteperdrix @ 2007-08-16 18:14 UTC (permalink / raw)
  To: Dirk Eibach; +Cc: Xenomai help

Dirk Eibach wrote:
 > Hello,
 > 
 > I'm wondering how long a rt_mutex_acquire is supposed to take on a PPC405 
 > platform. I'm getting times about 50 usec here, which is too much for my 
 > application. Is anything wrong in my kernel/xenomai configuration or is 
 > this time to expected?

How do you measure this ? Are you sure the mutex is free when you try to
acquire it ?

-- 


					    Gilles Chanteperdrix.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xenomai-help] Time for rt_mutex_acquire
  2007-08-16 18:14 ` Gilles Chanteperdrix
@ 2007-08-17 11:00   ` Dirk Eibach
  2007-08-17 12:04     ` Gilles Chanteperdrix
  0 siblings, 1 reply; 6+ messages in thread
From: Dirk Eibach @ 2007-08-17 11:00 UTC (permalink / raw)
  To: gilles.chanteperdrix; +Cc: Xenomai help

gilles.chanteperdrix@xenomai.org wrote:
> Dirk Eibach wrote:
>  > Hello,
>  > 
>  > I'm wondering how long a rt_mutex_acquire is supposed to take on a PPC405 
>  > platform. I'm getting times about 50 usec here, which is too much for my 
>  > application. Is anything wrong in my kernel/xenomai configuration or is 
>  > this time to expected?
> 
> How do you measure this ? Are you sure the mutex is free when you try to
> acquire it ?
> 

I prepared a small testcase. It shows about 8.300 ticks, which is about 30 
usec on my platform (266MHz).

#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <sys/mman.h>

#include <native/mutex.h>
#include <native/task.h>
#include <native/timer.h>

#include <rtdm/rtserial.h>

#define TOGGLE \
	do {rt_dev_ioctl(0, _IOR(RTIOC_TYPE_SERIAL, 0xdf, int), 0);} while(0);

RT_TASK demo_task;

/* NOTE: error handling omitted. */
static void
ppc_getcounter(unsigned long long *v)
{
	register unsigned long tbu, tb, tbu2;

     loop:
	asm volatile ("mftbu %0" : "=r" (tbu) );
	asm volatile ("mftb  %0" : "=r" (tb)  );
	asm volatile ("mftbu %0" : "=r" (tbu2));
	if (__builtin_expect(tbu != tbu2, 0)) goto loop;

	/* The slightly peculiar way of writing the next lines is
	compiled better by GCC than any other way I tried. */
	((long*)(v))[0] = tbu;
	((long*)(v))[1] = tb;
}

void demo(void *arg)
{
	RT_MUTEX mutex;

	rt_mutex_create (&mutex, NULL);
	int file_descriptor = rt_dev_open("rtser0", O_RDWR | O_NOCTTY);
	
	unsigned long long count0, count1;
	
	while (1) {
		ppc_getcounter(&count0);
		rt_mutex_acquire(&mutex, TM_INFINITE);
		ppc_getcounter(&count1);
		printf("ticks for rt_mutex_acquire: %lld\n", count1- count0);
		rt_task_sleep(rt_timer_ns2ticks(1 * 1000000000llu));
		rt_mutex_release(&mutex);
		rt_task_sleep(rt_timer_ns2ticks(1 * 1000000000llu));
	}
}

void catch_signal(int sig)
{
}

int main(int argc, char* argv[])
{
	signal(SIGTERM, catch_signal);
	signal(SIGINT, catch_signal);

	/* Avoids memory swapping for this program */
	mlockall(MCL_CURRENT|MCL_FUTURE);

	/*
	 * Arguments: &task,
	 *            name,
	 *            stack size (0=default),
	 *            priority,
	 *            mode (FPU, start suspended, ...)
	 */
	rt_task_create(&demo_task, "trivial", 0, 99, 0);

	/*
	 * Arguments: &task,
	 *            task function,
	 *            function argument
	 */
	rt_task_start(&demo_task, &demo, NULL);

	pause();

	rt_task_delete(&demo_task);
}


-- 
Dirk Eibach
Entwicklung
Guntermann & Drunck GmbH Systementwicklung





^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xenomai-help] Time for rt_mutex_acquire
  2007-08-17 11:00   ` Dirk Eibach
@ 2007-08-17 12:04     ` Gilles Chanteperdrix
  0 siblings, 0 replies; 6+ messages in thread
From: Gilles Chanteperdrix @ 2007-08-17 12:04 UTC (permalink / raw)
  To: Dirk Eibach; +Cc: Xenomai help

On 8/17/07, Dirk Eibach <eibach@domain.hid> wrote:
> gilles.chanteperdrix@xenomai.org wrote:
> > Dirk Eibach wrote:
> >  > Hello,
> >  >
> >  > I'm wondering how long a rt_mutex_acquire is supposed to take on a PPC405
> >  > platform. I'm getting times about 50 usec here, which is too much for my
> >  > application. Is anything wrong in my kernel/xenomai configuration or is
> >  > this time to expected?
> >
> > How do you measure this ? Are you sure the mutex is free when you try to
> > acquire it ?
> >
>
> I prepared a small testcase. It shows about 8.300 ticks, which is about 30
> usec on my platform (266MHz).

Did you try to call ppc_getcounter twice in a raw to measure the
overhead of this function ?


-- 
                                               Gilles Chanteperdrix


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xenomai-help] Time for rt_mutex_acquire
@ 2007-08-17 12:13 Dirk Eibach
  2007-08-17 12:45 ` Jan Kiszka
  0 siblings, 1 reply; 6+ messages in thread
From: Dirk Eibach @ 2007-08-17 12:13 UTC (permalink / raw)
  To: Xenomai help

gilles.chanteperdrix@xenomai.org wrote:
> On 8/17/07, Dirk Eibach <eibach@domain.hid> wrote:
>> gilles.chanteperdrix@xenomai.org wrote:
>>> Dirk Eibach wrote:
>>>  > Hello,
>>>  >
>>>  > I'm wondering how long a rt_mutex_acquire is supposed to take on a PPC405
>>>  > platform. I'm getting times about 50 usec here, which is too much for my
>>>  > application. Is anything wrong in my kernel/xenomai configuration or is
>>>  > this time to expected?
>>>
>>> How do you measure this ? Are you sure the mutex is free when you try to
>>> acquire it ?
>>>
>> I prepared a small testcase. It shows about 8.300 ticks, which is about 30
>> usec on my platform (266MHz).
> 
> Did you try to call ppc_getcounter twice in a raw to measure the
> overhead of this function ?

Calling ppc_getcounter twice in a raw results in 116 ticks.

Cheers.
-- 
Dirk Eibach
Entwicklung
Guntermann & Drunck GmbH Systementwicklung





^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xenomai-help] Time for rt_mutex_acquire
  2007-08-17 12:13 Dirk Eibach
@ 2007-08-17 12:45 ` Jan Kiszka
  0 siblings, 0 replies; 6+ messages in thread
From: Jan Kiszka @ 2007-08-17 12:45 UTC (permalink / raw)
  To: Dirk Eibach; +Cc: Xenomai help

[-- Attachment #1: Type: text/plain, Size: 1398 bytes --]

Dirk Eibach wrote:
> gilles.chanteperdrix@xenomai.org wrote:
>> On 8/17/07, Dirk Eibach <eibach@domain.hid> wrote:
>>> gilles.chanteperdrix@xenomai.org wrote:
>>>> Dirk Eibach wrote:
>>>>  > Hello,
>>>>  >
>>>>  > I'm wondering how long a rt_mutex_acquire is supposed to take on a PPC405
>>>>  > platform. I'm getting times about 50 usec here, which is too much for my
>>>>  > application. Is anything wrong in my kernel/xenomai configuration or is
>>>>  > this time to expected?
>>>>
>>>> How do you measure this ? Are you sure the mutex is free when you try to
>>>> acquire it ?
>>>>
>>> I prepared a small testcase. It shows about 8.300 ticks, which is about 30
>>> usec on my platform (266MHz).
>> Did you try to call ppc_getcounter twice in a raw to measure the
>> overhead of this function ?
> 
> Calling ppc_getcounter twice in a raw results in 116 ticks.

Is that service RT-safe, means does it stay in user space and issue no
Linux syscall? Maybe some of the PPC gurus can comment on this as well
(/me is lacking comparative numbers).

Besides this, you may want to try running the latency tracer on your
scenario. xntrace_user_start() and xntrace_user_stop(0) would frame the
path you want to measure, /proc/ipipe/trace/frozen will show its kernel
side. For sure, that tool will increase the latency even more, but it
may show better what goes on.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-08-17 12:45 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-16 13:11 [Xenomai-help] Time for rt_mutex_acquire Dirk Eibach
2007-08-16 18:14 ` Gilles Chanteperdrix
2007-08-17 11:00   ` Dirk Eibach
2007-08-17 12:04     ` Gilles Chanteperdrix
  -- strict thread matches above, loose matches on Subject: below --
2007-08-17 12:13 Dirk Eibach
2007-08-17 12:45 ` Jan Kiszka

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.