From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Gary Robertson <gary.robertson@linaro.org>
Cc: Ayyappa Ch <ayyappa.ch.linux@gmail.com>,
Anders Roxell <anders.roxell@linaro.org>,
linux-arm-kernel@lists.infradead.org,
RT <linux-rt-users@vger.kernel.org>,
Kevin Hilman <kevin.hilman@linaro.org>
Subject: Re: [PATCH] arch/arm64 :Cyclic Test fix in ARM64 fpsimd
Date: Mon, 18 May 2015 23:38:35 +0200 [thread overview]
Message-ID: <20150518213835.GD4275@linutronix.de> (raw)
In-Reply-To: <CAF7YWnw08YK7ogAoLTYXusOvtGCxfDPJW0H+8LyWDzNi_CbR=w@mail.gmail.com>
* Gary Robertson | 2015-05-18 08:23:16 [-0500]:
>I have been following this thread and was able to obtain a copy of the full
>log from Anders.
>My initial impression based upon the log entries is that the excessive
>latencies did not occur during the fpsimd calls -
>but the actual progress of an individual task is a bit difficult to follow
>through the logs, so in my spare time
>I started writing a parser to sort it into a format easier to follow. I
>hope to have it completed shortly.
>This parser will sort the log first by CPU and then by thread so the cause
>of the delay will be easier to see.
There is a smaller version of it at
https://breakpoint.cc/arm64_simd_trace_cpu.txt
which contains only CPU0 around that "event. Here are a few pieces:
|cyclicte-964 0....1.. 511965877us : __schedule <-schedule
cyclictest goes away
|kworker/-353 0....111 511965906us : rt_spin_unlock <-process_one_work
kworker is now active
|kworker/-353 0....112 511965954us : kernel_neon_begin_partial <-virt_efi_set_time
|kworker/-353 0....112 511965955us : preempt_count_add <-kernel_neon_begin_partial
and kworker invokes virt_efi_set_time which does the neon save thingy.
|kworker/-353 0d...212 511966764us : __handle_domain_irq <-gic_handle_irq
now we have an interrupt comming.
|kworker/-353 0dn.h412 511966793us : task_woken_rt <-ttwu_do_wakeup
it might be the timer for cyclictest wakeup it might not, however we
have the N flag set and kworker has to go.
|kworker/-353 0dn..212 511966806us : rcu_sysidle_enter <-rcu_irq_exit
|kworker/-353 0dn..212 511967108us : __handle_domain_irq <-gic_handle_irq
|kworker/-353 0dn..212 511967109us : irq_enter <-__handle_domain_irq
so we finished handling one irq and we contiunue with the next one? This
goes on and on and on until finally after a while we have this:
|kworker/-353 0dn..212 512064373us : rcu_irq_exit <-irq_exit
|kworker/-353 0dn..212 512064374us : rcu_sysidle_enter <-rcu_irq_exit
|kworker/-353 0.n..212 512065116us : kernel_neon_end <-virt_efi_set_time
|kworker/-353 0.n..212 512065116us : preempt_count_sub <-kernel_neon_end
|kworker/-353 0.n..112 512065117us : __schedule <-preempt_schedule
and this time we were able to return from rcu_irq_exit and continue with
virt_efi_set_time and finally switch the task. So yes, preemption was
disabled during kernel_neon_{being|end} but we also received 81
interrupt ("gic_handle_irq invocation") during that time. Why is that?
>Regards,
>
>Gary Robertson
Sebastian
WARNING: multiple messages have this Message-ID (diff)
From: bigeasy@linutronix.de (Sebastian Andrzej Siewior)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] arch/arm64 :Cyclic Test fix in ARM64 fpsimd
Date: Mon, 18 May 2015 23:38:35 +0200 [thread overview]
Message-ID: <20150518213835.GD4275@linutronix.de> (raw)
In-Reply-To: <CAF7YWnw08YK7ogAoLTYXusOvtGCxfDPJW0H+8LyWDzNi_CbR=w@mail.gmail.com>
* Gary Robertson | 2015-05-18 08:23:16 [-0500]:
>I have been following this thread and was able to obtain a copy of the full
>log from Anders.
>My initial impression based upon the log entries is that the excessive
>latencies did not occur during the fpsimd calls -
>but the actual progress of an individual task is a bit difficult to follow
>through the logs, so in my spare time
>I started writing a parser to sort it into a format easier to follow. I
>hope to have it completed shortly.
>This parser will sort the log first by CPU and then by thread so the cause
>of the delay will be easier to see.
There is a smaller version of it at
https://breakpoint.cc/arm64_simd_trace_cpu.txt
which contains only CPU0 around that "event. Here are a few pieces:
|cyclicte-964 0....1.. 511965877us : __schedule <-schedule
cyclictest goes away
|kworker/-353 0....111 511965906us : rt_spin_unlock <-process_one_work
kworker is now active
|kworker/-353 0....112 511965954us : kernel_neon_begin_partial <-virt_efi_set_time
|kworker/-353 0....112 511965955us : preempt_count_add <-kernel_neon_begin_partial
and kworker invokes virt_efi_set_time which does the neon save thingy.
|kworker/-353 0d...212 511966764us : __handle_domain_irq <-gic_handle_irq
now we have an interrupt comming.
|kworker/-353 0dn.h412 511966793us : task_woken_rt <-ttwu_do_wakeup
it might be the timer for cyclictest wakeup it might not, however we
have the N flag set and kworker has to go.
|kworker/-353 0dn..212 511966806us : rcu_sysidle_enter <-rcu_irq_exit
|kworker/-353 0dn..212 511967108us : __handle_domain_irq <-gic_handle_irq
|kworker/-353 0dn..212 511967109us : irq_enter <-__handle_domain_irq
so we finished handling one irq and we contiunue with the next one? This
goes on and on and on until finally after a while we have this:
|kworker/-353 0dn..212 512064373us : rcu_irq_exit <-irq_exit
|kworker/-353 0dn..212 512064374us : rcu_sysidle_enter <-rcu_irq_exit
|kworker/-353 0.n..212 512065116us : kernel_neon_end <-virt_efi_set_time
|kworker/-353 0.n..212 512065116us : preempt_count_sub <-kernel_neon_end
|kworker/-353 0.n..112 512065117us : __schedule <-preempt_schedule
and this time we were able to return from rcu_irq_exit and continue with
virt_efi_set_time and finally switch the task. So yes, preemption was
disabled during kernel_neon_{being|end} but we also received 81
interrupt ("gic_handle_irq invocation") during that time. Why is that?
>Regards,
>
>Gary Robertson
Sebastian
next prev parent reply other threads:[~2015-05-18 21:38 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-01 15:29 [PATCH] arch/arm64 :Cyclic Test fix in ARM64 fpsimd Ayyappa Ch
2015-05-06 19:38 ` Anders Roxell
2015-05-06 19:38 ` Anders Roxell
2015-05-07 11:09 ` Ayyappa Ch
2015-05-07 11:09 ` Ayyappa Ch
2015-05-08 0:09 ` Anders Roxell
2015-05-08 0:09 ` Anders Roxell
2015-05-11 5:32 ` Ayyappa Ch
2015-05-11 5:32 ` Ayyappa Ch
2015-05-14 16:07 ` Sebastian Andrzej Siewior
2015-05-14 16:07 ` Sebastian Andrzej Siewior
2015-05-16 6:38 ` Ayyappa Ch
2015-05-16 6:38 ` Ayyappa Ch
[not found] ` <CAF7YWnw08YK7ogAoLTYXusOvtGCxfDPJW0H+8LyWDzNi_CbR=w@mail.gmail.com>
2015-05-18 21:38 ` Sebastian Andrzej Siewior [this message]
2015-05-18 21:38 ` Sebastian Andrzej Siewior
2015-05-19 0:07 ` Thomas Gleixner
2015-05-19 0:07 ` Thomas Gleixner
2015-05-21 13:50 ` Anders Roxell
2015-05-21 13:50 ` Anders Roxell
2015-05-21 15:23 ` Ard Biesheuvel
2015-05-21 15:23 ` Ard Biesheuvel
2015-05-21 15:35 ` Arnd Bergmann
2015-05-21 15:35 ` Arnd Bergmann
2015-05-21 16:01 ` Ard Biesheuvel
2015-05-21 16:01 ` Ard Biesheuvel
2015-05-22 9:46 ` Arnd Bergmann
2015-05-22 9:46 ` Arnd Bergmann
2015-05-22 10:04 ` Ard Biesheuvel
2015-05-22 10:04 ` Ard Biesheuvel
2015-05-22 10:31 ` Arnd Bergmann
2015-05-22 10:31 ` Arnd Bergmann
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=20150518213835.GD4275@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=anders.roxell@linaro.org \
--cc=ayyappa.ch.linux@gmail.com \
--cc=gary.robertson@linaro.org \
--cc=kevin.hilman@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-rt-users@vger.kernel.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.