Peter Zijlstra <pet...@infradead.org> 于2020年9月30日周三 下午5:57写道: > > On Wed, Sep 30, 2020 at 05:16:29PM +0800, jun qian wrote: > > Peter Zijlstra <pet...@infradead.org> 于2020年9月30日周三 下午4:20写道: > > > > > > On Wed, Sep 30, 2020 at 10:47:12AM +0800, qianjun.ker...@gmail.com wrote: > > > > From: jun qian <qianjun.ker...@gmail.com> > > > > > > > > When the sched_schedstat changes from 0 to 1, some sched se maybe > > > > already in the runqueue, the se->statistics.wait_start will be 0. > > > > So it will let the (rq_of(cfs_rq)) - se->statistics.wait_start) > > > > wrong. We need to avoid this scenario. > > > > > > Is this really the only problem there? Did you do a full audit of that > > > schedstat nonsense? > > > > > > > Did you mean that the sched_stat_xxx's xxx_start(sched_stat_sleep > > sched_stat_iowait sched_stat_blocked > > sched_stat_runtime) may be also depend the schedstat_enabled? > > Yeah, this runtime schedstat_enabled thing is fairly recent, it used to > be an always on/off kinda thing. > > At the time we figured inconsistencies from dynamically > enabling/disabling it were okay, it's just stats after all. > > But if you now want to 'fix' that, then a full audit might be nice. > > > I have searched the codes, and found that these sched_stat_xxx's > > xxx_start don't depend the schedstat_enabled > > except the wait_start. > > OK, so you did the audit and only found this one issue? That's good > Changelog material :-) >
I found another problem, when the sched_schedstat changes from 1 to 0, the sched se which is already in the runqueue, the statistics.wait_start already has a value. At this moment sched_schedstat changes from 0 to 1 again, the (rq_of(cfs_rq)) - se->statistics.wait_start) will not be 0 and the wait time will be bigger than the real one. So we need to modify the patch to resolve the problem with this scenario. So I really need a full audit might, :-) Thanks > Thanks!