Re: msleep_interruptible() sleeps *way* too long on PowerPC

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

 



On Mon, 2012-10-01 at 12:35 -0500, vomlehn@xxxxxxxxx wrote:
> When I run a command from the Busybox shell (ash), I sometimes experience a
> very long delay, on a system with the RT patches enabled (fully-preempible),
> before the prompt appears. Busybox calls tcdrain() prior to printing the
> prompt, which eventually winds up in uart_wait_until_sent(). This function
> uses msleep_interruptible() to wait for a millisecond, but doesn't actually
> complete for many seconds, even minutes, on an otherwise idle system.
> 
> when I change the preemption model to low-latency desktop, the system behaves
> as I would expect it to. It's worth mentioning that this is on a PowerPC
> processor, which handles timer interrupts through a slightly different path
> than other interrupts, but I don't see an issue with this yet.
> 
> Another observation which seems pretty vital--if I send a ping packet to one
> of the network interfaces, the msleep_interruptible() completes. It is as
> though it queued the timer and didn't realize it while timer interrupts were
> happening (lost in softIRQ processing?). Then, when the network interrupt
> happened, it went through some queue and processed the timeout.
> 
> I've verified that the struct timer_list is added and it looks to be in the
> right place.
> 
> There is an IPI-related PowerPC patch that went into 3.2.30 that sounded a lot
> like this, commit 241ee90a69ede9cf9255df1a18036210beeb8adf, but our
> configuration doesn't use this and it appears as though this happens when the
> task queueing the timer is still on the same processor when it gets the
> wakeup. Thus IPIs don't appear to be an issue.
> 
> Any thoughts would be appreciated!

Have you tried running a trace on it? Something like:

# mkdir /debug
# mount -t debugfs nodev /debug
# cd /debug/tracing
# echo 1 > events/enable
# <cause the problem>
# <trigger interrupt>
# echo 0 > tracing_on
# cat trace

-- Steve


--
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