Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
To: Petri Latvala <petri.latvala@intel.com>
Cc: igt-dev@lists.freedesktop.org
Subject: Re: [igt-dev] [PATCH i-g-t v6 18/36] tools/i915-perf-recorder: add ability to select device
Date: Tue, 18 Oct 2022 15:52:48 -0700	[thread overview]
Message-ID: <Y08uQLIdVADAQ7i3@unerlige-ril> (raw)
In-Reply-To: <Y0ULsllgX/R0ShLk@platvala-desk.ger.corp.intel.com>

On Tue, Oct 11, 2022 at 09:22:42AM +0300, Petri Latvala wrote:
>On Mon, Oct 10, 2022 at 09:41:57PM +0000, Umesh Nerlige Ramappa wrote:
>> From: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
>>
>> We're starting to have system with multiple Intel GPUs.
>>
>> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
>> ---
>>  tools/i915-perf/i915_perf_recorder.c | 50 ++++++++++++++++++++++++----
>>  1 file changed, 43 insertions(+), 7 deletions(-)
>>
>> diff --git a/tools/i915-perf/i915_perf_recorder.c b/tools/i915-perf/i915_perf_recorder.c
>> index 00195290..7ced7b40 100644
>> --- a/tools/i915-perf/i915_perf_recorder.c
>> +++ b/tools/i915-perf/i915_perf_recorder.c
>> @@ -250,16 +250,37 @@ find_intel_render_node(void)
>>  	return -1;
>>  }
>>
>> +static void
>> +print_intel_devices(void)
>> +{
>> +	fprintf(stdout, "Available devices:\n");
>> +	for (int i = 0; i < 128; i++) {
>> +		if (read_device_param("card", i, "vendor") == 0x8086) {
>> +			uint32_t devid = read_device_param("card", i, "device");
>> +			const struct intel_device_info *devinfo =
>> +				intel_get_device_info(devid);
>> +			fprintf(stdout, "   %i: %s (0x%04hx)\n", i,
>> +				devinfo ? devinfo->codename : "unknwon",
>
>Typo, "unknown".
>
>Is there a reason why this doesn't use the same device
>filtering/selection machinery that other tools and the tests
>themselves are using?

afair, that was pulling in a lot more code/library than needed for the 
perf tool and/or GPUvis, but I might be wrong as I have not tried it 
recently.

Regards,
Umesh
>
>
>-- 
>Petri Latvala
>
>
>
>> +				devid);
>> +		}
>> +	}
>> +}
>> +
>>  static int
>> -open_render_node(uint32_t *devid)
>> +open_render_node(uint32_t *devid, int card)
>>  {
>>  	char *name;
>>  	int ret;
>>  	int fd;
>> +	int render;
>>
>> -	int render = find_intel_render_node();
>> -	if (render < 0)
>> -		return -1;
>> +	if (card < 0) {
>> +		render = find_intel_render_node();
>> +		if (render < 0)
>> +			return -1;
>> +	} else {
>> +		render = 128 + card;
>> +	}
>>
>>  	ret = asprintf(&name, "/dev/dri/renderD%u", render);
>>  	assert(ret != -1);
>> @@ -722,6 +743,9 @@ usage(const char *name)
>>  		"Recording tool for i915-perf.\n"
>>  		"\n"
>>  		"     --help,               -h          Print this screen\n"
>> +		"     --device,             -d <value>  Device to use\n"
>> +		"                                       (value=list to list devices\n"
>> +		"                                        value=1 to use /dev/dri/card1)\n"
>>  		"     --correlation-period, -c <value>  Time period of timestamp correlation in seconds\n"
>>  		"                                       (default = 1.0)\n"
>>  		"     --perf-period,        -p <value>  Time period of i915-perf reports in seconds\n"
>> @@ -772,6 +796,7 @@ main(int argc, char *argv[])
>>  {
>>  	const struct option long_options[] = {
>>  		{"help",                       no_argument, 0, 'h'},
>> +		{"device",               required_argument, 0, 'd'},
>>  		{"correlation-period",   required_argument, 0, 'c'},
>>  		{"perf-period",          required_argument, 0, 'p'},
>>  		{"metric",               required_argument, 0, 'm'},
>> @@ -798,7 +823,7 @@ main(int argc, char *argv[])
>>  	struct timespec now;
>>  	uint64_t corr_period_ns, poll_time_ns;
>>  	uint32_t circular_size = 0;
>> -	int opt;
>> +	int opt, dev_node_id = -1;
>>  	bool list_counters = false;
>>  	FILE *output = NULL;
>>  	struct recording_context ctx = {
>> @@ -812,7 +837,7 @@ main(int argc, char *argv[])
>>  		.poll_period = 5 * 1000 * 1000,
>>  	};
>>
>> -	while ((opt = getopt_long(argc, argv, "hc:p:m:Co:s:f:k:P:", long_options, NULL)) != -1) {
>> +	while ((opt = getopt_long(argc, argv, "hc:d:p:m:Co:s:f:k:P:", long_options, NULL)) != -1) {
>>  		switch (opt) {
>>  		case 'h':
>>  			usage(argv[0]);
>> @@ -820,6 +845,12 @@ main(int argc, char *argv[])
>>  		case 'c':
>>  			corr_period = atof(optarg);
>>  			break;
>> +		case 'd':
>> +			if (!strcmp(optarg, "list"))
>> +				dev_node_id = -2;
>> +			else
>> +				dev_node_id = atoi(optarg);
>> +			break;
>>  		case 'p':
>>  			perf_period = atof(optarg);
>>  			break;
>> @@ -865,7 +896,12 @@ main(int argc, char *argv[])
>>  		}
>>  	}
>>
>> -	ctx.drm_fd = open_render_node(&ctx.devid);
>> +	if (dev_node_id == -2) {
>> +		print_intel_devices();
>> +		return EXIT_SUCCESS;
>> +	}
>> +
>> +	ctx.drm_fd = open_render_node(&ctx.devid, dev_node_id);
>>  	if (ctx.drm_fd < 0) {
>>  		fprintf(stderr, "Unable to open device.\n");
>>  		return EXIT_FAILURE;
>> --
>> 2.25.1
>>

  reply	other threads:[~2022-10-18 22:52 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-10 21:41 [igt-dev] [PATCH i-g-t v6 00/36] Add DG2 OA test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 01/36] i915/perf: Check regularly if we are done reading reports Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 02/36] i915/perf: Fix OA short_reads test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 03/36] i915/perf: Check return value from getparam Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 04/36] i915/perf: Limit sseu-config tests for gen11 Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 05/36] i915/perf: Account for OA sampling interval in polling test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 06/36] i915/perf: Define OA report types and fix oa-formats test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 07/36] i915/perf: Use ARRAY_SIZE consistently for num_properties Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 08/36] i915/perf: Use gt in perf tests and lib Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 09/36] i915/perf: Explicitly state rendercopy needs for a test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 10/36] i915/perf: Skip tests that use rendercopy Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 11/36] i915/perf: Add OA formats for DG2 Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 12/36] i915/perf: Fix CS timestamp vs OA timstamp mismatch Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 13/36] i915/perf: Wait longer for rc6 residency in DG2 Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 14/36] lib/i915/perf: implement report accumulation for new format Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 15/36] lib/i915/perf: fixup conversion script for XEHPSDV Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 16/36] lib/i915/perf: make warning message more helpful Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 17/36] lib/i915/perf: expose new operators for codegen Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 18/36] tools/i915-perf-recorder: add ability to select device Umesh Nerlige Ramappa
