From: John Kacur <jkacur@redhat.com>
To: Anubhav Shelat <ashelat@redhat.com>
Cc: linux-rt-users@vger.kernel.org, kcarcia@redhat.com, williams@redhat.com
Subject: Re: [PATCH v2] cyclicdeadline: removed extra pthread_barrier_wait() calls
Date: Wed, 9 Aug 2023 14:19:26 -0400 (EDT) [thread overview]
Message-ID: <ae2618e7-eaa5-262f-ab2c-dcd4635df8ca@redhat.com> (raw)
In-Reply-To: <20230809144855.143778-1-ashelat@redhat.com>
On Wed, 9 Aug 2023, Anubhav Shelat wrote:
> Before this change, cyclicdeadline was giving abnormally high latencies
> and occasionally locking up on start, uncharacteristic of an RT system.
> After removing the extra calls, the latencies were more in line with
> what we expected and there were no lock-ups on run.
>
> Test runs, courtesy of Clark Williams (aarch64 system running RT kernel):
>
> Cmd Line: $ sudo ./cyclicdeadline -t8 -a8-15 -D 5m
>
> The first three test runs were from the current main branch of realtime-tests:
>
> First run
>
> T: 0 ( 2074) I:1000 C: 300007 Min: 1 Act: 11 Avg: 10 Max: 34
> T: 1 ( 2075) I:1500 C: 200005 Min: 1 Act: 12 Avg: 10 Max: 30
> T: 2 ( 2076) I:2000 C: 150004 Min: 1 Act: 14 Avg: 11 Max: 36
> T: 3 ( 2077) I:2500 C: 120003 Min: 1 Act: 11 Avg: 10 Max: 42
> T: 4 ( 2078) I:3000 C: 100003 Min: 1 Act: 13 Avg: 6 Max: 35
> T: 5 ( 2079) I:3500 C: 85717 Min: 1 Act: 3 Avg: 8 Max: 28
> T: 6 ( 2080) I:4000 C: 75002 Min: 1 Act: 11 Avg: 10 Max: 43
> T: 7 ( 2081) I:4500 C: 66669 Min: 1 Act: 13 Avg: 10 Max: 31
>
> Second run
>
> T: 0 ( 2074) I:1000 C: 300007 Min: 1 Act: 11 Avg: 10 Max: 34
> T: 1 ( 2075) I:1500 C: 200005 Min: 1 Act: 12 Avg: 10 Max: 30
> T: 2 ( 2076) I:2000 C: 150004 Min: 1 Act: 14 Avg: 11 Max: 36
> T: 3 ( 2077) I:2500 C: 120003 Min: 1 Act: 11 Avg: 10 Max: 42
> T: 4 ( 2078) I:3000 C: 100003 Min: 1 Act: 13 Avg: 6 Max: 35
> T: 5 ( 2079) I:3500 C: 85717 Min: 1 Act: 3 Avg: 8 Max: 28
> T: 6 ( 2080) I:4000 C: 75002 Min: 1 Act: 11 Avg: 10 Max: 43
> T: 7 ( 2081) I:4500 C: 66669 Min: 1 Act: 13 Avg: 10 Max: 31
>
> Third Run
>
> T: 0 ( 2199) I:1000 C: 300007 Min: 1 Act: 12 Avg: 11 Max: 35
> T: 1 ( 2200) I:1500 C: 200005 Min: 1 Act: 13 Avg: 12 Max: 36
> T: 2 ( 2201) I:2000 C: 150004 Min: 1 Act: 14 Avg: 12 Max: 42
> T: 3 ( 2202) I:2500 C: 120003 Min: 2 Act: 16 Avg: 13 Max: 36
> T: 4 ( 2203) I:3000 C: 100003 Min: 1 Act: 10 Avg: 7 Max: 31
> T: 5 ( 2204) I:3500 C: 85717 Min: 1 Act: 11 Avg: 10 Max: 35
> T: 6 ( 2205) I:4000 C: 75002 Min: 1 Act: 11 Avg: 10 Max: 26
> T: 7 ( 2206) I:4500 C: 66669 Min: 1 Act: 17 Avg: 12 Max: 35
>
> The second three runs were on the same system but with code that has the pthread_barrier_wait() calls fixed
>
> First run
>
> T: 0 ( 4131) I:1000 C: 300004 Min: 1 Act: 3 Avg: 8 Max: 38
> T: 1 ( 4132) I:1500 C: 200003 Min: 1 Act: 13 Avg: 6 Max: 32
> T: 2 ( 4133) I:2000 C: 150002 Min: 1 Act: 12 Avg: 8 Max: 31
> T: 3 ( 4134) I:2500 C: 120002 Min: 1 Act: 11 Avg: 10 Max: 32
> T: 4 ( 4135) I:3000 C: 100002 Min: 1 Act: 11 Avg: 10 Max: 30
> T: 5 ( 4136) I:3500 C: 85716 Min: 1 Act: 12 Avg: 10 Max: 35
> T: 6 ( 4137) I:4000 C: 75001 Min: 1 Act: 11 Avg: 10 Max: 33
> T: 7 ( 4138) I:4500 C: 66668 Min: 1 Act: 10 Avg: 9 Max: 28
>
> Second run
> T: 0 ( 4353) I:1000 C: 300006 Min: 1 Act: 13 Avg: 10 Max: 34
> T: 1 ( 4354) I:1500 C: 200004 Min: 1 Act: 13 Avg: 11 Max: 28
> T: 2 ( 4355) I:2000 C: 150003 Min: 1 Act: 13 Avg: 11 Max: 32
> T: 3 ( 4356) I:2500 C: 120003 Min: 1 Act: 13 Avg: 11 Max: 38
> T: 4 ( 4357) I:3000 C: 100002 Min: 1 Act: 12 Avg: 11 Max: 29
> T: 5 ( 4358) I:3500 C: 85716 Min: 1 Act: 11 Avg: 11 Max: 31
> T: 6 ( 4359) I:4000 C: 75002 Min: 1 Act: 11 Avg: 10 Max: 32
> T: 7 ( 4360) I:4500 C: 66668 Min: 1 Act: 3 Avg: 2 Max: 19
>
> Third run
> T: 0 ( 4426) I:1000 C: 300006 Min: 1 Act: 13 Avg: 8 Max: 43
> T: 1 ( 4427) I:1500 C: 200004 Min: 1 Act: 2 Avg: 6 Max: 25
> T: 2 ( 4428) I:2000 C: 150003 Min: 1 Act: 11 Avg: 9 Max: 30
> T: 3 ( 4429) I:2500 C: 120003 Min: 2 Act: 12 Avg: 11 Max: 31
> T: 4 ( 4430) I:3000 C: 100002 Min: 1 Act: 12 Avg: 11 Max: 33
> T: 5 ( 4431) I:3500 C: 85716 Min: 1 Act: 12 Avg: 10 Max: 31
> T: 6 ( 4432) I:4000 C: 75002 Min: 2 Act: 13 Avg: 12 Max: 36
> T: 7 ( 4433) I:4500 C: 66668 Min: 1 Act: 12 Avg: 10 Max: 30
>
> Signed-off-by: Anubhav Shelat <ashelat@redhat.com>
> ---
> src/sched_deadline/cyclicdeadline.c | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/src/sched_deadline/cyclicdeadline.c b/src/sched_deadline/cyclicdeadline.c
> index 48b82e7efb01..39aeeb5d0785 100644
> --- a/src/sched_deadline/cyclicdeadline.c
> +++ b/src/sched_deadline/cyclicdeadline.c
> @@ -807,8 +807,6 @@ void *run_deadline(void *data)
> return NULL;
> }
>
> - pthread_barrier_wait(&barrier);
> -
> attr.sched_policy = SCHED_DEADLINE;
> attr.sched_runtime = sd->runtime_us * 1000;
> attr.sched_deadline = sd->deadline_us * 1000;
> @@ -816,8 +814,6 @@ void *run_deadline(void *data)
> printf("thread[%d] runtime=%lldus deadline=%lldus\n",
> gettid(), sd->runtime_us, sd->deadline_us);
>
> - pthread_barrier_wait(&barrier);
> -
> ret = sched_setattr(0, &attr, 0);
> if (ret < 0) {
> err_msg_n(errno, "[%ld]", tid);
> @@ -1281,8 +1277,6 @@ int main(int argc, char **argv)
>
> atexit(teardown);
>
> - pthread_barrier_wait(&barrier);
> -
> if (shutdown)
> fatal("failed to setup child threads at step 1\n");
>
> @@ -1312,8 +1306,6 @@ int main(int argc, char **argv)
>
> printf("main thread %d\n", gettid());
>
> - pthread_barrier_wait(&barrier);
> -
> if (shutdown)
> fatal("failed to setup child threads at step 2");
>
> --
> 2.39.3
>
>
Nice
Signed-off-by: John Kacur <jkacur@redhat.com>
prev parent reply other threads:[~2023-08-09 18:20 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-09 14:48 [PATCH v2] cyclicdeadline: removed extra pthread_barrier_wait() calls Anubhav Shelat
2023-08-09 18:19 ` John Kacur [this message]
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=ae2618e7-eaa5-262f-ab2c-dcd4635df8ca@redhat.com \
--to=jkacur@redhat.com \
--cc=ashelat@redhat.com \
--cc=kcarcia@redhat.com \
--cc=linux-rt-users@vger.kernel.org \
--cc=williams@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).