psi: Fix trigger being fired unexpectedly at initial
When a trigger being created, its win.start_value and win.start_time are reset to zero. If group->total[PSI_POLL][t->state] has accumulated before, this trigger will be fired unexpectedly in the next period, even if its growth time does not reach its threshold. So set the window of the new trigger to the current state value. Signed-off-by: Hailong Liu <liuhailong@linux.alibaba.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Suren Baghdasaryan <surenb@google.com> Link: https://lore.kernel.org/r/1648789811-3788971-1-git-send-email-liuhailong@linux.alibaba.com (cherry picked from commit 915a087e4c47334a2f7ba2a4092c4bade0873769) (cherry picked from commit 168af79cd0d6750ddf6c775c79833059da606c34) (cherry picked from commit 9b3b0d7ba99e41a1159a0b9c58ff138bb51d52a1)
This commit is contained in:
parent
09558667e8
commit
e48c85b067
1 changed files with 2 additions and 1 deletions
|
@ -1204,7 +1204,8 @@ struct psi_trigger *psi_trigger_create(struct psi_group *group,
|
|||
t->state = state;
|
||||
t->threshold = threshold_us * NSEC_PER_USEC;
|
||||
t->win.size = window_us * NSEC_PER_USEC;
|
||||
window_reset(&t->win, 0, 0, 0);
|
||||
window_reset(&t->win, sched_clock(),
|
||||
group->total[PSI_POLL][t->state], 0);
|
||||
|
||||
t->event = 0;
|
||||
t->last_event_time = 0;
|
||||
|
|
Loading…
Reference in a new issue