2022-10-10 22:06   ` Umesh Nerlige Ramappa
2022-10-11  6:22   ` Petri Latvala
2022-10-18 22:52     ` Umesh Nerlige Ramappa [this message]
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 19/36] lib/i915/perf: fixup report validity Umesh Nerlige Ramappa
2022-10-10 22:08   ` Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 20/36] lib/i915/perf: add a helper to read timestamps Umesh Nerlige Ramappa
2022-10-10 22:22   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 21/36] lib/i915/perf: store bit shifting required for OA timestamps Umesh Nerlige Ramappa
2022-10-10 22:52   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 22/36] lib/i915/perf: indentation fix Umesh Nerlige Ramappa
2022-10-10 22:52   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 23/36] tools/i915-perf-recorder: capture OA & CS frequencies Umesh Nerlige Ramappa
2022-10-10 22:54   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 24/36] tools/i915-perf: make timestamp range easier to compare Umesh Nerlige Ramappa
2022-10-10 22:54   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 25/36] tools/i915-perf: printout CPU clock used Umesh Nerlige Ramappa
2022-10-10 22:55   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 26/36] tools/i915-perf: record remaining perf data on exit Umesh Nerlige Ramappa
2022-10-10 22:55   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 27/36] lib/i915/perf: add support for new EuDualSubslicesTotalCount var Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 28/36] lib/i915/perf-config: extend the device info Umesh Nerlige Ramappa
2022-10-10 22:57   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 29/36] i915/perf: update import script Umesh Nerlige Ramappa
2022-10-10 23:00   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 30/36] lib/i915/perf: add a raw timestamp utility Umesh Nerlige Ramappa
2022-10-10 23:00   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 31/36] lib/i915/perf: add helper function to get report reason Umesh Nerlige Ramappa
2022-10-10 23:02   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 32/36] tools/i915-perf: add option to printout reports data Umesh Nerlige Ramappa
2022-10-10 23:03   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 33/36] lib/i915: prepare codegen for new ACM/DG2 variables Umesh Nerlige Ramappa
2022-10-10 23:04   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 34/36] lib/i915/perf: Add ACM GT1 metrics Umesh Nerlige Ramappa
2022-10-18 22:49   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 35/36] lib/i915/perf: Add ACM GT2 metrics Umesh Nerlige Ramappa
2022-10-18 22:49   ` Umesh Nerlige Ramappa
2022-10-10 22:01 ` [igt-dev] [PATCH i-g-t v6 00/36] Add DG2 OA test Umesh Nerlige Ramappa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y08uQLIdVADAQ7i3@unerlige-ril \
    --to=umesh.nerlige.ramappa@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=petri.latvala@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox