[PATCH v3 1/2] drm/i915/gvt: Use real time to do timer check
Zhenyu Wang
zhenyuw at linux.intel.com
Wed Apr 4 03:03:49 UTC 2018
On 2018.04.04 08:43:52 +0800, Zhipeng Gong wrote:
> intel_gvt_schedule check timer through a counter and is supposed
> to wake up to increase the counter every ms.
> In a system with heavy workload, gvt_service_thread can not get
> a chance to run right after wake up and will be delayed several
> milliseconds. As a result, one hundred counter interval means
> several hundred milliseconds in real time.
>
> This patch use real time instead of counter to do timer check.
>
> v2: remove static variable. (Zhenyu)
> v3: correct expire_time update. (Zhenyu)
>
> Signed-off-by: Zhipeng Gong <zhipeng.gong at intel.com>
> Cc: Zhenyu Wang <zhenyuw at linux.intel.com>
> Cc: Min He <min.he at intel.com>
> ---
Reviewed-by: Zhenyu Wang <zhenyuw at linux.intel.com>
> drivers/gpu/drm/i915/gvt/sched_policy.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gvt/sched_policy.c b/drivers/gpu/drm/i915/gvt/sched_policy.c
> index 75b7bc7..8876a57 100644
> --- a/drivers/gpu/drm/i915/gvt/sched_policy.c
> +++ b/drivers/gpu/drm/i915/gvt/sched_policy.c
> @@ -66,6 +66,7 @@ struct gvt_sched_data {
> struct hrtimer timer;
> unsigned long period;
> struct list_head lru_runq_head;
> + ktime_t expire_time;
> };
>
> static void vgpu_update_timeslice(struct intel_vgpu *pre_vgpu)
> @@ -226,14 +227,18 @@ static void tbs_sched_func(struct gvt_sched_data *sched_data)
> void intel_gvt_schedule(struct intel_gvt *gvt)
> {
> struct gvt_sched_data *sched_data = gvt->scheduler.sched_data;
> - static uint64_t timer_check;
>
> mutex_lock(&gvt->lock);
>
> if (test_and_clear_bit(INTEL_GVT_REQUEST_SCHED,
> (void *)&gvt->service_request)) {
> - if (!(timer_check++ % GVT_TS_BALANCE_PERIOD_MS))
> + ktime_t cur_time = ktime_get();
> +
> + if (cur_time >= sched_data->expire_time) {
> gvt_balance_timeslice(sched_data);
> + sched_data->expire_time = ktime_add_ms(
> + cur_time, GVT_TS_BALANCE_PERIOD_MS);
> + }
> }
> clear_bit(INTEL_GVT_REQUEST_EVENT_SCHED, (void *)&gvt->service_request);
>
> --
> 2.7.4
>
--
Open Source Technology Center, Intel ltd.
$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/intel-gvt-dev/attachments/20180404/f4346693/attachment.sig>
More information about the intel-gvt-dev
mailing list