From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C791AC4345F for ; Sat, 4 May 2024 06:46:06 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C3B0F112AEA; Sat, 4 May 2024 06:46:03 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="BatqRF79"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) by gabe.freedesktop.org (Postfix) with ESMTPS id D067A112AD9 for ; Sat, 4 May 2024 06:45:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1714805159; x=1746341159; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=X7s3ryYhlGDLVHarUbqukmmlfc5+c5ufMTdZBMngc2M=; b=BatqRF79lw0PaVbb2uX6VkQIIqYhqEq8BrVf1SS5Ymyrkop5LRuml+uW p1XvgQLgLzFCAxzB6DINt72qG77EorojqWG3fcXIBZ61BOn2aNSAy+dvL 7mcVbwKk92/YlCX/69P49DbmRBFERitTNPLgmYr/MCtlJzBP9NZAiospn zKtA9pDfyHAN6192fXAgpZGSxST6lCn6NHVLuGKOx3MsoDMB+cqOoF1kx qaDyGa8SviJmBN5oErGfYYjjAsyWhLFcsOk7N8EoEh0mTJAm2mLyhFpGM kGXeZLAgbSXo1wRkfqtRqGRJSbDoyAQkBYrW6KtyfEoaPMYFk8DUrN36o A==; X-CSE-ConnectionGUID: vSb2AUg2QxCxP7znLvfqAw== X-CSE-MsgGUID: qjxbOesLRPGwQrucA6t5Ug== X-IronPort-AV: E=McAfee;i="6600,9927,11063"; a="10545765" X-IronPort-AV: E=Sophos;i="6.07,253,1708416000"; d="scan'208";a="10545765" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 May 2024 23:45:59 -0700 X-CSE-ConnectionGUID: 3gqEAr6GSQqKAM4nXGFPMQ== X-CSE-MsgGUID: 3k9E96OzTKGQBcl8Wuduhg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,253,1708416000"; d="scan'208";a="32169824" Received: from lucas-s2600cw.jf.intel.com ([10.165.21.196]) by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 May 2024 23:45:58 -0700 From: Lucas De Marchi To: igt-dev@lists.freedesktop.org Cc: Umesh Nerlige Ramappa , Tvrtko Ursulin , Lucas De Marchi Subject: [PATCH i-g-t v3 11/13] lib/igt_drm_fdinfo: Parse drm-total-cycles Date: Fri, 3 May 2024 23:46:41 -0700 Message-ID: <20240504064643.25863-12-lucas.demarchi@intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240504064643.25863-1-lucas.demarchi@intel.com> References: <20240504064643.25863-1-lucas.demarchi@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: igt-dev@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development mailing list for IGT GPU Tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" Parse drm-total-cycles and annotate what are the possible engine utilization types that can be used. Currently there are 2 possible ways to calculate utilization: 1) via drm-engine, that uses the time and derive the utilization by comparing to the CPU time 2) via drm-cycles + drm-total-cycles, that uses the GPU time igt_drm_fdinfo just marks the presence of the keys, letting the caller decide which method to use. It is assumed that if any drm-engine, drm-cycles or drm-total-cycles is available, it's available for all engines with non-zero utilization. Signed-off-by: Lucas De Marchi --- lib/igt_drm_fdinfo.c | 4 ++++ lib/igt_drm_fdinfo.h | 3 +++ 2 files changed, 7 insertions(+) diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c index 9deeadd4e..f45d0440e 100644 --- a/lib/igt_drm_fdinfo.c +++ b/lib/igt_drm_fdinfo.c @@ -265,6 +265,10 @@ __igt_parse_drm_fdinfo(int dir, const char *fd, struct drm_client_fdinfo *info, idx = parse_engine(l + keylen, info, name_map, map_entries, &val); UPDATE_ENGINE(idx, cycles, val, DRM_FDINFO_UTILIZATION_CYCLES); + } else if (strstartswith(l, "drm-total-cycles-", &keylen)) { + idx = parse_engine(l + keylen, info, + name_map, map_entries, &val); + UPDATE_ENGINE(idx, total_cycles, val, DRM_FDINFO_UTILIZATION_TOTAL_CYCLES); } else if (strstartswith(l, "drm-total-", &keylen)) { idx = parse_region(l + keylen, info, region_map, region_entries, &val); diff --git a/lib/igt_drm_fdinfo.h b/lib/igt_drm_fdinfo.h index ea90edd79..35f43305b 100644 --- a/lib/igt_drm_fdinfo.h +++ b/lib/igt_drm_fdinfo.h @@ -44,6 +44,7 @@ struct drm_client_meminfo { enum drm_fdinfo_utilization { DRM_FDINFO_UTILIZATION_ENGINE_TIME = 1U << 0, DRM_FDINFO_UTILIZATION_CYCLES = 1U << 1, + DRM_FDINFO_UTILIZATION_TOTAL_CYCLES = 1U << 2, }; struct drm_client_fdinfo { @@ -63,6 +64,8 @@ struct drm_client_fdinfo { uint64_t engine_time[DRM_CLIENT_FDINFO_MAX_ENGINES]; /* drm-cycles- values */ uint64_t cycles[DRM_CLIENT_FDINFO_MAX_ENGINES]; + /* drm-total-cycles- values */ + uint64_t total_cycles[DRM_CLIENT_FDINFO_MAX_ENGINES]; unsigned int num_regions; unsigned int last_region_index; -- 2.43.0