Re: [PATCH] drm/i915/selftests: Disable C-states when measuring RPS frequency response

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes:

> Let's isolate the impact of cpu frequency selection on determing the GPU
> throughput in response to selection of RPS frequencies.
>
> For real systems, we do have to be concerned with the impact of
> integrating c-states, p-states and rp-states, but for the sake of
> proving whether or not RPS works, one baby step at a time.
>
> Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
> Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx>

Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx>


> ---
>  drivers/gpu/drm/i915/gt/selftest_rps.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/selftest_rps.c b/drivers/gpu/drm/i915/gt/selftest_rps.c
> index 395265121e43..e2afc2003caa 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_rps.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_rps.c
> @@ -3,6 +3,7 @@
>   * Copyright © 2020 Intel Corporation
>   */
>  
> +#include <linux/pm_qos.h>
>  #include <linux/sort.h>
>  
>  #include "intel_engine_pm.h"
> @@ -14,6 +15,9 @@
>  #include "selftests/igt_spinner.h"
>  #include "selftests/librapl.h"
>  
> +/* Try to isolate the impact of cstates from determing frequency response */
> +#define CPU_LATENCY 0 /* -1 to disable pm_qos, 0 to disable cstates */
> +
>  static void dummy_rps_work(struct work_struct *wrk)
>  {
>  }
> @@ -406,6 +410,7 @@ int live_rps_frequency_cs(void *arg)
>  	struct intel_gt *gt = arg;
>  	struct intel_rps *rps = &gt->rps;
>  	struct intel_engine_cs *engine;
> +	struct pm_qos_request qos;
>  	enum intel_engine_id id;
>  	int err = 0;
>  
> @@ -421,6 +426,9 @@ int live_rps_frequency_cs(void *arg)
>  	if (INTEL_GEN(gt->i915) < 8) /* for CS simplicity */
>  		return 0;
>  
> +	if (CPU_LATENCY >= 0)
> +		cpu_latency_qos_add_request(&qos, CPU_LATENCY);
> +
>  	intel_gt_pm_wait_for_idle(gt);
>  	saved_work = rps->work.func;
>  	rps->work.func = dummy_rps_work;
> @@ -527,6 +535,9 @@ int live_rps_frequency_cs(void *arg)
>  	intel_gt_pm_wait_for_idle(gt);
>  	rps->work.func = saved_work;
>  
> +	if (CPU_LATENCY >= 0)
> +		cpu_latency_qos_remove_request(&qos);
> +
>  	return err;
>  }
>  
> @@ -536,6 +547,7 @@ int live_rps_frequency_srm(void *arg)
>  	struct intel_gt *gt = arg;
>  	struct intel_rps *rps = &gt->rps;
>  	struct intel_engine_cs *engine;
> +	struct pm_qos_request qos;
>  	enum intel_engine_id id;
>  	int err = 0;
>  
> @@ -551,6 +563,9 @@ int live_rps_frequency_srm(void *arg)
>  	if (INTEL_GEN(gt->i915) < 8) /* for CS simplicity */
>  		return 0;
>  
> +	if (CPU_LATENCY >= 0)
> +		cpu_latency_qos_add_request(&qos, CPU_LATENCY);
> +
>  	intel_gt_pm_wait_for_idle(gt);
>  	saved_work = rps->work.func;
>  	rps->work.func = dummy_rps_work;
> @@ -656,6 +671,9 @@ int live_rps_frequency_srm(void *arg)
>  	intel_gt_pm_wait_for_idle(gt);
>  	rps->work.func = saved_work;
>  
> +	if (CPU_LATENCY >= 0)
> +		cpu_latency_qos_remove_request(&qos);
> +
>  	return err;
>  }
>  
> -- 
> 2.20.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux