* hrtimer: interrupt took 6742 ns, then RT throttling and hung machine for nearly 2 seconds
@ 2013-04-15 11:02 Stanislav Meduna
2013-04-15 11:54 ` Stanislav Meduna
2013-04-15 12:22 ` Thomas Gleixner
0 siblings, 2 replies; 19+ messages in thread
From: Stanislav Meduna @ 2013-04-15 11:02 UTC (permalink / raw)
To: linux-rt-users@vger.kernel.org
Hi,
Apr 15 10:14:57 lnx kernel: [56281.700293] hrtimer: interrupt took 6742 ns
Apr 15 10:14:57 lnx kernel: [330740.000129] [sched_delayed] sched: RT
throttling activated
>From our application logs the machine was basically hung for something
between 1.71 - 1.73 seconds, then resumed normal operation. A 5ms
timerfd_create timer returned 341 expirations, the 340 missed
exactly correspond to the 1.7 seconds.
None of the /sys/kernel/debug/tracing/latency_hist/* reports anything
unusual, they are all in the tens of microsecond range, only wakeup
shared prio is at 957 us between two same prio application threads,
which is expected.
It is not very probable that the reason for the throttling is our
application. We have own monitoring of the runaway tasks and this
did not kick in. Besides, the coincidence with the hrtimer
message looks very suspicious.
The kernel is 3.4.25-rt37 with full preempt on a 1 GHz Celeron M
industrial PC, ICH4 (ata_piix) used for ATA, Intel 82801DB PRO/100 VE
(e100) for ethernet.
Unfortunately it is not easily reproducible - it happens once
per several days and there is no obvious trigger.
Any hints?
Thanks
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: hrtimer: interrupt took 6742 ns, then RT throttling and hung machine for nearly 2 seconds
2013-04-15 11:02 hrtimer: interrupt took 6742 ns, then RT throttling and hung machine for nearly 2 seconds Stanislav Meduna
@ 2013-04-15 11:54 ` Stanislav Meduna
2013-04-15 12:22 ` Thomas Gleixner
1 sibling, 0 replies; 19+ messages in thread
From: Stanislav Meduna @ 2013-04-15 11:54 UTC (permalink / raw)
To: linux-rt-users@vger.kernel.org
On 15.04.2013 13:02, Stanislav Meduna wrote:
> Apr 15 10:14:57 lnx kernel: [56281.700293] hrtimer: interrupt took 6742 ns
The /proc/timer_list follows. What worries me a bit are the retries -
they are slowly rising (~1 / sec for nr_retries) even if the machine
is basically idle. Is it normal?
The rise only happens if our application is running, but it is
basically the only thing in system that is actively using
the hrtimers, so this does not really say much. Tweaking
the priority of ksoftirqd has no effect.
Timer List Version: v0.6
HRTIMER_MAX_CLOCK_BASES: 3
now at 342575389945882 nsecs
cpu: 0
clock 0:
.base: c04d7f68
.index: 0
.resolution: 1 nsecs
.get_time: ktime_get
.offset: 0 nsecs
active timers:
#0: tick_cpu_sched, tick_sched_timer, S:01
# expires at 342575390000000-342575390000000 nsecs [in 54118 to 54118
nsecs]
#1: <cd9bb680>, timerfd_tmrproc, S:01
# expires at 342575390284003-342575390284003 nsecs [in 338121 to 338121
nsecs]
#2: <cc6cff48>, hrtimer_wakeup, S:01
# expires at 342575390421978-342575390421978 nsecs [in 476096 to 476096
nsecs]
... 16 more hrtimer_wakeup follow ...
clock 1:
.base: c04d7fa0
.index: 1
.resolution: 1 nsecs
.get_time: ktime_get_real
.offset: 1365682957275692841 nsecs
active timers:
clock 2:
.base: c04d7fd8
.index: 2
.resolution: 1 nsecs
.get_time: ktime_get_boottime
.offset: 0 nsecs
active timers:
.expires_next : 342575390284003 nsecs
.hres_active : 1
.nr_events : 556415337
.nr_retries : 1124752
.nr_hangs : 1
.max_hang_time : 6742 nsecs
.nohz_mode : 2
.idle_tick : 342575389000000 nsecs
.tick_stopped : 0
.idle_jiffies : 342275388
.idle_calls : 514502119
.idle_sleeps : 510841382
.idle_entrytime : 342575388177611 nsecs
.idle_waketime : 342575388177611 nsecs
.idle_exittime : 342575388184375 nsecs
.idle_sleeptime : 301580528758450 nsecs
.iowait_sleeptime: 21756268924 nsecs
.last_jiffies : 342275388
.next_jiffies : 342275421
.idle_expires : 342575421000000 nsecs
jiffies: 342275390
Tick Device: mode: 1
Per CPU device: 0
Clock Event Device: hpet
max_delta_ns: 149983013276
min_delta_ns: 13409
mult: 61496111
shift: 32
mode: 3
next_event: 342575390284003 nsecs
set_next_event: hpet_legacy_next_event
set_mode: hpet_legacy_set_mode
event_handler: hrtimer_interrupt
retries: 9359
Regards
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: hrtimer: interrupt took 6742 ns, then RT throttling and hung machine for nearly 2 seconds
2013-04-15 11:02 hrtimer: interrupt took 6742 ns, then RT throttling and hung machine for nearly 2 seconds Stanislav Meduna
2013-04-15 11:54 ` Stanislav Meduna
@ 2013-04-15 12:22 ` Thomas Gleixner
2013-04-15 12:56 ` Stanislav Meduna
1 sibling, 1 reply; 19+ messages in thread
From: Thomas Gleixner @ 2013-04-15 12:22 UTC (permalink / raw)
To: Stanislav Meduna; +Cc: linux-rt-users@vger.kernel.org
On Mon, 15 Apr 2013, Stanislav Meduna wrote:
> Unfortunately it is not easily reproducible - it happens once
> per several days and there is no obvious trigger.
>
> Any hints?
Yes, we decoded that problem a week ago. Patch is available here:
http://www.spinics.net/lists/linux-tip-commits/msg19100.html
It's on the way to Linus tree, so it will come via the stable updates
to RT soon.
Thanks,
tglx
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: hrtimer: interrupt took 6742 ns, then RT throttling and hung machine for nearly 2 seconds
2013-04-15 12:22 ` Thomas Gleixner
@ 2013-04-15 12:56 ` Stanislav Meduna
2013-04-17 15:46 ` timerfd and softirqd [Was: Re: hrtimer: interrupt took 6742 ns, then RT throttling and hung machine for nearly 2 seconds] Stanislav Meduna
0 siblings, 1 reply; 19+ messages in thread
From: Stanislav Meduna @ 2013-04-15 12:56 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: linux-rt-users@vger.kernel.org
On 15.04.2013 14:22, Thomas Gleixner wrote:
> Yes, we decoded that problem a week ago. Patch is available here:
>
> http://www.spinics.net/lists/linux-tip-commits/msg19100.html
>
> It's on the way to Linus tree, so it will come via the stable updates
> to RT soon.
Hmm, this is a uniprocessor. Could this still happen via some interrupt
or something?
# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 13
model name : Intel(R) Celeron(R) M processor 1.00GHz
stepping : 8
cpu MHz : 999.993
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov clflush dts acpi mmx fxsr sse sse2 ss tm pbe nx bts
bogomips : 1999.98
clflush size : 64
cache_alignment : 64
address sizes : 32 bits physical, 32 bits virtual
power management:
Thanks
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* timerfd and softirqd [Was: Re: hrtimer: interrupt took 6742 ns, then RT throttling and hung machine for nearly 2 seconds]
2013-04-15 12:56 ` Stanislav Meduna
@ 2013-04-17 15:46 ` Stanislav Meduna
2013-04-18 9:11 ` timerfd read does not return [Was: Re: timerfd and softirqd] Stanislav Meduna
0 siblings, 1 reply; 19+ messages in thread
From: Stanislav Meduna @ 2013-04-17 15:46 UTC (permalink / raw)
To: linux-rt-users@vger.kernel.org
Hi,
> Yes, we decoded that problem a week ago. Patch is available here:
>
> http://www.spinics.net/lists/linux-tip-commits/msg19100.html
hmm, I think this is something else. From my understanding this
cannot happen on a uniprocessor machine - it is only called
if (cpu != smp_processor_id()).
Could someone point me to a description how exactly the soft
interrupts work? - this is an area that I not really understand
yet. In the kernel I am using these were not yet (or again) handled
by single ksoftirqd.
I caught one of the instances with a trace. The core of the
setup is
1) Thread with a 5 ms timerfd loop, let's call it TimerT,
RR, rtprio 45
2) ksoftirqd, FF, rtprio 37. Lower than the TimerT because I did
not want the TimerT be blocked by e.g. net-tx/rx
3) Thread that gets triggered by TimerT, let's call him WorkT.
RR, rtprio 25. The two use PI lock to synchronize.
4) networking and other irq threads at FF 50 default
I also hacked the throttler code to kill my task with SIGABRT
when RT throttling happens. I am not really sure whether this is
a sane thing to do, but the resulting core shows the thread
in the timerfd read(). Unfortunately I did not have syscall
tracing enabled at that point.
It is difficult to reproduce this - I got it down to once per one
or two days. I could of course try to twiddle with the priorities,
but I will never know whether it fixed the problem or just
made it less probable... Same with the kernel version - I am
using 3.4.25-rt37.
My understanding is that the HRTIMER woke TimerT, in turn the WorkT
was boosted to free the mutex, then the TimerT has done its work.
Now
- either I have a bug and the WorkT loops indefinitely. Not impossible,
but the code is relatively simple
- or the kernel sometimes does not like a return onto timerfd read
if the softirq that has woken it did not return yet
This is on a uniprocessor machine. I have edited the task names
and removed the PIDs and other clutter.
ksoftirqd/0 ...1. 1209.368437: softirq_entry: vec=8 [action=HRTIMER]
ksoftirqd/0 d..3. 1209.368444: sched_wakeup: comm=TimerT prio=54
ksoftirqd/0 d..3. 1209.368451: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=62 prev_state=R+ ==> next_comm=TimerT next_prio=54
TimerT d..4. 1209.368458: sched_pi_setprio: comm=ksoftirqd/0 pid=3 oldprio=62 newprio=54
TimerT d..3. 1209.368468: sched_switch: prev_comm=TimerT prev_prio=54 prev_state=D ==> next_comm=ksoftirqd/0 next_pid=3 next_prio=54
ksoftirqd/0 d..4. 1209.368475: sched_wakeup: comm=TimerT prio=54
ksoftirqd/0 d..3. 1209.368478: sched_pi_setprio: comm=ksoftirqd/0 pid=3 oldprio=54 newprio=62
ksoftirqd/0 d..3. 1209.368488: sched_switch: prev_comm=ksoftirqd/0 prev_pid=3 prev_prio=62 prev_state=R+ ==> next_comm=TimerT next_prio=54
TimerT d..4. 1209.368506: sched_pi_setprio: comm=WorkT oldprio=74 newprio=54
TimerT d..3. 1209.368517: sched_switch: prev_comm=TimerT prev_prio=54 prev_state=D ==> next_comm=WorkT next_prio=54
WorkT d..4. 1209.368525: sched_wakeup: comm=TimerT prio=54
WorkT d..3. 1209.368529: sched_pi_setprio: comm=WorkT oldprio=54 newprio=74
WorkT d..3. 1209.368538: sched_switch: prev_comm=WorkT prev_prio=74 prev_state=R+ ==> next_comm=TimerT next_prio=54
TimerT d.h1. 1209.369388: irq_handler_entry: irq=0 name=timer
TimerT d.h1. 1209.369399: softirq_raise: vec=1 [action=TIMER]
TimerT d.h1. 1209.369402: irq_handler_exit: irq=0 ret=handled
TimerT d.h1. 1209.370388: irq_handler_entry: irq=0 name=timer
TimerT d.h1. 1209.370398: softirq_raise: vec=1 [action=TIMER]
... only timers here, then a HRTIMER comes ...
TimerT d.h1. 1209.373387: irq_handler_entry: irq=0 name=timer
TimerT d.h1. 1209.373397: softirq_raise: vec=8 [action=HRTIMER]
TimerT d.h1. 1209.373400: softirq_raise: vec=1 [action=TIMER]
TimerT d.h1. 1209.373402: irq_handler_exit: irq=0 ret=handled
TimerT d.h1. 1209.374387: irq_handler_entry: irq=0 name=timer
... only timers here ...
TimerT d.h3. 1209.555024: sched_wakeup: comm=irq/5-eth0 prio=49
TimerT d..3. 1209.555033: sched_switch: prev_comm=TimerT prev_prio=54 prev_state=R+ ==> next_comm=irq/5-eth0 next_pid=442 next_prio=49
irq/5-eth0 d..1. 1209.555041: softirq_raise: vec=3 [action=NET_RX]
irq/5-eth0 d..3. 1209.555054: sched_switch: prev_comm=irq/5-eth0 prev_prio=49 prev_state=S ==> next_comm=TimerT next_prio=54
... a HRTIMER much later than the 5 ms ...
TimerT d.h1. 1210.253256: softirq_raise: vec=8 [action=HRTIMER]
... last entry ...
TimerT d.h1. 1211.196095: irq_handler_entry: irq=0 name=timer
Note1: there is no
softirq_exit: vec=8 [action=HRTIMER]
until the rt throttler kicked in. There are only two
softirq_raise: vec=8 [action=HRTIMER]
although it should come once per 5 ms.
Note2: I call tracing_off() right in the throttling code in rt.c. The
last switch from a non-RT task was at 1209.365377 - i.e 1.8 seconds
before. Why did the throttler did not react sooner?
Thanks
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* timerfd read does not return [Was: Re: timerfd and softirqd]
2013-04-17 15:46 ` timerfd and softirqd [Was: Re: hrtimer: interrupt took 6742 ns, then RT throttling and hung machine for nearly 2 seconds] Stanislav Meduna
@ 2013-04-18 9:11 ` Stanislav Meduna
2013-04-19 19:53 ` Stanislav Meduna
2013-04-27 8:34 ` timerfd read does not return - was probably fixed in 3.4.38 Stanislav Meduna
0 siblings, 2 replies; 19+ messages in thread
From: Stanislav Meduna @ 2013-04-18 9:11 UTC (permalink / raw)
To: linux-rt-users@vger.kernel.org, Thomas Gleixner
Hi,
from a new log that includes syscall tracing it seems that a thread
waiting in a timerfd is woken, but does not return from the read:
TimerT d.... 3825.943136: sys_read -> 0x8
...
TimerT d.... 3825.943199: sys_read(fd: 6, buf: b7633158, count: 8)
TimerT d..3. 3825.943208: sched_switch: prev_comm=TimerT prev_prio=54 prev_state=S ==> next_comm=ksoftirqd/0 next_prio=62
ksoftirqd/0 ...1. 3825.943213: softirq_exit: vec=8 [action=HRTIMER]
...
OtherT d.h1. 3825.947983: irq_handler_entry: irq=0 name=timer
OtherT d.h3. 3825.947997: sched_wakeup: comm=SomeT1 prio=84 success=1
OtherT d.h3. 3825.948005: sched_wakeup: comm=SomeT2 prio=69 success=1
OtherT dNh1. 3825.948009: softirq_raise: vec=8 [action=HRTIMER]
OtherT dNh1. 3825.948011: softirq_raise: vec=1 [action=TIMER]
OtherT dNh1. 3825.948014: irq_handler_exit: irq=0 ret=handled
...
ksoftirqd/0 ...1. 3825.948034: softirq_entry: vec=1 [action=TIMER]
ksoftirqd/0 ...1. 3825.948037: softirq_exit: vec=1 [action=TIMER]
ksoftirqd/0 ...1. 3825.948039: softirq_entry: vec=8 [action=HRTIMER]
ksoftirqd/0 d..3. 3825.948047: sched_wakeup: comm=TimerT prio=54 success=1
ksoftirqd/0 d..3. 3825.948054: sched_switch: prev_comm=ksoftirqd/0 prev_prio=62 prev_state=R+ ==> next_comm=TimerT next_prio=54
TimerT d..4. 3825.948061: sched_pi_setprio: comm=ksoftirqd/0 oldprio=62 newprio=54
TimerT d..3. 3825.948072: sched_switch: prev_comm=TimerT prev_prio=54 prev_state=D ==> next_comm=ksoftirqd/0 next_prio=54
ksoftirqd/0 d..4. 3825.948079: sched_wakeup: comm=TimerT prio=54 success=1
ksoftirqd/0 d..3. 3825.948083: sched_pi_setprio: comm=ksoftirqd/0 oldprio=54 newprio=62
ksoftirqd/0 d..3. 3825.948093: sched_switch: prev_comm=ksoftirqd/0 prev_prio=62 prev_state=R+ ==> next_comm=TimerT next_prio=54
TimerT d.h1. 3825.948980: irq_handler_entry: irq=0 name=timer
TimerT d.h1. 3825.948991: softirq_raise: vec=1 [action=TIMER]
...
There is no return from the read until the RT throttler got activated.
Kernel version 3.4.25-rt37 - I'll check whether anything relevant
has changed since then.
Regards
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: timerfd read does not return [Was: Re: timerfd and softirqd]
2013-04-18 9:11 ` timerfd read does not return [Was: Re: timerfd and softirqd] Stanislav Meduna
@ 2013-04-19 19:53 ` Stanislav Meduna
2013-04-22 7:35 ` [PATCH] Re: timerfd read does not return Stanislav Meduna
2013-04-27 8:34 ` timerfd read does not return - was probably fixed in 3.4.38 Stanislav Meduna
1 sibling, 1 reply; 19+ messages in thread
From: Stanislav Meduna @ 2013-04-19 19:53 UTC (permalink / raw)
To: linux-rt-users@vger.kernel.org
On 18.04.2013 11:11, Stanislav Meduna wrote:
> There is no return from the read until the RT throttler got activated.
> Kernel version 3.4.25-rt37 - I'll check whether anything relevant
> has changed since then.
I changed the RT throttler to do show_state_filter(0); (sysrq-t).
No idea whether this is the sane way to do in that context
and how relevant the results are, but from the failing thread
I am getting
TimerT R running 0 671 636 0x10000000
ceb76a70 b7633158 c01169b0 ceb51ed4 c0116acb 00000029 ceb51e6c c012385d
ceb51edc cea6d248 cd8024b0 cea6d200 00000002 00000029 c012385d 00000001
00000000 00000000 ceb51ea0 c0146476 00000030 ceb51ea8 c012385d ceb51ed4
Call Trace:
[<c01169b0>] ? mm_fault_error+0x170/0x170
[<c0116acb>] ? do_page_fault+0x11b/0x390
[<c012385d>] ? irq_exit+0x6d/0x80
[<c012385d>] ? irq_exit+0x6d/0x80
[<c0146476>] ? sub_preempt_count+0x36/0x50
[<c012385d>] ? irq_exit+0x6d/0x80
[<c03a9718>] ? do_IRQ+0x48/0x94
[<c01169b0>] ? mm_fault_error+0x170/0x170
last message repeated 2 times
[<c03a8e3d>] ? error_code+0x5d/0x70
[<c0130000>] ? sys_rt_sigqueueinfo+0x70/0x90
[<c01169b0>] ? mm_fault_error+0x170/0x170
[<c027cb51>] ? __put_user_8+0x11/0x19
[<c01fa323>] ? timerfd_read+0x183/0x280
[<c013aa40>] ? wake_up_bit+0x60/0x60
[<c01bffcf>] ? vfs_read+0x9f/0x150
[<c01c08e7>] ? fget_light+0x87/0xe0
[<c01fa1a0>] ? sys_timerfd_gettime+0x140/0x140
[<c01c0152>] ? sys_read+0x42/0x70
[<c03a8b95>] ? syscall_call+0x7/0xb
[<c03a0000>] ? init_memory_mapping+0x1a0/0x410
I have two instances of this trace and one another:
Call Trace:
[<c027bffc>] ? trace_hardirqs_on_thunk+0xc/0x10
[<c03a7dbd>] ? restore_all+0xf/0xf
[<c027007b>] ? cfq_completed_request+0x58b/0x5f0
[<c0119ea0>] ? __kunmap_atomic+0x50/0x60
[<c01aadd1>] ? handle_pte_fault+0x141/0xa00
[<c01ab710>] ? handle_mm_fault+0x80/0xc0
[<c015b26d>] ? rt_up_read+0x1d/0x30
[<c0116b18>] ? do_page_fault+0x168/0x390
[<c012385d>] ? irq_exit+0x6d/0x80
[<c0161684>] ? irq_to_desc+0x14/0x20
[<c0103c3f>] ? handle_irq+0x1f/0x90
[<c03a890f>] ? do_IRQ+0x3f/0x94
[<c011007b>] ? x86_schedule_events+0x34b/0x4b0
[<c03a882e>] ? common_interrupt+0x2e/0x40
[<c0130000>] ? sys_rt_sigqueueinfo+0x70/0x90
[<c027bd51>] ? __put_user_8+0x11/0x19
[<c01f9523>] ? timerfd_read+0x183/0x280
[<c013aa40>] ? wake_up_bit+0x60/0x60
[<c01bf1cf>] ? vfs_read+0x9f/0x150
[<c01bfae7>] ? fget_light+0x87/0xe0
[<c01f93a0>] ? sys_timerfd_gettime+0x140/0x140
[<c01bf352>] ? sys_read+0x42/0x70
[<c03a7d95>] ? syscall_call+0x7/0xb
The __put_user_8 looks like the put_user at the end of the
timerfd_read. Where does the sys_rt_sigqueueinfo come from?
The read destination is just a normal 8-byte variable on stack,
I don't see how this can become invalid while the thread is
in kernel
uint64_t exp;
...
read(tmrFd, &exp, sizeof(exp))
The timer fd _does_ eventually return - after 200 ms to 5 seconds -
and works normally afterwards. Unfortunately I don't know whether
it returns with 8 or with -EFAULT. In any case there is no crash,
I do not catch SIGSEGV, SIGBUS and similar.
I'm puzzled. Does this make sense to anyone? Is this better suited
for the general Linux list?
Unrelated questions: I am not so familiar with Linux on this level,
but shouldn't interrupts be handled on their own stack?
Thanks
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH] Re: timerfd read does not return
2013-04-19 19:53 ` Stanislav Meduna
@ 2013-04-22 7:35 ` Stanislav Meduna
2013-04-22 8:55 ` Stanislav Meduna
0 siblings, 1 reply; 19+ messages in thread
From: Stanislav Meduna @ 2013-04-22 7:35 UTC (permalink / raw)
To: linux-rt-users@vger.kernel.org, Thomas Gleixner
On 19.04.2013 21:53, Stanislav Meduna wrote:
>> There is no return from the read until the RT throttler got activated.
>> Kernel version 3.4.25-rt37 - I'll check whether anything relevant
>> has changed since then.
FWIW, the following patch seems to solve the issue for me.
Unfortunately I have no idea whether this is a sane way to
do and whether it solves or just masks or delays the issue,
I just decided to try it after seeing http://lkml.org/lkml/2012/2/8/487
Note that in my case the ksoftirqd has lower priority than
the thread reading the timerfd, so the latter gets woken up
immediately and it is well possible and usual that it returns
into the kernel to do another read before the hrtimer softirq
ends. Would it be possible that there is some race in this
situation?
diff --git a/fs/timerfd.c b/fs/timerfd.c
index 57f0e4e..b06ba86 100644
--- a/fs/timerfd.c
+++ b/fs/timerfd.c
@@ -222,6 +222,7 @@ static ssize_t timerfd_read(struct file *file, char __user *buf, size_t count,
ctx->ticks = 0;
}
spin_unlock_irq(&ctx->wqh.lock);
+ hrtimer_wait_for_timer(&ctx->tmr);
if (ticks)
res = put_user(ticks, (u64 __user *) buf) ? -EFAULT: sizeof(ticks);
return res;
Thanks
--
Stano
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH] Re: timerfd read does not return
2013-04-22 7:35 ` [PATCH] Re: timerfd read does not return Stanislav Meduna
@ 2013-04-22 8:55 ` Stanislav Meduna
0 siblings, 0 replies; 19+ messages in thread
From: Stanislav Meduna @ 2013-04-22 8:55 UTC (permalink / raw)
To: linux-rt-users@vger.kernel.org, Thomas Gleixner
On 22.04.2013 09:35, Stanislav Meduna wrote:
> FWIW, the following patch seems to solve the issue for me.
> Unfortunately I have no idea whether this is a sane way to
> do and whether it solves or just masks or delays the issue,
Unfortunately it only delays it (funny how it crashes minutes
after I write to the list, after running for hours and hours
before), so please, disregard :(
The dumped call trace at the time the throttler kicks in this time
restore_all+0xf/0xf
irq_exit+0x6d/0x80
sub_preempt_count+0x36/0x50
irq_exit+0x6d/0x80
do_IRQ+0x48/0x94
__kunmap_atomic+0x50/0x60
handle_pte_fault+0x141/0xa00
trace_hardirqs_on_thunk+0xc/0x10
restore_all+0xf/0xf
handle_mm_fault+0x80/0xc0
rt_up_read+0x1d/0x30
do_page_fault+0x168/0x390
irq_exit+0x6d/0x80
irq_to_desc+0x14/0x20
handle_irq+0x1f/0x90
do_IRQ+0x3f/0x94
common_interrupt+0x2e/0x40
__kill_pgrp_info+0x5b/0x60
__put_user_8+0x11/0x19
timerfd_read+0x18e/0x2a0
wake_up_bit+0x60/0x60
vfs_read+0x9f/0x150
fget_light+0x87/0xe0
sys_timerfd_gettime+0x140/0x140
sys_read+0x42/0x70
syscall_call+0x7/0xb
init_memory_mapping+0x230/0x410
and again the last logged trace is sched_switch to the timer thread
and there is no softirq_exit from HRTIMER
Again __put_user_8 and then something signal-related. Note: I do not
(knowingly) use signals in my application, neither explicitly nor
pthread_cancel or something like that via glibc.
The problem does not manifest if I use timer_create instead
of timerfd (at least such version did run for 2,5 days without
a problem).
Regards
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: timerfd read does not return - was probably fixed in 3.4.38
2013-04-18 9:11 ` timerfd read does not return [Was: Re: timerfd and softirqd] Stanislav Meduna
2013-04-19 19:53 ` Stanislav Meduna
@ 2013-04-27 8:34 ` Stanislav Meduna
2013-04-28 11:53 ` Carsten Emde
` (2 more replies)
1 sibling, 3 replies; 19+ messages in thread
From: Stanislav Meduna @ 2013-04-27 8:34 UTC (permalink / raw)
To: linux-rt-users@vger.kernel.org, rostedt; +Cc: Thomas Gleixner
On 18.04.2013 11:11, Stanislav Meduna wrote:
> from a new log that includes syscall tracing it seems that a thread
> waiting in a timerfd is woken, but does not return from the read:
For the record, the problem seems to be the issue that the
http://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit/?h=v3.4-rt&id=52cecaa
fixed in v3.4.38-rt52 (tracing: Fix free of probe entry by calling
call_rcu_sched()). A kernel with just this commit reverted stalled
once per ~4 hours, with this one it did not stall in ~24h (I will
surely try to run it longer).
Why did is always manifest itself by hanging in return from timerfd
read (and not e.g. when timer_create and friends were used) is beyond
me, but there will be a reason.
Sorry for the false alarm, it was already fixed at the time I reported
it - it is just that one wants to know the reason before updating
to a brand new kernel with 750+ other changes.
A general question: I am seeing a few recent changes in the tracing
code. Is it generally safe to have at least latency histogram enabled
in the production code, or is it advised not to compile these features
in? I'd like to see the latencies the customer is getting in the real
environment, but if the code is considered as work-in-progress,
it is better to play it safe.
Thanks
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: timerfd read does not return - was probably fixed in 3.4.38
2013-04-27 8:34 ` timerfd read does not return - was probably fixed in 3.4.38 Stanislav Meduna
@ 2013-04-28 11:53 ` Carsten Emde
2013-04-29 8:43 ` Stanislav Meduna
2013-05-02 20:02 ` Steven Rostedt
2013-05-10 12:42 ` timerfd read does not return - some traces Stanislav Meduna
2 siblings, 1 reply; 19+ messages in thread
From: Carsten Emde @ 2013-04-28 11:53 UTC (permalink / raw)
To: Stanislav Meduna; +Cc: linux-rt-users@vger.kernel.org, rostedt, Thomas Gleixner
Stano,
> [..]
> A general question: I am seeing a few recent changes in the tracing
> code. Is it generally safe to have at least latency histogram
> enabled in the production code, or is it advised not to compile these
> features in? I'd like to see the latencies the customer is getting in
> the real environment, but if the code is considered as
> work-in-progress, it is better to play it safe.
There are a number of different built-in latency histograms in the
kernel, some of them are best used to trace a known problem (e.g.
INTERRUPT_OFF_HIST and PREEMPT_OFF_HIST) while others are intended for
continuous latency monitoring (CONFIG_WAKEUP_LATENCY_HIST and
CONFIG_MISSED_TIMER_OFFSETS_HIST). The latter are ideally suitable to
document the real-time capabilities of a production system and to
retrospectively analyze a failure that may be related to a prolonged
latency. We, therefore, configure and enable continuous latency
monitoring histograms (CONFIG_WAKEUP_LATENCY_HIST and
CONFIG_MISSED_TIMER_OFFSETS_HIST) by default in all our farm systems
since more than two years (https://www.osadl.org/?id=864), and we are
not aware of any problem that might be related to them. I, thus, would
like to say that they are save to be used in production systems. Since
we do not have much long-term experience with the other histograms and
they may introduce additional and longer latencies than the former, I
would not recommend to enable them in production systems.
BTW: Your question was whether it is "advised not to compile these
features in". There certainly is very little penalty or risk to
configure these features without enabling them. So I don't see any
reason not to compile them in. Only when you enable them
cd /sys/kernel/debug/tracing/latency_hist/enable
for i in wakeup missed_timer_offsets timerandwakeup
do
echo 1 >$i
done
a certain latency penalty and risk of malfunction may apply.
-Carsten.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: timerfd read does not return - was probably fixed in 3.4.38
2013-04-28 11:53 ` Carsten Emde
@ 2013-04-29 8:43 ` Stanislav Meduna
0 siblings, 0 replies; 19+ messages in thread
From: Stanislav Meduna @ 2013-04-29 8:43 UTC (permalink / raw)
To: Carsten Emde; +Cc: linux-rt-users@vger.kernel.org
On 28.04.2013 13:53, Carsten Emde wrote:
Hi Carsten,
> We, therefore, configure and enable continuous latency
> monitoring histograms (CONFIG_WAKEUP_LATENCY_HIST and
> CONFIG_MISSED_TIMER_OFFSETS_HIST) by default in all our farm systems
> since more than two years (https://www.osadl.org/?id=864), and we are
> not aware of any problem that might be related to them.
The problem is our systems that started to exhibit this problem
did have just these enabled :( Many more were compiled in.
Your continuous test farm is impressive! A suggestion: would it
be possible to also add a dmesg and more of the /proc/timer_list
output to the profile pages? This would make comparing with
the own system even easier.
For example the Geode system at https://www.osadl.org/?id=948 :
how did you convince it to use highres timers? In my environment
the Geode LX / CS5536 needs tsc=reliable, but your kernel command
line does not contain it.
Thanks
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: timerfd read does not return - was probably fixed in 3.4.38
2013-04-27 8:34 ` timerfd read does not return - was probably fixed in 3.4.38 Stanislav Meduna
2013-04-28 11:53 ` Carsten Emde
@ 2013-05-02 20:02 ` Steven Rostedt
2013-05-10 12:42 ` timerfd read does not return - some traces Stanislav Meduna
2 siblings, 0 replies; 19+ messages in thread
From: Steven Rostedt @ 2013-05-02 20:02 UTC (permalink / raw)
To: Stanislav Meduna; +Cc: linux-rt-users@vger.kernel.org, Thomas Gleixner
On Sat, 2013-04-27 at 10:34 +0200, Stanislav Meduna wrote:
> A general question: I am seeing a few recent changes in the tracing
> code. Is it generally safe to have at least latency histogram enabled
> in the production code, or is it advised not to compile these features
> in? I'd like to see the latencies the customer is getting in the real
> environment, but if the code is considered as work-in-progress,
> it is better to play it safe.
Only the wakeup latency tracer does not cause a hit to performance. I
recommend irqsoff/preemptoff to not be enabled on production systems.
Not for safety reasons, but because they cause a noticeable overhead to
the kernel when configured in but not enabled.
As for the other tracers, the function tracer is usually fine. But some
have said that they see a slight performance decrease when configured
in. I haven't seen that, but it really does depend on the hardware.
The events should not be an issue to configure in.
-- Steve
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: timerfd read does not return - some traces
2013-04-27 8:34 ` timerfd read does not return - was probably fixed in 3.4.38 Stanislav Meduna
2013-04-28 11:53 ` Carsten Emde
2013-05-02 20:02 ` Steven Rostedt
@ 2013-05-10 12:42 ` Stanislav Meduna
2013-05-12 17:31 ` Stanislav Meduna
2013-05-12 23:20 ` timerfd read does not return - hangs inside put_user Stanislav Meduna
2 siblings, 2 replies; 19+ messages in thread
From: Stanislav Meduna @ 2013-05-10 12:42 UTC (permalink / raw)
To: linux-rt-users@vger.kernel.org; +Cc: rostedt, Thomas Gleixner, Carsten Emde
On 27.04.2013 10:34, Stanislav Meduna wrote:
> For the record, the problem seems to be the issue that the
> http://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit/?h=v3.4-rt&id=52cecaa
> fixed in v3.4.38-rt52 (tracing: Fix free of probe entry by calling
> call_rcu_sched()).
Hm.. it was not fixed, it just moved the timings so that it is
even less reproducible. I am now back at 3.4.25-rt37, with slightly
buggy application - due to a bad ioctl it tries to repeatedly
load some module that it does not find. This seems to push the
timings so that the problem does manifest sometimes.
Unfortunately I am unable to reproduce the problem with
function tracing enabled :( I will try to enable/disable
single interesting functions - any tips for what is
the most interesting?
I have uploaded the trace.dat captured by
trace-cmd start -b 64000 -e irq -e sched -e syscalls -e timer
and an excerpt from it in textual form at
http://www.meduna.org/tmp/trace.timerfdhang.tar.gz
I would greatly appreciate it if someone could take a look.
The threads:
659 - the thread running a 5 ms timerfd loop, RR, priority 45
3 - ksoftirqd, FF, 37
1276 - a thread trying to do a non-blocking TCP connect. If it
fails, it does getsockopt for error, setsockopt
(the buggy one) and closes the socket. RR, 25
1271 - a thread doing the "real" work. It waits at the futex
that is woken from the timerfd thread. RR, 25
653 - a thread periodically (each ms) reading some device that
does not exist at this platform (returns EBADF) and
sleeps. RR, 25
The interrupts run at FF, 50.
The functionality:
49762.922986 the timerfd thread exits the read()
successfully for the last time
49762.923028 it is back in the read
49762.927836 the HRTIMER for the next iteration is raised and
49762.927872 starts processing. After some PI juggling
49762.927934 arms it for the new interval, i.e. the hrtimer_restart
in timerfd.c was reached
49762.927944 the thread with the socket is priority inherit. As far
as I can tell the two do not share any userspace lock
that is held at the moment, so this has to be some
kernel one.
Anyway, a network interrupt comes in and after handling
the thread obviously finishes the lock and returns
the priority
49762.928029 the timerfd thread gets the CPU, does not giveit back,
but the end of the syscall is not reached in a sane time. It eventually
is, this time after more than 2 seconds (I've seen 200 ms to 4 s);
however this is not captured as I stopped the tracing at the RT
throttler activation.
This is a 32-bit uniprocessor, so there can be neither races between
CPUs nor 64-bit atomic access problems.
I already tried:
- fixing the bug that caused the module request
- moving ksoftirqd priority above the timerfd thread
- enable/disable highres timers
- different machines - a Geode based one (needs tsc=reliable
for the hrtimers) and a Celeron M based one (hpet=force needed)
- removing loadable modules and anything debug-related from the kernel
config
- running with lockdep (unable to reproduce, so no reliable data)
- changing a suspicious (for me at least) code in e100_watchdog
to use raw spin lock
Thanks
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: timerfd read does not return - some traces
2013-05-10 12:42 ` timerfd read does not return - some traces Stanislav Meduna
@ 2013-05-12 17:31 ` Stanislav Meduna
2013-05-12 23:20 ` timerfd read does not return - hangs inside put_user Stanislav Meduna
1 sibling, 0 replies; 19+ messages in thread
From: Stanislav Meduna @ 2013-05-12 17:31 UTC (permalink / raw)
To: linux-rt-users@vger.kernel.org; +Cc: rostedt, Thomas Gleixner, Carsten Emde
On 10.05.2013 14:42, Stanislav Meduna wrote:
> I have uploaded the trace.dat captured by
> trace-cmd start -b 64000 -e irq -e sched -e syscalls -e timer
Actually the problem probably comes earlier. The thread with id 1276
normally tries to call setsockopt and then right after it
returns a select is called. See e.g. trace #914414 @ 49720.850080.
There is no way in the code it can wait for more than tens of
microseconds - no loop, no lock, just two function calls.
With -p function -n '*preempt_count' (which unfortunately changes
the timings so that the problem does not occur) there is nothing
logged between the calls as well, except the syscall_trace_entry
function.
However, at #1800630 @ 49762.927207 the setsockopt returns,
but the expected system call is not entered for 600 us
and no irq, sched or timer event is logged in between.
I also have another instance of the crash where the timing
is different - the thread runs for 4 ms with soft and hard
interrupts coming, so I am sure that this is not some SMI.
It really looks that something is spinning here.
At #1800649 the priority of the thread is boosted, i.e. there
most probably _is_ a PI lock held. It even looks to be unlocked
at #1800658 where the priority boost goes away.
Which one? What locking happens between sys_exit_socketcall
is logged and the time next syscall entry is logged?
The problem akso happens with the whole CONFIG_FTRACE subtree
disabled, so if there is some lock only present if the
tracers are present, it is not the (only) culprit.
Thanks
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: timerfd read does not return - hangs inside put_user
2013-05-10 12:42 ` timerfd read does not return - some traces Stanislav Meduna
2013-05-12 17:31 ` Stanislav Meduna
@ 2013-05-12 23:20 ` Stanislav Meduna
2013-05-13 8:05 ` timerfd read does not return - caused by MM fault Stanislav Meduna
1 sibling, 1 reply; 19+ messages in thread
From: Stanislav Meduna @ 2013-05-12 23:20 UTC (permalink / raw)
To: linux-rt-users@vger.kernel.org; +Cc: rostedt, Thomas Gleixner, Carsten Emde
On 10.05.2013 14:42, Stanislav Meduna wrote:
> 49762.928029 the timerfd thread gets the CPU, does not giveit back,
> but the end of the syscall is not reached in a sane time.
Hmm... I added some trace_printks into fs/timerfd.c:
static ssize_t timerfd_read(
{
...
trace_printk("timerfd_read before unlock, res=%d", res);
spin_unlock_irq(&ctx->wqh.lock);
trace_printk("timerfd_read after unlock, res=%d", res);
if (ticks)
res = put_user(ticks, (u64 __user *) buf) ? -EFAULT: sizeof(ticks);
trace_printk("timerfd_read return, res=%d, ticks=%llu, buf=%p", res, (unsigned long long) ticks, buf);
return res;
}
The first two are printed. The last one is not.
0....0 timerfd_read: timerfd_read before unlock, res=0
0....0 timerfd_read: timerfd_read after unlock, res=0
The usual
0....0 timerfd_read: timerfd_read return, res=8, ticks=1, buf=0xb7600158
does _not_ happen here.
So it looks like the problem happens inside the put_user,
maybe a pagefault? The buf is an address on the stack:
while(alive) {
u64 exp;
if (read(tmrFd, &exp, sizeof(exp)) != sizeof(exp) || exp < 1)
continue;
...
and the process is running with mlockall(MCL_CURRENT | MCL_FUTURE),
so the whole stack is forced into the RAM.
Viewing the ps -o min_flt,maj_flt for the task shows 969701
minor faults (that do not increment - I will check this when
the hang happens again) and 0 major ones.
This starts to look like some priority inversion where a realtime
thread is busy-waiting for something a SCHED_OTHER thread holds.
After the RT throttler kicks in, that other thread can proceed
and the system eventually recovers - unfortunately after
a 1+ second pause, which is what I am seeing.
Is there something that could cause stalling the whole realtime
thread for a significant time? Unfortunately I am not an expert
on memory management, pagefaults etc - but I guess this should
only produce a minor pagefault and that should never block?
Or am I seeing it wrong?
Regards
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: timerfd read does not return - caused by MM fault
2013-05-12 23:20 ` timerfd read does not return - hangs inside put_user Stanislav Meduna
@ 2013-05-13 8:05 ` Stanislav Meduna
2013-05-14 8:31 ` Livelock in handle_pte_fault [Was: Re: timerfd read does not return] Stanislav Meduna
0 siblings, 1 reply; 19+ messages in thread
From: Stanislav Meduna @ 2013-05-13 8:05 UTC (permalink / raw)
To: linux-rt-users@vger.kernel.org; +Cc: rostedt, Thomas Gleixner, Carsten Emde
On 13.05.2013 01:20, Stanislav Meduna wrote:
> So it looks like the problem happens inside the put_user,
> maybe a pagefault? The buf is an address on the stack:
Yep, this is a page fault. I added tracing of the
mm_fault_error
handle_mm_fault
handle_pte_fault
do_page_fault
functions
The result is
0....0 62811.755379: bprint: timerfd_read: timerfd_read after unlock, res=0
0d...0 62811.755382: function: do_page_fault
0....0 62811.755386: function: handle_mm_fault
0....0 62811.755389: function: handle_pte_fault
0d...0 62811.755394: function: do_page_fault
0....0 62811.755396: function: handle_mm_fault
0....0 62811.755398: function: handle_pte_fault
0d...0 62811.755402: function: do_page_fault
0....0 62811.755404: function: handle_mm_fault
0....0 62811.755406: function: handle_pte_fault
> Viewing the ps -o min_flt,maj_flt for the task shows 969701
> minor faults (that do not increment - I will check this when
> the hang happens again) and 0 major ones.
The number of minor faults of the thread jumped to 1433400 and
the process recovered after 2.77 seconds.
The trace file is at
http://www.meduna.org/tmp/trace.mmfaulthang.dat.gz
Thanks
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* Livelock in handle_pte_fault [Was: Re: timerfd read does not return]
2013-05-13 8:05 ` timerfd read does not return - caused by MM fault Stanislav Meduna
@ 2013-05-14 8:31 ` Stanislav Meduna
2013-11-25 10:36 ` Vijay Katoch
0 siblings, 1 reply; 19+ messages in thread
From: Stanislav Meduna @ 2013-05-14 8:31 UTC (permalink / raw)
To: linux-rt-users@vger.kernel.org; +Cc: rostedt, Thomas Gleixner, Carsten Emde
On 13.05.2013 10:05, Stanislav Meduna wrote:
> 0d...0 62811.755394: function: do_page_fault
> 0....0 62811.755396: function: handle_mm_fault
> 0....0 62811.755398: function: handle_pte_fault
> 0d...0 62811.755402: function: do_page_fault
> 0....0 62811.755404: function: handle_mm_fault
> 0....0 62811.755406: function: handle_pte_fault
The flags in the pagefault handler are 0x28 - if I understand
it correctly, FAULT_FLAG_KILLABLE | FAULT_FLAG_ALLOW_RETRY.
The faulting address is indeed the one from stack that worked
for hours before, is mlockall()-ed and I have (of course)
no swap. I will add some code to print the content of
the offending pte.
The code in handle_pte_fault proceeds through the
entry = pte_mkyoung(entry);
line and the following
ptep_set_access_flags
returns zero. This repeats ad nauseum without anything run
in between. I will add some tracing prints to output
the content of the pte.
Adding flush_tlb_page(vma, address) at the beginning of
handle_pte_fault does not change anything.
The length of the hang could correlate with the time until
some SCHED_OTHER process is scheduled after the RT throttler
activates. There is a process running each 2 seconds and the
length of the hang is usually between 1 and 3 seconds. This
is not (yet) verified.
I am starting to think that the virtual memory mapping of the
process got somehow corrupted and is fixed at the next regular
context switch. There is no switch to other non-kernel process,
only to ksoftirqd, irq threads or other thread of the
same process afterwards. Shortly before there was some
switching between modprobe and kworker and sched_process_free
of kworker and modprobe in the RCU softirq.
The symptoms are similar to
http://lkml.indiana.edu/hypermail/linux/kernel/1103.0/01364.html
Regards
--
Stano
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: Livelock in handle_pte_fault [Was: Re: timerfd read does not return]
2013-05-14 8:31 ` Livelock in handle_pte_fault [Was: Re: timerfd read does not return] Stanislav Meduna
@ 2013-11-25 10:36 ` Vijay Katoch
0 siblings, 0 replies; 19+ messages in thread
From: Vijay Katoch @ 2013-11-25 10:36 UTC (permalink / raw)
To: linux-rt-users
Hello,
I'm also facing timer related issue in 2.6.33.7.2-rt30.
I have an embedded board with PowerPC 5200 running Realtime Linux with
version 2.6.33 (OSADL).
My application is using one high resolution timer in Linux for alarms. This
timer sometimes didn’t expire. The problem happens very rarely, it may go
many months between each time it happens on a systems.
The timer is set by function timer_settime with absolute time.
I have done some interesting observations when the timer didn’t expire:
- Function timer_gettime returns remaining time 1ns.
- Active timers are checked by displaying file /proc/timer_list and the
timer_list didn’t show this timer in the active timer list.
I have looked into the Linux source and found a possible scenario:
The function timer_gettime ends up in function common_timer_get (posix-
timers.c). Function common_timer_get returns it_value.tv_nsec = 1 if timer
is active and remaining time is <= 0. This means that the timer has counted
down and the timer state must be 'enqueued' or 'callback'.
I suppose that it is in state 'callback', that means it is running in
function __run_hrtimer (hrtimer.c). Function __run_hrtimer is calling
function__remove_hrtimer that remove the timer from timer active list before
it changes timer state from 'enqueued' to 'callback'.
Several functions are called in function __run_hrtimer between changing
timer state to 'callback' and the end of the function where the state
'callback' is cleared. If it is hanging here, the function timer_gettime
may return 1ns while the timer is not in the active list. Here it is calling
several functions in Linux kernel and the callback function in the
application.
I have checked the callback function in my application. It is signaling a
semaphore and setting the timer again on the same thread. I can't see why
that should not work.
Have you observed a similar case?
Do you have any idea of what are going wrong here?
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2013-11-25 10:40 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-15 11:02 hrtimer: interrupt took 6742 ns, then RT throttling and hung machine for nearly 2 seconds Stanislav Meduna
2013-04-15 11:54 ` Stanislav Meduna
2013-04-15 12:22 ` Thomas Gleixner
2013-04-15 12:56 ` Stanislav Meduna
2013-04-17 15:46 ` timerfd and softirqd [Was: Re: hrtimer: interrupt took 6742 ns, then RT throttling and hung machine for nearly 2 seconds] Stanislav Meduna
2013-04-18 9:11 ` timerfd read does not return [Was: Re: timerfd and softirqd] Stanislav Meduna
2013-04-19 19:53 ` Stanislav Meduna
2013-04-22 7:35 ` [PATCH] Re: timerfd read does not return Stanislav Meduna
2013-04-22 8:55 ` Stanislav Meduna
2013-04-27 8:34 ` timerfd read does not return - was probably fixed in 3.4.38 Stanislav Meduna
2013-04-28 11:53 ` Carsten Emde
2013-04-29 8:43 ` Stanislav Meduna
2013-05-02 20:02 ` Steven Rostedt
2013-05-10 12:42 ` timerfd read does not return - some traces Stanislav Meduna
2013-05-12 17:31 ` Stanislav Meduna
2013-05-12 23:20 ` timerfd read does not return - hangs inside put_user Stanislav Meduna
2013-05-13 8:05 ` timerfd read does not return - caused by MM fault Stanislav Meduna
2013-05-14 8:31 ` Livelock in handle_pte_fault [Was: Re: timerfd read does not return] Stanislav Meduna
2013-11-25 10:36 ` Vijay Katoch
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).