Re: [PATCH] sched: update_rq_clock() must skip ONE update

From: Mike Galbraith
Date: Mon Mar 31 2014 - 00:20:47 EST


On Sun, 2014-03-30 at 17:12 -0700, Linus Torvalds wrote:
> The patch looks fine, but the changelog is so chock-full of odd
> language that I don't know what to do with the patch.
>
> Is this actually a problem in real life, or just in the drug-induced
> wonderland that Mike was in when writing the changelog?

Point of being verbose was to make sure it was clear exactly how this
harmless little bug selectively kills large IO boxen.. and yeah, I'm
pretty sure this was in the real world, but hey, ya never know, looney
bins are full of people who think they're operating in the real world.

Whatever, I suppose the data suffices. Magnitudes, their sources and
consequences are irrelevant to the bean counting buglet itself.

modprobe-134 [000] 5.027903: update_rq_clock <-scheduler_tick
modprobe-134 [000] 5.037857: update_rq_clock <-scheduler_tick
modprobe-134 [000] 5.037864: update_rq_clock <-enqueue_task
modprobe-134 [000] 5.037866: enqueue_task_watchdog: WATCHDOG/0 enqueue 4915630446
modprobe-134 [000] 5.044965: update_rq_clock <-scheduler_tick
modprobe-134 [000] 5.046275: update_rq_clock <-scheduler_tick
modprobe-134 [000] 5.050274: update_rq_clock <-scheduler_tick
modprobe-134 [000] 5.052862: update_rq_clock <-dequeue_task
modprobe-134 [000] 5.052866: pick_next_task_watchdog: WATCHDOG/0 select 4915630446
watchdog/0-7 [000] 5.052868: finish_task_switch: WATCHDOG/0 runs 5052867644
watchdog/0-7 [000] 5.052869: watchdog: WATCHDOG/0 DELAYED 137238048 max: 137238048
watchdog/0-7 [000] 5.052872: update_rq_clock <-dequeue_task
watchdog/0-7 [000] 5.052873: dequeue_task_watchdog: WATCHDOG/0 dequeue 5052872018
watchdog/0-7 [000] 5.052874: put_prev_task_watchdog: WATCHDOG/0 STOP trace : delta_exec 137241572 sum_exec 137254287

Cc: <stable@xxxxxxxxxxxxxxx>
Signed-off-by: Mike Galbraith <umgwanakikbuti@xxxxxxxxx>
---
kernel/sched/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -118,7 +118,7 @@ void update_rq_clock(struct rq *rq)
{
s64 delta;

- if (rq->skip_clock_update > 0)
+ if (rq->skip_clock_update-- > 0)
return;

delta = sched_clock_cpu(cpu_of(rq)) - rq->clock;



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/