From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id AE5B510E720 for ; Sat, 13 May 2023 02:22:43 +0000 (UTC) From: Umesh Nerlige Ramappa To: igt-dev@lists.freedesktop.org, Tvrtko Ursulin , Ashutosh Dixit Date: Fri, 12 May 2023 19:22:28 -0700 Message-Id: <20230513022234.2832233-10-umesh.nerlige.ramappa@intel.com> In-Reply-To: <20230513022234.2832233-1-umesh.nerlige.ramappa@intel.com> References: <20230513022234.2832233-1-umesh.nerlige.ramappa@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [igt-dev] [PATCH i-g-t 09/15] intel_gpu_top: Switch pmu_counter to use aggregated values List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: Aggregate gt specific values for freq and rc6 counters. Signed-off-by: Umesh Nerlige Ramappa Reviewed-by: Tvrtko Ursulin --- tools/intel_gpu_top.c | 49 +++++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c index b0c177329..d995c39b9 100644 --- a/tools/intel_gpu_top.c +++ b/tools/intel_gpu_top.c @@ -554,6 +554,26 @@ static int get_num_gts(uint64_t type) return cnt; } +static void init_aggregate_counters(struct engines *engines) +{ + struct pmu_counter *pmu; + + pmu = &engines->freq_req; + pmu->type = igt_perf_type_id(engines->device); + pmu->config = I915_PMU_REQUESTED_FREQUENCY; + pmu->present = true; + + pmu = &engines->freq_act; + pmu->type = igt_perf_type_id(engines->device); + pmu->config = I915_PMU_ACTUAL_FREQUENCY; + pmu->present = true; + + pmu = &engines->rc6; + pmu->type = igt_perf_type_id(engines->device); + pmu->config = I915_PMU_RC6_RESIDENCY; + pmu->present = true; +} + static int pmu_init(struct engines *engines) { unsigned int i; @@ -569,14 +589,7 @@ static int pmu_init(struct engines *engines) if (fd < 0) return -1; - engines->freq_req.config = I915_PMU_REQUESTED_FREQUENCY; - _open_pmu(type, engines->num_counters, &engines->freq_req, engines->fd); - - engines->freq_act.config = I915_PMU_ACTUAL_FREQUENCY; - _open_pmu(type, engines->num_counters, &engines->freq_act, engines->fd); - - engines->rc6.config = I915_PMU_RC6_RESIDENCY; - _open_pmu(type, engines->num_counters, &engines->rc6, engines->fd); + init_aggregate_counters(engines); for (i = 0; i < engines->num_gts; i++) { engines->freq_req_gt[i].config = __I915_PMU_REQUESTED_FREQUENCY(i); @@ -692,14 +705,28 @@ static void pmu_sample(struct engines *engines) for (i = 0; i < engines->num_gts; i++) { update_sample(&engines->freq_req_gt[i], val); + engines->freq_req.val.cur += engines->freq_req_gt[i].val.cur; + engines->freq_req.val.prev += engines->freq_req_gt[i].val.prev; + update_sample(&engines->freq_act_gt[i], val); + engines->freq_act.val.cur += engines->freq_act_gt[i].val.cur; + engines->freq_act.val.prev += engines->freq_act_gt[i].val.prev; + update_sample(&engines->rc6_gt[i], val); + engines->rc6.val.cur += engines->rc6_gt[i].val.cur; + engines->rc6.val.prev += engines->rc6_gt[i].val.prev; } - update_sample(&engines->freq_req, val); - update_sample(&engines->freq_act, val); + engines->freq_req.val.cur /= engines->num_gts; + engines->freq_req.val.prev /= engines->num_gts; + + engines->freq_act.val.cur /= engines->num_gts; + engines->freq_act.val.prev /= engines->num_gts; + + engines->rc6.val.cur /= engines->num_gts; + engines->rc6.val.prev /= engines->num_gts; + update_sample(&engines->irq, val); - update_sample(&engines->rc6, val); for (i = 0; i < engines->num_engines; i++) { struct engine *engine = engine_ptr(engines, i); -- 2.36.1