Messages in this thread | | | From | Avri Altman <> | Subject | RE: [PATCH v4] scsi: ufs: Fix imprecise load calculation in devfreq window | Date | Thu, 11 Jun 2020 08:03:35 +0000 |
| |
> > The UFS load calculation is based on "total_time" and "busy_time" in a > devfreq window. However, the source of time is different for both > parameters: "busy_time" is assigned from "jiffies" thus has different > accuracy from "total_time" which is assigned from ktime_get(). > > Besides, the time of window boundary is not exactly the same as > the starting busy time in this window if UFS is actually busy > in the beginning of the window. A similar accuracy error may also > happen for the end of busy time in current window. > > To guarantee the precision of load calculation, we need to > > 1. Align time accuracy of both devfreq_dev_status.total_time and > devfreq_dev_status.busy_time. For example, use "ktime_get()" > directly. > > 2. Align below timelines, > - The beginning time of devfreq windows > - The beginning of busy time in a new window > - The end of busy time in the current window > > Fixes: a3cd5ec55f6c ("scsi: ufs: add load based scaling of UFS gear") > Signed-off-by: Stanley Chu <stanley.chu@mediatek.com> Reviewed-by: Avri Altman <avri.altman@wdc.com>
Just a small nit.
> - stat->total_time = jiffies_to_usecs((long)jiffies - > - (long)scaling->window_start_t); > + stat->total_time = ktime_to_us(curr_t) - scaling->window_start_t; ktime_sub ?
Thanks, Avri
| |