* domain switch
@ 2021-01-02 20:54 Leandro Bucci
2021-01-02 23:06 ` steve freyder
0 siblings, 1 reply; 8+ messages in thread
From: Leandro Bucci @ 2021-01-02 20:54 UTC (permalink / raw)
To: xenomai
Hi, I wanted to know if there was a way to count the number of times a
domain switch happens.
For example the printf () function causes a domain switch, right?
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: domain switch
2021-01-02 20:54 domain switch Leandro Bucci
@ 2021-01-02 23:06 ` steve freyder
2021-01-03 1:29 ` Leandro Bucci
2021-01-03 10:31 ` Philippe Gerum
0 siblings, 2 replies; 8+ messages in thread
From: steve freyder @ 2021-01-02 23:06 UTC (permalink / raw)
To: Leandro Bucci, xenomai
Right.
AKA, "mode switch", a switch from "primary mode" to "secondary mode", or
vice versa.
One place you can find that information is in:
/proc/xenomai/sched/acct
there are two fields MSW, and CSW which count mode/context switches
per-process. This requires an open, a read loop to locate the desired
pid and extract the desired information, then either rewind or
close/reopen to do it again - all of which will almost surely generate
more mode/context switching.
On 1/2/2021 2:54 PM, Leandro Bucci via Xenomai wrote:
> Hi, I wanted to know if there was a way to count the number of times a
> domain switch happens.
> For example the printf () function causes a domain switch, right?
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: domain switch
2021-01-02 23:06 ` steve freyder
@ 2021-01-03 1:29 ` Leandro Bucci
2021-01-03 10:31 ` Philippe Gerum
1 sibling, 0 replies; 8+ messages in thread
From: Leandro Bucci @ 2021-01-03 1:29 UTC (permalink / raw)
To: steve freyder; +Cc: xenomai
Awesome, thanks!
Il dom 3 gen 2021, 00:06 steve freyder <steve@freyder.net> ha scritto:
> Right.
>
>
> AKA, "mode switch", a switch from "primary mode" to "secondary mode", or
> vice versa.
>
> One place you can find that information is in:
>
> /proc/xenomai/sched/acct
>
> there are two fields MSW, and CSW which count mode/context switches
> per-process. This requires an open, a read loop to locate the desired pid
> and extract the desired information, then either rewind or close/reopen to
> do it again - all of which will almost surely generate more mode/context
> switching.
>
>
> On 1/2/2021 2:54 PM, Leandro Bucci via Xenomai wrote:
>
> Hi, I wanted to know if there was a way to count the number of times a
> domain switch happens.
> For example the printf () function causes a domain switch, right?
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: domain switch
2021-01-02 23:06 ` steve freyder
2021-01-03 1:29 ` Leandro Bucci
@ 2021-01-03 10:31 ` Philippe Gerum
2021-01-03 10:54 ` Leandro Bucci
1 sibling, 1 reply; 8+ messages in thread
From: Philippe Gerum @ 2021-01-03 10:31 UTC (permalink / raw)
To: steve freyder; +Cc: Leandro Bucci, xenomai
steve freyder via Xenomai <xenomai@xenomai.org> writes:
> Right.
>
>
> AKA, "mode switch", a switch from "primary mode" to "secondary mode",
> or vice versa.
>
> One place you can find that information is in:
>
> /proc/xenomai/sched/acct
>
> there are two fields MSW, and CSW which count mode/context switches
> per-process. This requires an open, a read loop to locate the desired
> pid and extract the desired information, then either rewind or
> close/reopen to do it again - all of which will almost surely generate
> more mode/context switching.
>
If that helps, there is also the option of getting the thread stats by
program, using int cobalt_thread_stat(pid_t pid, struct
cobalt_threadstat *stat), declared in sys/cobalt.h. pid refers to a
thread identifier (as obtained from gettid(2) in the context of the
target thread). It must refer to a Cobalt thread, otherwise the call
would fail with -ESRCH.
The mode switch count is present in the returned information block
(->msw). cobalt_thread_stat() would not cause any mode switch. It can be
called by any thread regardless of its type (i.e. regular or Cobalt).
--
Philippe.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: domain switch
2021-01-03 10:31 ` Philippe Gerum
@ 2021-01-03 10:54 ` Leandro Bucci
2021-01-03 11:06 ` Philippe Gerum
0 siblings, 1 reply; 8+ messages in thread
From: Leandro Bucci @ 2021-01-03 10:54 UTC (permalink / raw)
To: Philippe Gerum, steve freyder, xenomai
is it possible to have the same thing for tasks instead of threads?
Il dom 3 gen 2021, 11:31 Philippe Gerum <rpm@xenomai.org> ha scritto:
>
> steve freyder via Xenomai <xenomai@xenomai.org> writes:
>
> > Right.
> >
> >
> > AKA, "mode switch", a switch from "primary mode" to "secondary mode",
> > or vice versa.
> >
> > One place you can find that information is in:
> >
> > /proc/xenomai/sched/acct
> >
> > there are two fields MSW, and CSW which count mode/context switches
> > per-process. This requires an open, a read loop to locate the desired
> > pid and extract the desired information, then either rewind or
> > close/reopen to do it again - all of which will almost surely generate
> > more mode/context switching.
> >
>
> If that helps, there is also the option of getting the thread stats by
> program, using int cobalt_thread_stat(pid_t pid, struct
> cobalt_threadstat *stat), declared in sys/cobalt.h. pid refers to a
> thread identifier (as obtained from gettid(2) in the context of the
> target thread). It must refer to a Cobalt thread, otherwise the call
> would fail with -ESRCH.
>
> The mode switch count is present in the returned information block
> (->msw). cobalt_thread_stat() would not cause any mode switch. It can be
> called by any thread regardless of its type (i.e. regular or Cobalt).
>
> --
> Philippe.
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: domain switch
2021-01-03 10:54 ` Leandro Bucci
@ 2021-01-03 11:06 ` Philippe Gerum
2021-01-03 11:20 ` Leandro Bucci
0 siblings, 1 reply; 8+ messages in thread
From: Philippe Gerum @ 2021-01-03 11:06 UTC (permalink / raw)
To: Leandro Bucci; +Cc: steve freyder, xenomai
Leandro Bucci <guestleandro11@gmail.com> writes:
> is it possible to have the same thing for tasks instead of threads?
>
task == thread
> Il dom 3 gen 2021, 11:31 Philippe Gerum <rpm@xenomai.org> ha scritto:
>
>>
>> steve freyder via Xenomai <xenomai@xenomai.org> writes:
>>
>> > Right.
>> >
>> >
>> > AKA, "mode switch", a switch from "primary mode" to "secondary mode",
>> > or vice versa.
>> >
>> > One place you can find that information is in:
>> >
>> > /proc/xenomai/sched/acct
>> >
>> > there are two fields MSW, and CSW which count mode/context switches
>> > per-process. This requires an open, a read loop to locate the desired
>> > pid and extract the desired information, then either rewind or
>> > close/reopen to do it again - all of which will almost surely generate
>> > more mode/context switching.
>> >
>>
>> If that helps, there is also the option of getting the thread stats by
>> program, using int cobalt_thread_stat(pid_t pid, struct
>> cobalt_threadstat *stat), declared in sys/cobalt.h. pid refers to a
>> thread identifier (as obtained from gettid(2) in the context of the
>> target thread). It must refer to a Cobalt thread, otherwise the call
>> would fail with -ESRCH.
>>
>> The mode switch count is present in the returned information block
>> (->msw). cobalt_thread_stat() would not cause any mode switch. It can be
>> called by any thread regardless of its type (i.e. regular or Cobalt).
>>
>> --
>> Philippe.
>>
--
Philippe.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: domain switch
2021-01-03 11:06 ` Philippe Gerum
@ 2021-01-03 11:20 ` Leandro Bucci
2021-01-03 18:24 ` Leandro Bucci
0 siblings, 1 reply; 8+ messages in thread
From: Leandro Bucci @ 2021-01-03 11:20 UTC (permalink / raw)
To: Philippe Gerum, steve freyder, xenomai
perfect thank you so much for the explanation
Il dom 3 gen 2021, 12:06 Philippe Gerum <rpm@xenomai.org> ha scritto:
>
> Leandro Bucci <guestleandro11@gmail.com> writes:
>
> > is it possible to have the same thing for tasks instead of threads?
> >
>
> task == thread
>
> > Il dom 3 gen 2021, 11:31 Philippe Gerum <rpm@xenomai.org> ha scritto:
> >
> >>
> >> steve freyder via Xenomai <xenomai@xenomai.org> writes:
> >>
> >> > Right.
> >> >
> >> >
> >> > AKA, "mode switch", a switch from "primary mode" to "secondary mode",
> >> > or vice versa.
> >> >
> >> > One place you can find that information is in:
> >> >
> >> > /proc/xenomai/sched/acct
> >> >
> >> > there are two fields MSW, and CSW which count mode/context switches
> >> > per-process. This requires an open, a read loop to locate the desired
> >> > pid and extract the desired information, then either rewind or
> >> > close/reopen to do it again - all of which will almost surely generate
> >> > more mode/context switching.
> >> >
> >>
> >> If that helps, there is also the option of getting the thread stats by
> >> program, using int cobalt_thread_stat(pid_t pid, struct
> >> cobalt_threadstat *stat), declared in sys/cobalt.h. pid refers to a
> >> thread identifier (as obtained from gettid(2) in the context of the
> >> target thread). It must refer to a Cobalt thread, otherwise the call
> >> would fail with -ESRCH.
> >>
> >> The mode switch count is present in the returned information block
> >> (->msw). cobalt_thread_stat() would not cause any mode switch. It can be
> >> called by any thread regardless of its type (i.e. regular or Cobalt).
> >>
> >> --
> >> Philippe.
> >>
>
>
> --
> Philippe.
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: domain switch
2021-01-03 11:20 ` Leandro Bucci
@ 2021-01-03 18:24 ` Leandro Bucci
0 siblings, 0 replies; 8+ messages in thread
From: Leandro Bucci @ 2021-01-03 18:24 UTC (permalink / raw)
To: Philippe Gerum, xenomai, steve freyder
Sorry for the inconvenience,
I tried to write this code to report domain changes (or mode switch):
##############################################################
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <alchemy/task.h>
#include <alchemy/timer.h>
RT_TASK task;
void task_body(void *arg)
{
RT_TASK_INFO info;
printf("Hello\n");
rt_printf("ByeBye\n");
rt_task_inquire(NULL, &info);
rt_printf("mode switch = %d\n", info.stat.msw);
}
int main()
{
int err;
err = rt_task_create(&task, "mytask", 0, 1, 0);
if (err != 0){
fprintf(stderr, "failed to create task\n");
exit(EXIT_FAILURE);
}
err = rt_task_start(&task, &task_body, NULL);
if (err != 0){
fprintf(stderr, "failed to start task\n");
exit(EXIT_FAILURE);
}
pause();
exit(EXIT_SUCCESS);
}
######################################################################
but I get 0 as a result. How is this possible?
Il giorno dom 3 gen 2021 alle ore 12:20 Leandro Bucci <
guestleandro11@gmail.com> ha scritto:
> perfect thank you so much for the explanation
>
> Il dom 3 gen 2021, 12:06 Philippe Gerum <rpm@xenomai.org> ha scritto:
>
>>
>> Leandro Bucci <guestleandro11@gmail.com> writes:
>>
>> > is it possible to have the same thing for tasks instead of threads?
>> >
>>
>> task == thread
>>
>> > Il dom 3 gen 2021, 11:31 Philippe Gerum <rpm@xenomai.org> ha scritto:
>> >
>> >>
>> >> steve freyder via Xenomai <xenomai@xenomai.org> writes:
>> >>
>> >> > Right.
>> >> >
>> >> >
>> >> > AKA, "mode switch", a switch from "primary mode" to "secondary mode",
>> >> > or vice versa.
>> >> >
>> >> > One place you can find that information is in:
>> >> >
>> >> > /proc/xenomai/sched/acct
>> >> >
>> >> > there are two fields MSW, and CSW which count mode/context switches
>> >> > per-process. This requires an open, a read loop to locate the desired
>> >> > pid and extract the desired information, then either rewind or
>> >> > close/reopen to do it again - all of which will almost surely
>> generate
>> >> > more mode/context switching.
>> >> >
>> >>
>> >> If that helps, there is also the option of getting the thread stats by
>> >> program, using int cobalt_thread_stat(pid_t pid, struct
>> >> cobalt_threadstat *stat), declared in sys/cobalt.h. pid refers to a
>> >> thread identifier (as obtained from gettid(2) in the context of the
>> >> target thread). It must refer to a Cobalt thread, otherwise the call
>> >> would fail with -ESRCH.
>> >>
>> >> The mode switch count is present in the returned information block
>> >> (->msw). cobalt_thread_stat() would not cause any mode switch. It can
>> be
>> >> called by any thread regardless of its type (i.e. regular or Cobalt).
>> >>
>> >> --
>> >> Philippe.
>> >>
>>
>>
>> --
>> Philippe.
>>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2021-01-03 18:24 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-02 20:54 domain switch Leandro Bucci
2021-01-02 23:06 ` steve freyder
2021-01-03 1:29 ` Leandro Bucci
2021-01-03 10:31 ` Philippe Gerum
2021-01-03 10:54 ` Leandro Bucci
2021-01-03 11:06 ` Philippe Gerum
2021-01-03 11:20 ` Leandro Bucci
2021-01-03 18:24 ` Leandro Bucci
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.