On 04/09/2013 11:16 PM, Vincent Guittot wrote: >> > Thanks a lot for info sharing! Vincent. >> > >> > But I checked the rq->avg and task->se.avg, seems none of them are >> > possible be updated on different CPU at the same time. So my printk >> > didn't catch this with benchmark kbuild and aim7 on my SNB EP box. > The problem can happen because reader and writer are accessing the > variable asynchronously and on different CPUs > > CPUA write runnable_avg_sum > CPUB read runnable_avg_sum > CPUB read runnable_avg_period > CPUA write runnable_avg_period > > I agree that the time window, during which this can occur, is short > but not impossible
May I didn't say clear. Vincent. member of rq struct include avg, should be protected by rq->lock when other cpu want to access them. Or be accessed only by local cpu. So they should be no above situation. And for per task avg, the task is impossible to be on different cpu at the same time. so there are also no above problem. I thought the problem may exists for middle level entity, but seems task group has each of entity on every cpu. So there is no this problem too. So, you may better to hold rq->lock when check the buddy cpu info. Correct me if sth wrong. :) -- Thanks Alex -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/