Kernel ISR Latency

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, I'm trying to track down the source of some ISR latency that I'm
observing on a logic analyzer.

Just for some background, my setup is the following.  I'm running
Linaro 4.4.9 with PREEMPT RT Patch 17 on a Variscite SD410 SOM devkit.
My kernel has the following PREEMPT RT options.

CONFIG_PREEMPT_RCU=y
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_PREEMPT=y
CONFIG_PREEMPT_RT_BASE=y
CONFIG_HAVE_PREEMPT_LAZY=y
CONFIG_PREEMPT_LAZY=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT__LL is not set
# CONFIG_PREEMPT_RTB is not set
CONFIG_PREEMPT_RT_FULL=y
CONFIG_PREEMPT_COUNT=y
# CONFIG_DEBUG_PREEMPT is not set

I have a micro-controller attached to a GPIO pin and two separate SPI
ports.  Every 10 milliseconds the micro-controller writes 18 Kbytes of
data to each of 2 SPI ports (total of 36 Kbytes between the two) and
issues an interrupt on the GPIO.  A kernel module has an ISR
registered to the GPIO pin.  When the ISR executes, it copies 18
Kbytes of data from each SPI.  There are two RT threads executing in
user space as SCHED_RR with identical priorities less than (i.e. lower
than) 50, where as I understand the kernel runs at priority 50.  Each
of those user space threads copies data from some shared memory within
the kernel module and performs some basic data integrity checks, i.e.
a SHA1.  A third thread runs non-RT.  It doesn't do anything other
than spawn the two user space RT threads and waits for them to
complete.

The vast majority of interrupts incur a delay in range of tens of
MICROseconds, meaning the ISR executes within such amount of time of
the micro-controller raising the GPIO pin of the ISR.  However,
occasionally, more than six MILLIseconds passes between the time of
the micro-controller issuing the GPIO interrupt and the ISR beginning
to execute.

I'm trying to track down the cause of the 6+ MILLIsecond latency,
which I would not expect to happen.  Are there any well practiced
techniques for determining what factor(s) may be introducing this
latency?  I looked at the description for RT Watchdog, but I don't
think it would help me much because the only two RT threads other than
the kernel have a lower priority.

Thanks for any guidance.
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux