* [PATCH rt-tests] cyclictest: finish removal of 1 second first loops
@ 2013-02-14 22:23 Paul Gortmaker
2013-02-15 14:26 ` John Kacur
0 siblings, 1 reply; 2+ messages in thread
From: Paul Gortmaker @ 2013-02-14 22:23 UTC (permalink / raw)
To: linux-rt-users
Cc: Jim Somerville, Clark Williams, John Kacur, Steven Rostedt,
Paul Gortmaker
From: Jim Somerville <Jim.Somerville@windriver.com>
Huge latencies are observed (close to 1 second) when certain
options are used in cyclictest.
The problem was 1st introduced at commit da4956cbcaf7945554f
("use interval on first loop instead of 1 second"). It removed
the 1 second first timing loop out of the main path in cyclictest
but left it in two other paths, namely the ones triggered by
these two options:
-r --relative use relative timer instead of absolute
-s --system use sys_nanosleep and sys_setitimer
which in turn causes the huge latencies of close to 1 second to
be reported by cyclictest with certain uses of those two options.
Here we extend the original commit to remove the 1 second
hardcoded timer values from the RELTIME and ITIMER options, by
simply using the actual interval provided instead.
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
Cc: Clark Williams <williams@redhat.com>
Cc: John Kacur <jkacur@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
index abf3e8b..8c93ccb 100644
--- a/src/cyclictest/cyclictest.c
+++ b/src/cyclictest/cyclictest.c
@@ -775,17 +775,15 @@ void *timerthread(void *param)
if (par->timermode == TIMER_ABSTIME)
tspec.it_value = next;
else {
- tspec.it_value.tv_nsec = 0;
- tspec.it_value.tv_sec = 1;
+ tspec.it_value = interval;
}
timer_settime(timer, par->timermode, &tspec, NULL);
}
if (par->mode == MODE_SYS_ITIMER) {
- itimer.it_value.tv_sec = 1;
- itimer.it_value.tv_usec = 0;
itimer.it_interval.tv_sec = interval.tv_sec;
itimer.it_interval.tv_usec = interval.tv_nsec / 1000;
+ itimer.it_value = itimer.it_interval;
setitimer (ITIMER_REAL, &itimer, NULL);
}
--
1.8.1.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH rt-tests] cyclictest: finish removal of 1 second first loops
2013-02-14 22:23 [PATCH rt-tests] cyclictest: finish removal of 1 second first loops Paul Gortmaker
@ 2013-02-15 14:26 ` John Kacur
0 siblings, 0 replies; 2+ messages in thread
From: John Kacur @ 2013-02-15 14:26 UTC (permalink / raw)
To: Paul Gortmaker
Cc: linux-rt-users, Jim Somerville, Clark Williams, John Kacur,
Steven Rostedt
On Thu, 14 Feb 2013, Paul Gortmaker wrote:
> From: Jim Somerville <Jim.Somerville@windriver.com>
>
> Huge latencies are observed (close to 1 second) when certain
> options are used in cyclictest.
>
> The problem was 1st introduced at commit da4956cbcaf7945554f
> ("use interval on first loop instead of 1 second"). It removed
> the 1 second first timing loop out of the main path in cyclictest
> but left it in two other paths, namely the ones triggered by
> these two options:
>
> -r --relative use relative timer instead of absolute
> -s --system use sys_nanosleep and sys_setitimer
>
> which in turn causes the huge latencies of close to 1 second to
> be reported by cyclictest with certain uses of those two options.
>
> Here we extend the original commit to remove the 1 second
> hardcoded timer values from the RELTIME and ITIMER options, by
> simply using the actual interval provided instead.
>
> Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
> Cc: Clark Williams <williams@redhat.com>
> Cc: John Kacur <jkacur@redhat.com>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
>
> diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
> index abf3e8b..8c93ccb 100644
> --- a/src/cyclictest/cyclictest.c
> +++ b/src/cyclictest/cyclictest.c
> @@ -775,17 +775,15 @@ void *timerthread(void *param)
> if (par->timermode == TIMER_ABSTIME)
> tspec.it_value = next;
> else {
> - tspec.it_value.tv_nsec = 0;
> - tspec.it_value.tv_sec = 1;
> + tspec.it_value = interval;
> }
> timer_settime(timer, par->timermode, &tspec, NULL);
> }
>
> if (par->mode == MODE_SYS_ITIMER) {
> - itimer.it_value.tv_sec = 1;
> - itimer.it_value.tv_usec = 0;
> itimer.it_interval.tv_sec = interval.tv_sec;
> itimer.it_interval.tv_usec = interval.tv_nsec / 1000;
> + itimer.it_value = itimer.it_interval;
> setitimer (ITIMER_REAL, &itimer, NULL);
> }
>
> --
Thanks Jim and Paul, I've added it to my queue for the next build.
John
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-02-15 14:26 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-14 22:23 [PATCH rt-tests] cyclictest: finish removal of 1 second first loops Paul Gortmaker
2013-02-15 14:26 ` John Kacur
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox