* [igt-dev] [PATCH i-g-t 0/3] More intel_gpu_top improvements
@ 2023-02-03 11:16 Tvrtko Ursulin
2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 1/3] intel_gpu_top: Do not repeat header lines in non-interactive output Tvrtko Ursulin
` (4 more replies)
0 siblings, 5 replies; 15+ messages in thread
From: Tvrtko Ursulin @ 2023-02-03 11:16 UTC (permalink / raw)
To: igt-dev, Intel-gfx; +Cc: Tvrtko Ursulin
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Suggestion was received to omit repeating header lines when outputting to a file
and also to add the CVS mode for easy parsing. We have JSON but I guess CVS can
definitely be easier for some use cases.
Tvrtko Ursulin (3):
intel_gpu_top: Do not repeat header lines in non-interactive output
intel_gpu_top: Rename STDOUT to TEXT
intel_gpu_top: Add CVS output format
man/intel_gpu_top.rst | 3 +
tools/intel_gpu_top.c | 137 +++++++++++++++++++++++++++++++++---------
2 files changed, 111 insertions(+), 29 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 15+ messages in thread* [igt-dev] [PATCH i-g-t 1/3] intel_gpu_top: Do not repeat header lines in non-interactive output 2023-02-03 11:16 [igt-dev] [PATCH i-g-t 0/3] More intel_gpu_top improvements Tvrtko Ursulin @ 2023-02-03 11:16 ` Tvrtko Ursulin 2023-02-07 13:25 ` [igt-dev] [Intel-gfx] " Kamil Konieczny 2023-02-08 12:31 ` Kamil Konieczny 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 2/3] intel_gpu_top: Rename STDOUT to TEXT Tvrtko Ursulin ` (3 subsequent siblings) 4 siblings, 2 replies; 15+ messages in thread From: Tvrtko Ursulin @ 2023-02-03 11:16 UTC (permalink / raw) To: igt-dev, Intel-gfx; +Cc: Caleb Callaway, Tvrtko Ursulin From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> If output is redirected to a file, or a pipe, lets not repeat the headers because that can usually mean user is trying to parse the data later and so repeated headers are a hindrance. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Caleb Callaway <caleb.callaway@intel.com> --- tools/intel_gpu_top.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c index 0a1de41b3374..e2a7f4753099 100644 --- a/tools/intel_gpu_top.c +++ b/tools/intel_gpu_top.c @@ -1391,6 +1391,7 @@ static unsigned int stdout_level; #define STDOUT_HEADER_REPEAT 20 static unsigned int stdout_lines = STDOUT_HEADER_REPEAT; +static bool stdout_header_repeat; static void stdout_open_struct(const char *name) @@ -1580,16 +1581,22 @@ static const struct print_operations term_pops = { static bool print_groups(struct cnt_group **groups) { - unsigned int headers = stdout_lines % STDOUT_HEADER_REPEAT + 1; + static bool headers_printed = false; bool print_data = true; - if (output_mode == STDOUT && (headers == 1 || headers == 2)) { - for (struct cnt_group **grp = groups; *grp; grp++) - print_data = pops->print_group(*grp, headers); + if (output_mode == STDOUT && + (stdout_header_repeat || !headers_printed)) { + unsigned int headers = stdout_lines % STDOUT_HEADER_REPEAT + 1; + + if (headers == 1 || headers == 2) + for (struct cnt_group **grp = groups; *grp; grp++) + print_data = pops->print_group(*grp, headers); + + headers_printed = print_data; } for (struct cnt_group **grp = groups; print_data && *grp; grp++) - pops->print_group(*grp, false); + pops->print_group(*grp, 0); return print_data; } @@ -2512,6 +2519,8 @@ int main(int argc, char **argv) out = stdout; } + stdout_header_repeat = output_mode == STDOUT && isatty(fileno(out)); + if (signal(SIGINT, sigint_handler) == SIG_ERR) fprintf(stderr, "Failed to install signal handler!\n"); -- 2.34.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [igt-dev] [Intel-gfx] [PATCH i-g-t 1/3] intel_gpu_top: Do not repeat header lines in non-interactive output 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 1/3] intel_gpu_top: Do not repeat header lines in non-interactive output Tvrtko Ursulin @ 2023-02-07 13:25 ` Kamil Konieczny 2023-02-08 12:31 ` Kamil Konieczny 1 sibling, 0 replies; 15+ messages in thread From: Kamil Konieczny @ 2023-02-07 13:25 UTC (permalink / raw) To: igt-dev; +Cc: Intel-gfx, Caleb Callaway On 2023-02-03 at 11:16:34 +0000, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > > If output is redirected to a file, or a pipe, lets not repeat the headers > because that can usually mean user is trying to parse the data later and > so repeated headers are a hindrance. > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Cc: Caleb Callaway <caleb.callaway@intel.com> Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com> > --- > tools/intel_gpu_top.c | 19 ++++++++++++++----- > 1 file changed, 14 insertions(+), 5 deletions(-) > > diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c > index 0a1de41b3374..e2a7f4753099 100644 > --- a/tools/intel_gpu_top.c > +++ b/tools/intel_gpu_top.c > @@ -1391,6 +1391,7 @@ static unsigned int stdout_level; > > #define STDOUT_HEADER_REPEAT 20 > static unsigned int stdout_lines = STDOUT_HEADER_REPEAT; > +static bool stdout_header_repeat; > > static void > stdout_open_struct(const char *name) > @@ -1580,16 +1581,22 @@ static const struct print_operations term_pops = { > > static bool print_groups(struct cnt_group **groups) > { > - unsigned int headers = stdout_lines % STDOUT_HEADER_REPEAT + 1; > + static bool headers_printed = false; > bool print_data = true; > > - if (output_mode == STDOUT && (headers == 1 || headers == 2)) { > - for (struct cnt_group **grp = groups; *grp; grp++) > - print_data = pops->print_group(*grp, headers); > + if (output_mode == STDOUT && > + (stdout_header_repeat || !headers_printed)) { > + unsigned int headers = stdout_lines % STDOUT_HEADER_REPEAT + 1; > + > + if (headers == 1 || headers == 2) > + for (struct cnt_group **grp = groups; *grp; grp++) > + print_data = pops->print_group(*grp, headers); > + > + headers_printed = print_data; > } > > for (struct cnt_group **grp = groups; print_data && *grp; grp++) > - pops->print_group(*grp, false); > + pops->print_group(*grp, 0); > > return print_data; > } > @@ -2512,6 +2519,8 @@ int main(int argc, char **argv) > out = stdout; > } > > + stdout_header_repeat = output_mode == STDOUT && isatty(fileno(out)); > + > if (signal(SIGINT, sigint_handler) == SIG_ERR) > fprintf(stderr, "Failed to install signal handler!\n"); > > -- > 2.34.1 > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [igt-dev] [Intel-gfx] [PATCH i-g-t 1/3] intel_gpu_top: Do not repeat header lines in non-interactive output 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 1/3] intel_gpu_top: Do not repeat header lines in non-interactive output Tvrtko Ursulin 2023-02-07 13:25 ` [igt-dev] [Intel-gfx] " Kamil Konieczny @ 2023-02-08 12:31 ` Kamil Konieczny 2023-02-09 8:24 ` Tvrtko Ursulin 1 sibling, 1 reply; 15+ messages in thread From: Kamil Konieczny @ 2023-02-08 12:31 UTC (permalink / raw) To: igt-dev; +Cc: Intel-gfx, Caleb Callaway Hi Tvrtko, one small nit, see below. On 2023-02-03 at 11:16:34 +0000, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > > If output is redirected to a file, or a pipe, lets not repeat the headers > because that can usually mean user is trying to parse the data later and > so repeated headers are a hindrance. > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Cc: Caleb Callaway <caleb.callaway@intel.com> > --- > tools/intel_gpu_top.c | 19 ++++++++++++++----- > 1 file changed, 14 insertions(+), 5 deletions(-) > > diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c > index 0a1de41b3374..e2a7f4753099 100644 > --- a/tools/intel_gpu_top.c > +++ b/tools/intel_gpu_top.c > @@ -1391,6 +1391,7 @@ static unsigned int stdout_level; > > #define STDOUT_HEADER_REPEAT 20 > static unsigned int stdout_lines = STDOUT_HEADER_REPEAT; > +static bool stdout_header_repeat; > > static void > stdout_open_struct(const char *name) > @@ -1580,16 +1581,22 @@ static const struct print_operations term_pops = { > > static bool print_groups(struct cnt_group **groups) > { > - unsigned int headers = stdout_lines % STDOUT_HEADER_REPEAT + 1; > + static bool headers_printed = false; ----------------------------------- ^ Remove this initialization (use checkpatch from Linux kernel). Please correct and resend (you can keep my r-b). Regards, Kamil > bool print_data = true; > > - if (output_mode == STDOUT && (headers == 1 || headers == 2)) { > - for (struct cnt_group **grp = groups; *grp; grp++) > - print_data = pops->print_group(*grp, headers); > + if (output_mode == STDOUT && > + (stdout_header_repeat || !headers_printed)) { > + unsigned int headers = stdout_lines % STDOUT_HEADER_REPEAT + 1; > + > + if (headers == 1 || headers == 2) > + for (struct cnt_group **grp = groups; *grp; grp++) > + print_data = pops->print_group(*grp, headers); > + > + headers_printed = print_data; > } > > for (struct cnt_group **grp = groups; print_data && *grp; grp++) > - pops->print_group(*grp, false); > + pops->print_group(*grp, 0); > > return print_data; > } > @@ -2512,6 +2519,8 @@ int main(int argc, char **argv) > out = stdout; > } > > + stdout_header_repeat = output_mode == STDOUT && isatty(fileno(out)); > + > if (signal(SIGINT, sigint_handler) == SIG_ERR) > fprintf(stderr, "Failed to install signal handler!\n"); > > -- > 2.34.1 > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [igt-dev] [Intel-gfx] [PATCH i-g-t 1/3] intel_gpu_top: Do not repeat header lines in non-interactive output 2023-02-08 12:31 ` Kamil Konieczny @ 2023-02-09 8:24 ` Tvrtko Ursulin 0 siblings, 0 replies; 15+ messages in thread From: Tvrtko Ursulin @ 2023-02-09 8:24 UTC (permalink / raw) To: Kamil Konieczny, igt-dev, Intel-gfx, Caleb Callaway On 08/02/2023 12:31, Kamil Konieczny wrote: > Hi Tvrtko, > > one small nit, see below. > > On 2023-02-03 at 11:16:34 +0000, Tvrtko Ursulin wrote: >> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> >> >> If output is redirected to a file, or a pipe, lets not repeat the headers >> because that can usually mean user is trying to parse the data later and >> so repeated headers are a hindrance. >> >> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> >> Cc: Caleb Callaway <caleb.callaway@intel.com> >> --- >> tools/intel_gpu_top.c | 19 ++++++++++++++----- >> 1 file changed, 14 insertions(+), 5 deletions(-) >> >> diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c >> index 0a1de41b3374..e2a7f4753099 100644 >> --- a/tools/intel_gpu_top.c >> +++ b/tools/intel_gpu_top.c >> @@ -1391,6 +1391,7 @@ static unsigned int stdout_level; >> >> #define STDOUT_HEADER_REPEAT 20 >> static unsigned int stdout_lines = STDOUT_HEADER_REPEAT; >> +static bool stdout_header_repeat; >> >> static void >> stdout_open_struct(const char *name) >> @@ -1580,16 +1581,22 @@ static const struct print_operations term_pops = { >> >> static bool print_groups(struct cnt_group **groups) >> { >> - unsigned int headers = stdout_lines % STDOUT_HEADER_REPEAT + 1; >> + static bool headers_printed = false; > ----------------------------------- ^ > Remove this initialization (use checkpatch from Linux kernel). > > Please correct and resend (you can keep my r-b). Fixed and pushed, thanks for the review! Regards, Tvrtko ^ permalink raw reply [flat|nested] 15+ messages in thread
* [igt-dev] [PATCH i-g-t 2/3] intel_gpu_top: Rename STDOUT to TEXT 2023-02-03 11:16 [igt-dev] [PATCH i-g-t 0/3] More intel_gpu_top improvements Tvrtko Ursulin 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 1/3] intel_gpu_top: Do not repeat header lines in non-interactive output Tvrtko Ursulin @ 2023-02-03 11:16 ` Tvrtko Ursulin 2023-02-07 13:15 ` Kamil Konieczny 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CVS output format Tvrtko Ursulin ` (2 subsequent siblings) 4 siblings, 1 reply; 15+ messages in thread From: Tvrtko Ursulin @ 2023-02-03 11:16 UTC (permalink / raw) To: igt-dev, Intel-gfx; +Cc: Caleb Callaway, Tvrtko Ursulin From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Internal cleanup only - the name text is more accurate given the output can also go to a file. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Caleb Callaway <caleb.callaway@intel.com> --- tools/intel_gpu_top.c | 54 +++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c index e2a7f4753099..a980cc7043dc 100644 --- a/tools/intel_gpu_top.c +++ b/tools/intel_gpu_top.c @@ -1282,7 +1282,7 @@ usage(const char *appname) static enum { INTERACTIVE, - STDOUT, + TEXT, JSON } output_mode; @@ -1387,33 +1387,31 @@ json_add_member(const struct cnt_group *parent, struct cnt_item *item, return 1; } -static unsigned int stdout_level; +static unsigned int text_level; -#define STDOUT_HEADER_REPEAT 20 -static unsigned int stdout_lines = STDOUT_HEADER_REPEAT; -static bool stdout_header_repeat; +#define TEXT_HEADER_REPEAT 20 +static unsigned int text_lines = TEXT_HEADER_REPEAT; +static bool text_header_repeat; -static void -stdout_open_struct(const char *name) +static void text_open_struct(const char *name) { - stdout_level++; - assert(stdout_level > 0); + text_level++; + assert(text_level > 0); } -static void -stdout_close_struct(void) +static void text_close_struct(void) { - assert(stdout_level > 0); - if (--stdout_level == 0) { - stdout_lines++; + assert(text_level > 0); + if (--text_level == 0) { + text_lines++; fputs("\n", out); fflush(out); } } static unsigned int -stdout_add_member(const struct cnt_group *parent, struct cnt_item *item, - unsigned int headers) +text_add_member(const struct cnt_group *parent, struct cnt_item *item, + unsigned int headers) { unsigned int fmt_tot = item->fmt_width + (item->fmt_precision ? 1 : 0); char buf[fmt_tot + 1]; @@ -1565,10 +1563,10 @@ static const struct print_operations json_pops = { .print_group = print_group, }; -static const struct print_operations stdout_pops = { - .open_struct = stdout_open_struct, - .close_struct = stdout_close_struct, - .add_member = stdout_add_member, +static const struct print_operations text_pops = { + .open_struct = text_open_struct, + .close_struct = text_close_struct, + .add_member = text_add_member, .print_group = print_group, }; @@ -1584,9 +1582,9 @@ static bool print_groups(struct cnt_group **groups) static bool headers_printed = false; bool print_data = true; - if (output_mode == STDOUT && - (stdout_header_repeat || !headers_printed)) { - unsigned int headers = stdout_lines % STDOUT_HEADER_REPEAT + 1; + if (output_mode == TEXT && + (text_header_repeat || !headers_printed)) { + unsigned int headers = text_lines % TEXT_HEADER_REPEAT + 1; if (headers == 1 || headers == 2) for (struct cnt_group **grp = groups; *grp; grp++) @@ -2492,7 +2490,7 @@ int main(int argc, char **argv) list_device = true; break; case 'l': - output_mode = STDOUT; + output_mode = TEXT; break; case 'h': usage(argv[0]); @@ -2505,7 +2503,7 @@ int main(int argc, char **argv) } if (output_mode == INTERACTIVE && (output_path || isatty(1) != 1)) - output_mode = STDOUT; + output_mode = TEXT; if (output_path && strcmp(output_path, "-")) { out = fopen(output_path, "w"); @@ -2519,7 +2517,7 @@ int main(int argc, char **argv) out = stdout; } - stdout_header_repeat = output_mode == STDOUT && isatty(fileno(out)); + text_header_repeat = output_mode == TEXT && isatty(fileno(out)); if (signal(SIGINT, sigint_handler) == SIG_ERR) fprintf(stderr, "Failed to install signal handler!\n"); @@ -2531,8 +2529,8 @@ int main(int argc, char **argv) pops = &term_pops; interactive_stdin(); break; - case STDOUT: - pops = &stdout_pops; + case TEXT: + pops = &text_pops; break; case JSON: pops = &json_pops; -- 2.34.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 2/3] intel_gpu_top: Rename STDOUT to TEXT 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 2/3] intel_gpu_top: Rename STDOUT to TEXT Tvrtko Ursulin @ 2023-02-07 13:15 ` Kamil Konieczny 0 siblings, 0 replies; 15+ messages in thread From: Kamil Konieczny @ 2023-02-07 13:15 UTC (permalink / raw) To: igt-dev; +Cc: Intel-gfx, Caleb Callaway, Tvrtko Ursulin On 2023-02-03 at 11:16:35 +0000, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > > Internal cleanup only - the name text is more accurate given the output > can also go to a file. > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Cc: Caleb Callaway <caleb.callaway@intel.com> Lgtm, Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com> > --- > tools/intel_gpu_top.c | 54 +++++++++++++++++++++---------------------- > 1 file changed, 26 insertions(+), 28 deletions(-) > > diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c > index e2a7f4753099..a980cc7043dc 100644 > --- a/tools/intel_gpu_top.c > +++ b/tools/intel_gpu_top.c > @@ -1282,7 +1282,7 @@ usage(const char *appname) > > static enum { > INTERACTIVE, > - STDOUT, > + TEXT, > JSON > } output_mode; > > @@ -1387,33 +1387,31 @@ json_add_member(const struct cnt_group *parent, struct cnt_item *item, > return 1; > } > > -static unsigned int stdout_level; > +static unsigned int text_level; > > -#define STDOUT_HEADER_REPEAT 20 > -static unsigned int stdout_lines = STDOUT_HEADER_REPEAT; > -static bool stdout_header_repeat; > +#define TEXT_HEADER_REPEAT 20 > +static unsigned int text_lines = TEXT_HEADER_REPEAT; > +static bool text_header_repeat; > > -static void > -stdout_open_struct(const char *name) > +static void text_open_struct(const char *name) > { > - stdout_level++; > - assert(stdout_level > 0); > + text_level++; > + assert(text_level > 0); > } > > -static void > -stdout_close_struct(void) > +static void text_close_struct(void) > { > - assert(stdout_level > 0); > - if (--stdout_level == 0) { > - stdout_lines++; > + assert(text_level > 0); > + if (--text_level == 0) { > + text_lines++; > fputs("\n", out); > fflush(out); > } > } > > static unsigned int > -stdout_add_member(const struct cnt_group *parent, struct cnt_item *item, > - unsigned int headers) > +text_add_member(const struct cnt_group *parent, struct cnt_item *item, > + unsigned int headers) > { > unsigned int fmt_tot = item->fmt_width + (item->fmt_precision ? 1 : 0); > char buf[fmt_tot + 1]; > @@ -1565,10 +1563,10 @@ static const struct print_operations json_pops = { > .print_group = print_group, > }; > > -static const struct print_operations stdout_pops = { > - .open_struct = stdout_open_struct, > - .close_struct = stdout_close_struct, > - .add_member = stdout_add_member, > +static const struct print_operations text_pops = { > + .open_struct = text_open_struct, > + .close_struct = text_close_struct, > + .add_member = text_add_member, > .print_group = print_group, > }; > > @@ -1584,9 +1582,9 @@ static bool print_groups(struct cnt_group **groups) > static bool headers_printed = false; > bool print_data = true; > > - if (output_mode == STDOUT && > - (stdout_header_repeat || !headers_printed)) { > - unsigned int headers = stdout_lines % STDOUT_HEADER_REPEAT + 1; > + if (output_mode == TEXT && > + (text_header_repeat || !headers_printed)) { > + unsigned int headers = text_lines % TEXT_HEADER_REPEAT + 1; > > if (headers == 1 || headers == 2) > for (struct cnt_group **grp = groups; *grp; grp++) > @@ -2492,7 +2490,7 @@ int main(int argc, char **argv) > list_device = true; > break; > case 'l': > - output_mode = STDOUT; > + output_mode = TEXT; > break; > case 'h': > usage(argv[0]); > @@ -2505,7 +2503,7 @@ int main(int argc, char **argv) > } > > if (output_mode == INTERACTIVE && (output_path || isatty(1) != 1)) > - output_mode = STDOUT; > + output_mode = TEXT; > > if (output_path && strcmp(output_path, "-")) { > out = fopen(output_path, "w"); > @@ -2519,7 +2517,7 @@ int main(int argc, char **argv) > out = stdout; > } > > - stdout_header_repeat = output_mode == STDOUT && isatty(fileno(out)); > + text_header_repeat = output_mode == TEXT && isatty(fileno(out)); > > if (signal(SIGINT, sigint_handler) == SIG_ERR) > fprintf(stderr, "Failed to install signal handler!\n"); > @@ -2531,8 +2529,8 @@ int main(int argc, char **argv) > pops = &term_pops; > interactive_stdin(); > break; > - case STDOUT: > - pops = &stdout_pops; > + case TEXT: > + pops = &text_pops; > break; > case JSON: > pops = &json_pops; > -- > 2.34.1 > ^ permalink raw reply [flat|nested] 15+ messages in thread
* [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CVS output format 2023-02-03 11:16 [igt-dev] [PATCH i-g-t 0/3] More intel_gpu_top improvements Tvrtko Ursulin 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 1/3] intel_gpu_top: Do not repeat header lines in non-interactive output Tvrtko Ursulin 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 2/3] intel_gpu_top: Rename STDOUT to TEXT Tvrtko Ursulin @ 2023-02-03 11:16 ` Tvrtko Ursulin 2023-02-03 11:22 ` Ville Syrjälä ` (2 more replies) 2023-02-03 14:49 ` [igt-dev] ✓ Fi.CI.BAT: success for More intel_gpu_top improvements (rev3) Patchwork 2023-02-04 17:27 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 4 siblings, 3 replies; 15+ messages in thread From: Tvrtko Ursulin @ 2023-02-03 11:16 UTC (permalink / raw) To: igt-dev, Intel-gfx; +Cc: Caleb Callaway, Tvrtko Ursulin From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Add CVS output mode. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Caleb Callaway <caleb.callaway@intel.com> --- man/intel_gpu_top.rst | 3 ++ tools/intel_gpu_top.c | 78 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 78 insertions(+), 3 deletions(-) diff --git a/man/intel_gpu_top.rst b/man/intel_gpu_top.rst index 69834756b81e..77228277b9bf 100644 --- a/man/intel_gpu_top.rst +++ b/man/intel_gpu_top.rst @@ -31,6 +31,9 @@ OPTIONS -h Show help text. +-c + Output CVS formatted data. + -J Output JSON formatted data. diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c index a980cc7043dc..4c425ca027e3 100644 --- a/tools/intel_gpu_top.c +++ b/tools/intel_gpu_top.c @@ -1268,6 +1268,7 @@ usage(const char *appname) "\n" "\tThe following parameters are optional:\n\n" "\t[-h] Show this help text.\n" + "\t[-c] Output CVS formatted data.\n" "\t[-J] Output JSON formatted data.\n" "\t[-l] List plain text data.\n" "\t[-o <file|->] Output to specified file or '-' for standard out.\n" @@ -1283,6 +1284,7 @@ usage(const char *appname) static enum { INTERACTIVE, TEXT, + CVS, JSON } output_mode; @@ -1457,6 +1459,22 @@ text_add_member(const struct cnt_group *parent, struct cnt_item *item, return len > 0 ? len : 0; } +static unsigned int +cvs_add_member(const struct cnt_group *parent, struct cnt_item *item, + unsigned int headers) +{ + int len = 0; + + if (headers) + fprintf(out, "%s %s", parent->display_name, item->unit); + else + len = fprintf(out, "%f", + pmu_calc(&item->pmu->val, item->d, item->t, + item->s)); + + return len > 0 ? len : 0; +} + static void term_open_struct(const char *name) { @@ -1540,6 +1558,46 @@ print_group(struct cnt_group *grp, unsigned int headers) return consumed; } +static unsigned int cvs_count, prev_cvs_count; + +static void cvs_close_struct(void) +{ + assert(text_level > 0); + if (--text_level == 0) { + cvs_count = prev_cvs_count = 0; + text_lines++; + fputs("\n", out); + fflush(out); + } +} + +static bool +cvs_print_group(struct cnt_group *grp, unsigned int headers) +{ + unsigned int consumed = 0; + struct cnt_item *item; + + if (!present_in_group(grp)) + return false; + + text_open_struct(grp->name); + + for (item = grp->items; item->name; item++) { + if (!item->pmu || !item->pmu->present) + continue; + + if (cvs_count != prev_cvs_count) + fprintf(out, ","); + prev_cvs_count = cvs_count++; + + consumed += cvs_add_member(grp, item, headers); + } + + cvs_close_struct(); + + return consumed; +} + static bool term_print_group(struct cnt_group *grp, unsigned int headers) { @@ -1570,6 +1628,13 @@ static const struct print_operations text_pops = { .print_group = print_group, }; +static const struct print_operations cvs_pops = { + .open_struct = text_open_struct, + .close_struct = cvs_close_struct, + .add_member = cvs_add_member, + .print_group = cvs_print_group, +}; + static const struct print_operations term_pops = { .open_struct = term_open_struct, .close_struct = term_close_struct, @@ -1582,11 +1647,12 @@ static bool print_groups(struct cnt_group **groups) static bool headers_printed = false; bool print_data = true; - if (output_mode == TEXT && + if ((output_mode == TEXT || output_mode == CVS) && (text_header_repeat || !headers_printed)) { + const unsigned int header_lines = output_mode == TEXT ? 2 : 1; unsigned int headers = text_lines % TEXT_HEADER_REPEAT + 1; - if (headers == 1 || headers == 2) + if (headers > 0 && headers <= header_lines) for (struct cnt_group **grp = groups; *grp; grp++) print_data = pops->print_group(*grp, headers); @@ -2469,7 +2535,7 @@ int main(int argc, char **argv) char *codename = NULL; /* Parse options */ - while ((ch = getopt(argc, argv, "o:s:d:pJLlh")) != -1) { + while ((ch = getopt(argc, argv, "o:s:d:pcJLlh")) != -1) { switch (ch) { case 'o': output_path = optarg; @@ -2483,6 +2549,9 @@ int main(int argc, char **argv) case 'p': physical_engines = true; break; + case 'c': + output_mode = CVS; + break; case 'J': output_mode = JSON; break; @@ -2532,6 +2601,9 @@ int main(int argc, char **argv) case TEXT: pops = &text_pops; break; + case CVS: + pops = &cvs_pops; + break; case JSON: pops = &json_pops; break; -- 2.34.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CVS output format 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CVS output format Tvrtko Ursulin @ 2023-02-03 11:22 ` Ville Syrjälä 2023-02-03 11:27 ` Tvrtko Ursulin 2023-02-03 11:30 ` [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CSV " Tvrtko Ursulin 2023-02-03 11:31 ` Tvrtko Ursulin 2 siblings, 1 reply; 15+ messages in thread From: Ville Syrjälä @ 2023-02-03 11:22 UTC (permalink / raw) To: Tvrtko Ursulin; +Cc: igt-dev, Intel-gfx, Caleb Callaway, Tvrtko Ursulin On Fri, Feb 03, 2023 at 11:16:36AM +0000, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > > Add CVS output mode. Should that be csv? > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Cc: Caleb Callaway <caleb.callaway@intel.com> > --- > man/intel_gpu_top.rst | 3 ++ > tools/intel_gpu_top.c | 78 +++++++++++++++++++++++++++++++++++++++++-- > 2 files changed, 78 insertions(+), 3 deletions(-) > > diff --git a/man/intel_gpu_top.rst b/man/intel_gpu_top.rst > index 69834756b81e..77228277b9bf 100644 > --- a/man/intel_gpu_top.rst > +++ b/man/intel_gpu_top.rst > @@ -31,6 +31,9 @@ OPTIONS > -h > Show help text. > > +-c > + Output CVS formatted data. > + > -J > Output JSON formatted data. > > diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c > index a980cc7043dc..4c425ca027e3 100644 > --- a/tools/intel_gpu_top.c > +++ b/tools/intel_gpu_top.c > @@ -1268,6 +1268,7 @@ usage(const char *appname) > "\n" > "\tThe following parameters are optional:\n\n" > "\t[-h] Show this help text.\n" > + "\t[-c] Output CVS formatted data.\n" > "\t[-J] Output JSON formatted data.\n" > "\t[-l] List plain text data.\n" > "\t[-o <file|->] Output to specified file or '-' for standard out.\n" > @@ -1283,6 +1284,7 @@ usage(const char *appname) > static enum { > INTERACTIVE, > TEXT, > + CVS, > JSON > } output_mode; > > @@ -1457,6 +1459,22 @@ text_add_member(const struct cnt_group *parent, struct cnt_item *item, > return len > 0 ? len : 0; > } > > +static unsigned int > +cvs_add_member(const struct cnt_group *parent, struct cnt_item *item, > + unsigned int headers) > +{ > + int len = 0; > + > + if (headers) > + fprintf(out, "%s %s", parent->display_name, item->unit); > + else > + len = fprintf(out, "%f", > + pmu_calc(&item->pmu->val, item->d, item->t, > + item->s)); > + > + return len > 0 ? len : 0; > +} > + > static void > term_open_struct(const char *name) > { > @@ -1540,6 +1558,46 @@ print_group(struct cnt_group *grp, unsigned int headers) > return consumed; > } > > +static unsigned int cvs_count, prev_cvs_count; > + > +static void cvs_close_struct(void) > +{ > + assert(text_level > 0); > + if (--text_level == 0) { > + cvs_count = prev_cvs_count = 0; > + text_lines++; > + fputs("\n", out); > + fflush(out); > + } > +} > + > +static bool > +cvs_print_group(struct cnt_group *grp, unsigned int headers) > +{ > + unsigned int consumed = 0; > + struct cnt_item *item; > + > + if (!present_in_group(grp)) > + return false; > + > + text_open_struct(grp->name); > + > + for (item = grp->items; item->name; item++) { > + if (!item->pmu || !item->pmu->present) > + continue; > + > + if (cvs_count != prev_cvs_count) > + fprintf(out, ","); > + prev_cvs_count = cvs_count++; > + > + consumed += cvs_add_member(grp, item, headers); > + } > + > + cvs_close_struct(); > + > + return consumed; > +} > + > static bool > term_print_group(struct cnt_group *grp, unsigned int headers) > { > @@ -1570,6 +1628,13 @@ static const struct print_operations text_pops = { > .print_group = print_group, > }; > > +static const struct print_operations cvs_pops = { > + .open_struct = text_open_struct, > + .close_struct = cvs_close_struct, > + .add_member = cvs_add_member, > + .print_group = cvs_print_group, > +}; > + > static const struct print_operations term_pops = { > .open_struct = term_open_struct, > .close_struct = term_close_struct, > @@ -1582,11 +1647,12 @@ static bool print_groups(struct cnt_group **groups) > static bool headers_printed = false; > bool print_data = true; > > - if (output_mode == TEXT && > + if ((output_mode == TEXT || output_mode == CVS) && > (text_header_repeat || !headers_printed)) { > + const unsigned int header_lines = output_mode == TEXT ? 2 : 1; > unsigned int headers = text_lines % TEXT_HEADER_REPEAT + 1; > > - if (headers == 1 || headers == 2) > + if (headers > 0 && headers <= header_lines) > for (struct cnt_group **grp = groups; *grp; grp++) > print_data = pops->print_group(*grp, headers); > > @@ -2469,7 +2535,7 @@ int main(int argc, char **argv) > char *codename = NULL; > > /* Parse options */ > - while ((ch = getopt(argc, argv, "o:s:d:pJLlh")) != -1) { > + while ((ch = getopt(argc, argv, "o:s:d:pcJLlh")) != -1) { > switch (ch) { > case 'o': > output_path = optarg; > @@ -2483,6 +2549,9 @@ int main(int argc, char **argv) > case 'p': > physical_engines = true; > break; > + case 'c': > + output_mode = CVS; > + break; > case 'J': > output_mode = JSON; > break; > @@ -2532,6 +2601,9 @@ int main(int argc, char **argv) > case TEXT: > pops = &text_pops; > break; > + case CVS: > + pops = &cvs_pops; > + break; > case JSON: > pops = &json_pops; > break; > -- > 2.34.1 -- Ville Syrjälä Intel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CVS output format 2023-02-03 11:22 ` Ville Syrjälä @ 2023-02-03 11:27 ` Tvrtko Ursulin 0 siblings, 0 replies; 15+ messages in thread From: Tvrtko Ursulin @ 2023-02-03 11:27 UTC (permalink / raw) To: Ville Syrjälä Cc: igt-dev, Intel-gfx, Caleb Callaway, Tvrtko Ursulin On 03/02/2023 11:22, Ville Syrjälä wrote: > On Fri, Feb 03, 2023 at 11:16:36AM +0000, Tvrtko Ursulin wrote: >> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> >> >> Add CVS output mode. > > Should that be csv? Lol at least I was consistent.. facepalm. Regards, Tvrtko >> >> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> >> Cc: Caleb Callaway <caleb.callaway@intel.com> >> --- >> man/intel_gpu_top.rst | 3 ++ >> tools/intel_gpu_top.c | 78 +++++++++++++++++++++++++++++++++++++++++-- >> 2 files changed, 78 insertions(+), 3 deletions(-) >> >> diff --git a/man/intel_gpu_top.rst b/man/intel_gpu_top.rst >> index 69834756b81e..77228277b9bf 100644 >> --- a/man/intel_gpu_top.rst >> +++ b/man/intel_gpu_top.rst >> @@ -31,6 +31,9 @@ OPTIONS >> -h >> Show help text. >> >> +-c >> + Output CVS formatted data. >> + >> -J >> Output JSON formatted data. >> >> diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c >> index a980cc7043dc..4c425ca027e3 100644 >> --- a/tools/intel_gpu_top.c >> +++ b/tools/intel_gpu_top.c >> @@ -1268,6 +1268,7 @@ usage(const char *appname) >> "\n" >> "\tThe following parameters are optional:\n\n" >> "\t[-h] Show this help text.\n" >> + "\t[-c] Output CVS formatted data.\n" >> "\t[-J] Output JSON formatted data.\n" >> "\t[-l] List plain text data.\n" >> "\t[-o <file|->] Output to specified file or '-' for standard out.\n" >> @@ -1283,6 +1284,7 @@ usage(const char *appname) >> static enum { >> INTERACTIVE, >> TEXT, >> + CVS, >> JSON >> } output_mode; >> >> @@ -1457,6 +1459,22 @@ text_add_member(const struct cnt_group *parent, struct cnt_item *item, >> return len > 0 ? len : 0; >> } >> >> +static unsigned int >> +cvs_add_member(const struct cnt_group *parent, struct cnt_item *item, >> + unsigned int headers) >> +{ >> + int len = 0; >> + >> + if (headers) >> + fprintf(out, "%s %s", parent->display_name, item->unit); >> + else >> + len = fprintf(out, "%f", >> + pmu_calc(&item->pmu->val, item->d, item->t, >> + item->s)); >> + >> + return len > 0 ? len : 0; >> +} >> + >> static void >> term_open_struct(const char *name) >> { >> @@ -1540,6 +1558,46 @@ print_group(struct cnt_group *grp, unsigned int headers) >> return consumed; >> } >> >> +static unsigned int cvs_count, prev_cvs_count; >> + >> +static void cvs_close_struct(void) >> +{ >> + assert(text_level > 0); >> + if (--text_level == 0) { >> + cvs_count = prev_cvs_count = 0; >> + text_lines++; >> + fputs("\n", out); >> + fflush(out); >> + } >> +} >> + >> +static bool >> +cvs_print_group(struct cnt_group *grp, unsigned int headers) >> +{ >> + unsigned int consumed = 0; >> + struct cnt_item *item; >> + >> + if (!present_in_group(grp)) >> + return false; >> + >> + text_open_struct(grp->name); >> + >> + for (item = grp->items; item->name; item++) { >> + if (!item->pmu || !item->pmu->present) >> + continue; >> + >> + if (cvs_count != prev_cvs_count) >> + fprintf(out, ","); >> + prev_cvs_count = cvs_count++; >> + >> + consumed += cvs_add_member(grp, item, headers); >> + } >> + >> + cvs_close_struct(); >> + >> + return consumed; >> +} >> + >> static bool >> term_print_group(struct cnt_group *grp, unsigned int headers) >> { >> @@ -1570,6 +1628,13 @@ static const struct print_operations text_pops = { >> .print_group = print_group, >> }; >> >> +static const struct print_operations cvs_pops = { >> + .open_struct = text_open_struct, >> + .close_struct = cvs_close_struct, >> + .add_member = cvs_add_member, >> + .print_group = cvs_print_group, >> +}; >> + >> static const struct print_operations term_pops = { >> .open_struct = term_open_struct, >> .close_struct = term_close_struct, >> @@ -1582,11 +1647,12 @@ static bool print_groups(struct cnt_group **groups) >> static bool headers_printed = false; >> bool print_data = true; >> >> - if (output_mode == TEXT && >> + if ((output_mode == TEXT || output_mode == CVS) && >> (text_header_repeat || !headers_printed)) { >> + const unsigned int header_lines = output_mode == TEXT ? 2 : 1; >> unsigned int headers = text_lines % TEXT_HEADER_REPEAT + 1; >> >> - if (headers == 1 || headers == 2) >> + if (headers > 0 && headers <= header_lines) >> for (struct cnt_group **grp = groups; *grp; grp++) >> print_data = pops->print_group(*grp, headers); >> >> @@ -2469,7 +2535,7 @@ int main(int argc, char **argv) >> char *codename = NULL; >> >> /* Parse options */ >> - while ((ch = getopt(argc, argv, "o:s:d:pJLlh")) != -1) { >> + while ((ch = getopt(argc, argv, "o:s:d:pcJLlh")) != -1) { >> switch (ch) { >> case 'o': >> output_path = optarg; >> @@ -2483,6 +2549,9 @@ int main(int argc, char **argv) >> case 'p': >> physical_engines = true; >> break; >> + case 'c': >> + output_mode = CVS; >> + break; >> case 'J': >> output_mode = JSON; >> break; >> @@ -2532,6 +2601,9 @@ int main(int argc, char **argv) >> case TEXT: >> pops = &text_pops; >> break; >> + case CVS: >> + pops = &cvs_pops; >> + break; >> case JSON: >> pops = &json_pops; >> break; >> -- >> 2.34.1 > ^ permalink raw reply [flat|nested] 15+ messages in thread
* [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CSV output format 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CVS output format Tvrtko Ursulin 2023-02-03 11:22 ` Ville Syrjälä @ 2023-02-03 11:30 ` Tvrtko Ursulin 2023-02-03 11:31 ` Tvrtko Ursulin 2 siblings, 0 replies; 15+ messages in thread From: Tvrtko Ursulin @ 2023-02-03 11:30 UTC (permalink / raw) To: igt-dev, Intel-gfx; +Cc: Caleb Callaway, Tvrtko Ursulin From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Add CSV output mode. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Caleb Callaway <caleb.callaway@intel.com> --- man/intel_gpu_top.rst | 3 ++ tools/intel_gpu_top.c | 78 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 78 insertions(+), 3 deletions(-) diff --git a/man/intel_gpu_top.rst b/man/intel_gpu_top.rst index 69834756b81e..77228277b9bf 100644 --- a/man/intel_gpu_top.rst +++ b/man/intel_gpu_top.rst @@ -31,6 +31,9 @@ OPTIONS -h Show help text. +-c + Output CVS formatted data. + -J Output JSON formatted data. diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c index a980cc7043dc..2e1365959d8b 100644 --- a/tools/intel_gpu_top.c +++ b/tools/intel_gpu_top.c @@ -1268,6 +1268,7 @@ usage(const char *appname) "\n" "\tThe following parameters are optional:\n\n" "\t[-h] Show this help text.\n" + "\t[-c] Output CSV formatted data.\n" "\t[-J] Output JSON formatted data.\n" "\t[-l] List plain text data.\n" "\t[-o <file|->] Output to specified file or '-' for standard out.\n" @@ -1283,6 +1284,7 @@ usage(const char *appname) static enum { INTERACTIVE, TEXT, + CSV, JSON } output_mode; @@ -1457,6 +1459,22 @@ text_add_member(const struct cnt_group *parent, struct cnt_item *item, return len > 0 ? len : 0; } +static unsigned int +csv_add_member(const struct cnt_group *parent, struct cnt_item *item, + unsigned int headers) +{ + int len = 0; + + if (headers) + fprintf(out, "%s %s", parent->display_name, item->unit); + else + len = fprintf(out, "%f", + pmu_calc(&item->pmu->val, item->d, item->t, + item->s)); + + return len > 0 ? len : 0; +} + static void term_open_struct(const char *name) { @@ -1540,6 +1558,46 @@ print_group(struct cnt_group *grp, unsigned int headers) return consumed; } +static unsigned int csv_count, prev_csv_count; + +static void csv_close_struct(void) +{ + assert(text_level > 0); + if (--text_level == 0) { + csv_count = prev_csv_count = 0; + text_lines++; + fputs("\n", out); + fflush(out); + } +} + +static bool +csv_print_group(struct cnt_group *grp, unsigned int headers) +{ + unsigned int consumed = 0; + struct cnt_item *item; + + if (!present_in_group(grp)) + return false; + + text_open_struct(grp->name); + + for (item = grp->items; item->name; item++) { + if (!item->pmu || !item->pmu->present) + continue; + + if (csv_count != prev_csv_count) + fprintf(out, ","); + prev_csv_count = csv_count++; + + consumed += csv_add_member(grp, item, headers); + } + + csv_close_struct(); + + return consumed; +} + static bool term_print_group(struct cnt_group *grp, unsigned int headers) { @@ -1570,6 +1628,13 @@ static const struct print_operations text_pops = { .print_group = print_group, }; +static const struct print_operations csv_pops = { + .open_struct = text_open_struct, + .close_struct = csv_close_struct, + .add_member = csv_add_member, + .print_group = csv_print_group, +}; + static const struct print_operations term_pops = { .open_struct = term_open_struct, .close_struct = term_close_struct, @@ -1582,11 +1647,12 @@ static bool print_groups(struct cnt_group **groups) static bool headers_printed = false; bool print_data = true; - if (output_mode == TEXT && + if ((output_mode == TEXT || output_mode == CSV) && (text_header_repeat || !headers_printed)) { + const unsigned int header_lines = output_mode == TEXT ? 2 : 1; unsigned int headers = text_lines % TEXT_HEADER_REPEAT + 1; - if (headers == 1 || headers == 2) + if (headers > 0 && headers <= header_lines) for (struct cnt_group **grp = groups; *grp; grp++) print_data = pops->print_group(*grp, headers); @@ -2469,7 +2535,7 @@ int main(int argc, char **argv) char *codename = NULL; /* Parse options */ - while ((ch = getopt(argc, argv, "o:s:d:pJLlh")) != -1) { + while ((ch = getopt(argc, argv, "o:s:d:pcJLlh")) != -1) { switch (ch) { case 'o': output_path = optarg; @@ -2483,6 +2549,9 @@ int main(int argc, char **argv) case 'p': physical_engines = true; break; + case 'c': + output_mode = CSV; + break; case 'J': output_mode = JSON; break; @@ -2532,6 +2601,9 @@ int main(int argc, char **argv) case TEXT: pops = &text_pops; break; + case CSV: + pops = &csv_pops; + break; case JSON: pops = &json_pops; break; -- 2.34.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CSV output format 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CVS output format Tvrtko Ursulin 2023-02-03 11:22 ` Ville Syrjälä 2023-02-03 11:30 ` [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CSV " Tvrtko Ursulin @ 2023-02-03 11:31 ` Tvrtko Ursulin 2023-02-07 13:29 ` [igt-dev] [Intel-gfx] " Kamil Konieczny 2 siblings, 1 reply; 15+ messages in thread From: Tvrtko Ursulin @ 2023-02-03 11:31 UTC (permalink / raw) To: igt-dev, Intel-gfx; +Cc: Caleb Callaway, Tvrtko Ursulin From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Add CSV output mode. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Caleb Callaway <caleb.callaway@intel.com> --- man/intel_gpu_top.rst | 3 ++ tools/intel_gpu_top.c | 78 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 78 insertions(+), 3 deletions(-) diff --git a/man/intel_gpu_top.rst b/man/intel_gpu_top.rst index 69834756b81e..2d041457a95e 100644 --- a/man/intel_gpu_top.rst +++ b/man/intel_gpu_top.rst @@ -31,6 +31,9 @@ OPTIONS -h Show help text. +-c + Output CSV formatted data. + -J Output JSON formatted data. diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c index a980cc7043dc..2e1365959d8b 100644 --- a/tools/intel_gpu_top.c +++ b/tools/intel_gpu_top.c @@ -1268,6 +1268,7 @@ usage(const char *appname) "\n" "\tThe following parameters are optional:\n\n" "\t[-h] Show this help text.\n" + "\t[-c] Output CSV formatted data.\n" "\t[-J] Output JSON formatted data.\n" "\t[-l] List plain text data.\n" "\t[-o <file|->] Output to specified file or '-' for standard out.\n" @@ -1283,6 +1284,7 @@ usage(const char *appname) static enum { INTERACTIVE, TEXT, + CSV, JSON } output_mode; @@ -1457,6 +1459,22 @@ text_add_member(const struct cnt_group *parent, struct cnt_item *item, return len > 0 ? len : 0; } +static unsigned int +csv_add_member(const struct cnt_group *parent, struct cnt_item *item, + unsigned int headers) +{ + int len = 0; + + if (headers) + fprintf(out, "%s %s", parent->display_name, item->unit); + else + len = fprintf(out, "%f", + pmu_calc(&item->pmu->val, item->d, item->t, + item->s)); + + return len > 0 ? len : 0; +} + static void term_open_struct(const char *name) { @@ -1540,6 +1558,46 @@ print_group(struct cnt_group *grp, unsigned int headers) return consumed; } +static unsigned int csv_count, prev_csv_count; + +static void csv_close_struct(void) +{ + assert(text_level > 0); + if (--text_level == 0) { + csv_count = prev_csv_count = 0; + text_lines++; + fputs("\n", out); + fflush(out); + } +} + +static bool +csv_print_group(struct cnt_group *grp, unsigned int headers) +{ + unsigned int consumed = 0; + struct cnt_item *item; + + if (!present_in_group(grp)) + return false; + + text_open_struct(grp->name); + + for (item = grp->items; item->name; item++) { + if (!item->pmu || !item->pmu->present) + continue; + + if (csv_count != prev_csv_count) + fprintf(out, ","); + prev_csv_count = csv_count++; + + consumed += csv_add_member(grp, item, headers); + } + + csv_close_struct(); + + return consumed; +} + static bool term_print_group(struct cnt_group *grp, unsigned int headers) { @@ -1570,6 +1628,13 @@ static const struct print_operations text_pops = { .print_group = print_group, }; +static const struct print_operations csv_pops = { + .open_struct = text_open_struct, + .close_struct = csv_close_struct, + .add_member = csv_add_member, + .print_group = csv_print_group, +}; + static const struct print_operations term_pops = { .open_struct = term_open_struct, .close_struct = term_close_struct, @@ -1582,11 +1647,12 @@ static bool print_groups(struct cnt_group **groups) static bool headers_printed = false; bool print_data = true; - if (output_mode == TEXT && + if ((output_mode == TEXT || output_mode == CSV) && (text_header_repeat || !headers_printed)) { + const unsigned int header_lines = output_mode == TEXT ? 2 : 1; unsigned int headers = text_lines % TEXT_HEADER_REPEAT + 1; - if (headers == 1 || headers == 2) + if (headers > 0 && headers <= header_lines) for (struct cnt_group **grp = groups; *grp; grp++) print_data = pops->print_group(*grp, headers); @@ -2469,7 +2535,7 @@ int main(int argc, char **argv) char *codename = NULL; /* Parse options */ - while ((ch = getopt(argc, argv, "o:s:d:pJLlh")) != -1) { + while ((ch = getopt(argc, argv, "o:s:d:pcJLlh")) != -1) { switch (ch) { case 'o': output_path = optarg; @@ -2483,6 +2549,9 @@ int main(int argc, char **argv) case 'p': physical_engines = true; break; + case 'c': + output_mode = CSV; + break; case 'J': output_mode = JSON; break; @@ -2532,6 +2601,9 @@ int main(int argc, char **argv) case TEXT: pops = &text_pops; break; + case CSV: + pops = &csv_pops; + break; case JSON: pops = &json_pops; break; -- 2.34.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [igt-dev] [Intel-gfx] [PATCH i-g-t 3/3] intel_gpu_top: Add CSV output format 2023-02-03 11:31 ` Tvrtko Ursulin @ 2023-02-07 13:29 ` Kamil Konieczny 0 siblings, 0 replies; 15+ messages in thread From: Kamil Konieczny @ 2023-02-07 13:29 UTC (permalink / raw) To: igt-dev; +Cc: Intel-gfx, Caleb Callaway On 2023-02-03 at 11:31:19 +0000, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > > Add CSV output mode. > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Cc: Caleb Callaway <caleb.callaway@intel.com> Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com> > --- > man/intel_gpu_top.rst | 3 ++ > tools/intel_gpu_top.c | 78 +++++++++++++++++++++++++++++++++++++++++-- > 2 files changed, 78 insertions(+), 3 deletions(-) > > diff --git a/man/intel_gpu_top.rst b/man/intel_gpu_top.rst > index 69834756b81e..2d041457a95e 100644 > --- a/man/intel_gpu_top.rst > +++ b/man/intel_gpu_top.rst > @@ -31,6 +31,9 @@ OPTIONS > -h > Show help text. > > +-c > + Output CSV formatted data. > + > -J > Output JSON formatted data. > > diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c > index a980cc7043dc..2e1365959d8b 100644 > --- a/tools/intel_gpu_top.c > +++ b/tools/intel_gpu_top.c > @@ -1268,6 +1268,7 @@ usage(const char *appname) > "\n" > "\tThe following parameters are optional:\n\n" > "\t[-h] Show this help text.\n" > + "\t[-c] Output CSV formatted data.\n" > "\t[-J] Output JSON formatted data.\n" > "\t[-l] List plain text data.\n" > "\t[-o <file|->] Output to specified file or '-' for standard out.\n" > @@ -1283,6 +1284,7 @@ usage(const char *appname) > static enum { > INTERACTIVE, > TEXT, > + CSV, > JSON > } output_mode; > > @@ -1457,6 +1459,22 @@ text_add_member(const struct cnt_group *parent, struct cnt_item *item, > return len > 0 ? len : 0; > } > > +static unsigned int > +csv_add_member(const struct cnt_group *parent, struct cnt_item *item, > + unsigned int headers) > +{ > + int len = 0; > + > + if (headers) > + fprintf(out, "%s %s", parent->display_name, item->unit); > + else > + len = fprintf(out, "%f", > + pmu_calc(&item->pmu->val, item->d, item->t, > + item->s)); > + > + return len > 0 ? len : 0; > +} > + > static void > term_open_struct(const char *name) > { > @@ -1540,6 +1558,46 @@ print_group(struct cnt_group *grp, unsigned int headers) > return consumed; > } > > +static unsigned int csv_count, prev_csv_count; > + > +static void csv_close_struct(void) > +{ > + assert(text_level > 0); > + if (--text_level == 0) { > + csv_count = prev_csv_count = 0; > + text_lines++; > + fputs("\n", out); > + fflush(out); > + } > +} > + > +static bool > +csv_print_group(struct cnt_group *grp, unsigned int headers) > +{ > + unsigned int consumed = 0; > + struct cnt_item *item; > + > + if (!present_in_group(grp)) > + return false; > + > + text_open_struct(grp->name); > + > + for (item = grp->items; item->name; item++) { > + if (!item->pmu || !item->pmu->present) > + continue; > + > + if (csv_count != prev_csv_count) > + fprintf(out, ","); > + prev_csv_count = csv_count++; > + > + consumed += csv_add_member(grp, item, headers); > + } > + > + csv_close_struct(); > + > + return consumed; > +} > + > static bool > term_print_group(struct cnt_group *grp, unsigned int headers) > { > @@ -1570,6 +1628,13 @@ static const struct print_operations text_pops = { > .print_group = print_group, > }; > > +static const struct print_operations csv_pops = { > + .open_struct = text_open_struct, > + .close_struct = csv_close_struct, > + .add_member = csv_add_member, > + .print_group = csv_print_group, > +}; > + > static const struct print_operations term_pops = { > .open_struct = term_open_struct, > .close_struct = term_close_struct, > @@ -1582,11 +1647,12 @@ static bool print_groups(struct cnt_group **groups) > static bool headers_printed = false; > bool print_data = true; > > - if (output_mode == TEXT && > + if ((output_mode == TEXT || output_mode == CSV) && > (text_header_repeat || !headers_printed)) { > + const unsigned int header_lines = output_mode == TEXT ? 2 : 1; > unsigned int headers = text_lines % TEXT_HEADER_REPEAT + 1; > > - if (headers == 1 || headers == 2) > + if (headers > 0 && headers <= header_lines) > for (struct cnt_group **grp = groups; *grp; grp++) > print_data = pops->print_group(*grp, headers); > > @@ -2469,7 +2535,7 @@ int main(int argc, char **argv) > char *codename = NULL; > > /* Parse options */ > - while ((ch = getopt(argc, argv, "o:s:d:pJLlh")) != -1) { > + while ((ch = getopt(argc, argv, "o:s:d:pcJLlh")) != -1) { > switch (ch) { > case 'o': > output_path = optarg; > @@ -2483,6 +2549,9 @@ int main(int argc, char **argv) > case 'p': > physical_engines = true; > break; > + case 'c': > + output_mode = CSV; > + break; > case 'J': > output_mode = JSON; > break; > @@ -2532,6 +2601,9 @@ int main(int argc, char **argv) > case TEXT: > pops = &text_pops; > break; > + case CSV: > + pops = &csv_pops; > + break; > case JSON: > pops = &json_pops; > break; > -- > 2.34.1 > ^ permalink raw reply [flat|nested] 15+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for More intel_gpu_top improvements (rev3) 2023-02-03 11:16 [igt-dev] [PATCH i-g-t 0/3] More intel_gpu_top improvements Tvrtko Ursulin ` (2 preceding siblings ...) 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CVS output format Tvrtko Ursulin @ 2023-02-03 14:49 ` Patchwork 2023-02-04 17:27 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 4 siblings, 0 replies; 15+ messages in thread From: Patchwork @ 2023-02-03 14:49 UTC (permalink / raw) To: Tvrtko Ursulin; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 2463 bytes --] == Series Details == Series: More intel_gpu_top improvements (rev3) URL : https://patchwork.freedesktop.org/series/113644/ State : success == Summary == CI Bug Log - changes from CI_DRM_12691 -> IGTPW_8444 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/index.html Participating hosts (28 -> 26) ------------------------------ Missing (2): fi-kbl-soraka fi-snb-2520m Known issues ------------ Here are the changes found in IGTPW_8444 that come from known issues: ### IGT changes ### #### Possible fixes #### * igt@i915_selftest@live@gt_heartbeat: - fi-apl-guc: [DMESG-FAIL][1] ([i915#5334]) -> [PASS][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html * igt@i915_selftest@live@migrate: - {bat-adlp-9}: [DMESG-FAIL][3] ([i915#7699]) -> [PASS][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/bat-adlp-9/igt@i915_selftest@live@migrate.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/bat-adlp-9/igt@i915_selftest@live@migrate.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983 [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334 [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354 [i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367 [i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699 [i915#7996]: https://gitlab.freedesktop.org/drm/intel/issues/7996 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_7148 -> IGTPW_8444 CI-20190529: 20190529 CI_DRM_12691: 2153bc2944d37403c6d5c4e1082d074a34d39ae9 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_8444: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/index.html IGT_7148: ee8e31cf39c44d3fdbd04d8db239f8a815f86121 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Testlist changes ---------------- +igt@kms_dsc@basic-dsc -igt@kms_dsc@dsc-basic == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/index.html [-- Attachment #2: Type: text/html, Size: 2827 bytes --] ^ permalink raw reply [flat|nested] 15+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for More intel_gpu_top improvements (rev3) 2023-02-03 11:16 [igt-dev] [PATCH i-g-t 0/3] More intel_gpu_top improvements Tvrtko Ursulin ` (3 preceding siblings ...) 2023-02-03 14:49 ` [igt-dev] ✓ Fi.CI.BAT: success for More intel_gpu_top improvements (rev3) Patchwork @ 2023-02-04 17:27 ` Patchwork 4 siblings, 0 replies; 15+ messages in thread From: Patchwork @ 2023-02-04 17:27 UTC (permalink / raw) To: Tvrtko Ursulin; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 21637 bytes --] == Series Details == Series: More intel_gpu_top improvements (rev3) URL : https://patchwork.freedesktop.org/series/113644/ State : success == Summary == CI Bug Log - changes from CI_DRM_12691_full -> IGTPW_8444_full ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/index.html Participating hosts (9 -> 9) ------------------------------ No changes in participating hosts Known issues ------------ Here are the changes found in IGTPW_8444_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_exec_fair@basic-none@rcs0: - shard-glk: [PASS][1] -> [FAIL][2] ([i915#2842]) +1 similar issue [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-glk5/igt@gem_exec_fair@basic-none@rcs0.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-glk4/igt@gem_exec_fair@basic-none@rcs0.html * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions: - shard-glk: [PASS][3] -> [FAIL][4] ([i915#2346]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-glk9/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-glk3/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ac-hdmi-a1-hdmi-a2: - shard-glk: [PASS][5] -> [FAIL][6] ([i915#79]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-glk3/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ac-hdmi-a1-hdmi-a2.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-glk3/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ac-hdmi-a1-hdmi-a2.html #### Possible fixes #### * igt@fbdev@nullptr: - {shard-rkl}: [SKIP][7] ([i915#2582]) -> [PASS][8] +1 similar issue [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-1/igt@fbdev@nullptr.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-6/igt@fbdev@nullptr.html * igt@gem_ctx_persistence@hang: - {shard-rkl}: [SKIP][9] ([i915#6252]) -> [PASS][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-5/igt@gem_ctx_persistence@hang.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-4/igt@gem_ctx_persistence@hang.html * igt@gem_eio@suspend: - {shard-rkl}: [FAIL][11] ([i915#5115] / [i915#7052]) -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-4/igt@gem_eio@suspend.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-2/igt@gem_eio@suspend.html * igt@gem_exec_endless@dispatch@bcs0: - {shard-rkl}: [SKIP][13] ([i915#6247]) -> [PASS][14] [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-5/igt@gem_exec_endless@dispatch@bcs0.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-1/igt@gem_exec_endless@dispatch@bcs0.html * igt@gem_exec_fair@basic-pace@rcs0: - shard-glk: [FAIL][15] ([i915#2842]) -> [PASS][16] [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-glk7/igt@gem_exec_fair@basic-pace@rcs0.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-glk6/igt@gem_exec_fair@basic-pace@rcs0.html * igt@gem_exec_reloc@basic-wc-read-noreloc: - {shard-rkl}: [SKIP][17] ([i915#3281]) -> [PASS][18] +9 similar issues [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-2/igt@gem_exec_reloc@basic-wc-read-noreloc.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-5/igt@gem_exec_reloc@basic-wc-read-noreloc.html * igt@gem_mmap_gtt@coherency: - {shard-rkl}: [SKIP][19] ([fdo#111656]) -> [PASS][20] [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-1/igt@gem_mmap_gtt@coherency.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-5/igt@gem_mmap_gtt@coherency.html * igt@gem_pread@bench: - {shard-rkl}: [SKIP][21] ([i915#3282]) -> [PASS][22] +5 similar issues [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-2/igt@gem_pread@bench.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-5/igt@gem_pread@bench.html * igt@gen9_exec_parse@bb-start-far: - {shard-rkl}: [SKIP][23] ([i915#2527]) -> [PASS][24] +3 similar issues [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-4/igt@gen9_exec_parse@bb-start-far.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-5/igt@gen9_exec_parse@bb-start-far.html * igt@i915_pm_dc@dc9-dpms: - {shard-rkl}: [SKIP][25] ([i915#3361]) -> [PASS][26] [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-5/igt@i915_pm_dc@dc9-dpms.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-4/igt@i915_pm_dc@dc9-dpms.html * igt@i915_pm_rpm@dpms-lpsp: - {shard-rkl}: [SKIP][27] ([i915#1397]) -> [PASS][28] [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-3/igt@i915_pm_rpm@dpms-lpsp.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-6/igt@i915_pm_rpm@dpms-lpsp.html * igt@kms_big_fb@x-tiled-addfb-size-offset-overflow: - {shard-tglu}: [SKIP][29] ([i915#1845] / [i915#7651]) -> [PASS][30] +3 similar issues [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-tglu-6/igt@kms_big_fb@x-tiled-addfb-size-offset-overflow.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-tglu-1/igt@kms_big_fb@x-tiled-addfb-size-offset-overflow.html * igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_rc_ccs: - {shard-rkl}: [SKIP][31] ([i915#1845] / [i915#4098]) -> [PASS][32] +21 similar issues [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-2/igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_rc_ccs.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-6/igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_rc_ccs.html * igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a2: - shard-glk: [FAIL][33] ([i915#79]) -> [PASS][34] [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-glk7/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a2.html [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-glk4/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a2.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt: - {shard-tglu}: [SKIP][35] ([i915#1849]) -> [PASS][36] +4 similar issues [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-tglu-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt.html [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-tglu-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt: - {shard-rkl}: [SKIP][37] ([i915#1849] / [i915#4098]) -> [PASS][38] +14 similar issues [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt.html [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbc-modesetfrombusy: - shard-glk: [FAIL][39] -> [PASS][40] [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-glk6/igt@kms_frontbuffer_tracking@fbc-modesetfrombusy.html [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-glk3/igt@kms_frontbuffer_tracking@fbc-modesetfrombusy.html * igt@kms_plane@pixel-format@pipe-b-planes: - {shard-tglu}: [SKIP][41] ([i915#1849] / [i915#3558]) -> [PASS][42] +1 similar issue [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-tglu-6/igt@kms_plane@pixel-format@pipe-b-planes.html [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-tglu-1/igt@kms_plane@pixel-format@pipe-b-planes.html * igt@kms_plane@plane-panning-top-left@pipe-a-planes: - {shard-rkl}: [SKIP][43] ([i915#1849]) -> [PASS][44] +5 similar issues [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-1/igt@kms_plane@plane-panning-top-left@pipe-a-planes.html [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-6/igt@kms_plane@plane-panning-top-left@pipe-a-planes.html * igt@kms_psr@cursor_render: - {shard-rkl}: [SKIP][45] ([i915#1072]) -> [PASS][46] +1 similar issue [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-5/igt@kms_psr@cursor_render.html [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-6/igt@kms_psr@cursor_render.html * igt@kms_vblank@pipe-c-wait-forked-busy: - {shard-tglu}: [SKIP][47] ([i915#7651]) -> [PASS][48] +4 similar issues [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-tglu-6/igt@kms_vblank@pipe-c-wait-forked-busy.html [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-tglu-7/igt@kms_vblank@pipe-c-wait-forked-busy.html * igt@perf@gen8-unprivileged-single-ctx-counters: - {shard-rkl}: [SKIP][49] ([i915#2436]) -> [PASS][50] [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-4/igt@perf@gen8-unprivileged-single-ctx-counters.html [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-5/igt@perf@gen8-unprivileged-single-ctx-counters.html * igt@prime_vgem@basic-fence-flip: - {shard-rkl}: [SKIP][51] ([fdo#109295] / [i915#3708] / [i915#4098]) -> [PASS][52] [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-4/igt@prime_vgem@basic-fence-flip.html [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-6/igt@prime_vgem@basic-fence-flip.html * igt@prime_vgem@coherency-gtt: - {shard-rkl}: [SKIP][53] ([fdo#109295] / [fdo#111656] / [i915#3708]) -> [PASS][54] [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12691/shard-rkl-3/igt@prime_vgem@coherency-gtt.html [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/shard-rkl-5/igt@prime_vgem@coherency-gtt.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274 [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280 [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283 [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289 [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291 [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295 [fdo#109302]: https://bugs.freedesktop.org/show_bug.cgi?id=109302 [fdo#109307]: https://bugs.freedesktop.org/show_bug.cgi?id=109307 [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308 [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309 [fdo#109312]: https://bugs.freedesktop.org/show_bug.cgi?id=109312 [fdo#109314]: https://bugs.freedesktop.org/show_bug.cgi?id=109314 [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315 [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506 [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642 [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189 [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723 [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068 [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614 [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615 [fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644 [fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656 [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825 [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827 [fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054 [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283 [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072 [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132 [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397 [i915#1722]: https://gitlab.freedesktop.org/drm/intel/issues/1722 [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825 [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839 [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845 [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849 [i915#1902]: https://gitlab.freedesktop.org/drm/intel/issues/1902 [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346 [i915#2433]: https://gitlab.freedesktop.org/drm/intel/issues/2433 [i915#2436]: https://gitlab.freedesktop.org/drm/intel/issues/2436 [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437 [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527 [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575 [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582 [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587 [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658 [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672 [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705 [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280 [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284 [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842 [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856 [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920 [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116 [i915#315]: https://gitlab.freedesktop.org/drm/intel/issues/315 [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281 [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282 [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297 [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299 [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318 [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359 [i915#3361]: https://gitlab.freedesktop.org/drm/intel/issues/3361 [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458 [i915#3469]: https://gitlab.freedesktop.org/drm/intel/issues/3469 [i915#3528]: https://gitlab.freedesktop.org/drm/intel/issues/3528 [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539 [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546 [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555 [i915#3558]: https://gitlab.freedesktop.org/drm/intel/issues/3558 [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637 [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638 [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689 [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708 [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734 [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742 [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840 [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886 [i915#3936]: https://gitlab.freedesktop.org/drm/intel/issues/3936 [i915#3952]: https://gitlab.freedesktop.org/drm/intel/issues/3952 [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955 [i915#3966]: https://gitlab.freedesktop.org/drm/intel/issues/3966 [i915#4036]: https://gitlab.freedesktop.org/drm/intel/issues/4036 [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070 [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077 [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078 [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079 [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083 [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098 [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103 [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212 [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213 [i915#426]: https://gitlab.freedesktop.org/drm/intel/issues/426 [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270 [i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281 [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387 [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538 [i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565 [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613 [i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771 [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812 [i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833 [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852 [i915#4859]: https://gitlab.freedesktop.org/drm/intel/issues/4859 [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860 [i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880 [i915#4885]: https://gitlab.freedesktop.org/drm/intel/issues/4885 [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983 [i915#5115]: https://gitlab.freedesktop.org/drm/intel/issues/5115 [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176 [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235 [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286 [i915#5288]: https://gitlab.freedesktop.org/drm/intel/issues/5288 [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289 [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325 [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533 [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461 [i915#5563]: https://gitlab.freedesktop.org/drm/intel/issues/5563 [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784 [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095 [i915#6245]: https://gitlab.freedesktop.org/drm/intel/issues/6245 [i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247 [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248 [i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252 [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301 [i915#6334]: https://gitlab.freedesktop.org/drm/intel/issues/6334 [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335 [i915#6344]: https://gitlab.freedesktop.org/drm/intel/issues/6344 [i915#6403]: https://gitlab.freedesktop.org/drm/intel/issues/6403 [i915#6412]: https://gitlab.freedesktop.org/drm/intel/issues/6412 [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433 [i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497 [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524 [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658 [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621 [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768 [i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944 [i915#6946]: https://gitlab.freedesktop.org/drm/intel/issues/6946 [i915#6953]: https://gitlab.freedesktop.org/drm/intel/issues/6953 [i915#7052]: https://gitlab.freedesktop.org/drm/intel/issues/7052 [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116 [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118 [i915#7128]: https://gitlab.freedesktop.org/drm/intel/issues/7128 [i915#7178]: https://gitlab.freedesktop.org/drm/intel/issues/7178 [i915#7294]: https://gitlab.freedesktop.org/drm/intel/issues/7294 [i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456 [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561 [i915#7651]: https://gitlab.freedesktop.org/drm/intel/issues/7651 [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697 [i915#7701]: https://gitlab.freedesktop.org/drm/intel/issues/7701 [i915#7707]: https://gitlab.freedesktop.org/drm/intel/issues/7707 [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711 [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742 [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828 [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79 [i915#7949]: https://gitlab.freedesktop.org/drm/intel/issues/7949 [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975 [i915#7981]: https://gitlab.freedesktop.org/drm/intel/issues/7981 [i915#7997]: https://gitlab.freedesktop.org/drm/intel/issues/7997 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_7148 -> IGTPW_8444 CI-20190529: 20190529 CI_DRM_12691: 2153bc2944d37403c6d5c4e1082d074a34d39ae9 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_8444: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/index.html IGT_7148: ee8e31cf39c44d3fdbd04d8db239f8a815f86121 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8444/index.html [-- Attachment #2: Type: text/html, Size: 14670 bytes --] ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2023-02-09 8:24 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-02-03 11:16 [igt-dev] [PATCH i-g-t 0/3] More intel_gpu_top improvements Tvrtko Ursulin 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 1/3] intel_gpu_top: Do not repeat header lines in non-interactive output Tvrtko Ursulin 2023-02-07 13:25 ` [igt-dev] [Intel-gfx] " Kamil Konieczny 2023-02-08 12:31 ` Kamil Konieczny 2023-02-09 8:24 ` Tvrtko Ursulin 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 2/3] intel_gpu_top: Rename STDOUT to TEXT Tvrtko Ursulin 2023-02-07 13:15 ` Kamil Konieczny 2023-02-03 11:16 ` [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CVS output format Tvrtko Ursulin 2023-02-03 11:22 ` Ville Syrjälä 2023-02-03 11:27 ` Tvrtko Ursulin 2023-02-03 11:30 ` [igt-dev] [PATCH i-g-t 3/3] intel_gpu_top: Add CSV " Tvrtko Ursulin 2023-02-03 11:31 ` Tvrtko Ursulin 2023-02-07 13:29 ` [igt-dev] [Intel-gfx] " Kamil Konieczny 2023-02-03 14:49 ` [igt-dev] ✓ Fi.CI.BAT: success for More intel_gpu_top improvements (rev3) Patchwork 2023-02-04 17:27 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox