Re: [Intel-gfx] [PATCH i-g-t 0/8] Vendor agnostic gputop

2023-01-26 Thread Kamil Konieczny
Hi,

please rebase and resend, also please change commit subject to start
with lib: or lib/[name of lib changed]: rest od commit description

For example, in 3/8 instead of
libdrmclients: Record client drm minor
write:
lib/igt_drm_clients: Record client drm minor

If there are more lib changes, use "lib: " alone, for example
in your 2/8 patch,
libdrmfdinfo: Allow specifying custom engine map
write:
lib: Allow specifying custom engine map

+Cc Petri and Zbyszek

Regards,
Kamil

On 2022-11-11 at 15:58:36 +, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin 
> 
> This is a pile of patches which implements a rudimentary vendor agnostic 
> gputop
> tool based of the new DRM spec as documented in
> Documentation/gpu/drm-usage-stats.rst.
> 
> First part of the series is code refactoring which should be reasonably 
> stable.
> I've tested it all while working on it both against intel_gpu_top and gputop.
> 
> Last patch is the actual tool itself. It works but it is rather rudimentary
> which is hopefully good enough for a start.
> 
> Fundamental difference between intel_gpu_top and gputop is that the former is
> centered around a single card and only shows processes belonging to it. Gputop
> on the other hand has an idea to show all processes with DRM file descriptors
> open and sort them into groups per card. It also makes no effort to provide
> sorting modes, well any interactivity, or any pretty names for GPUs or 
> engines.
> 
> It looks like this:
> 
> DRM minor 0
> PID   NAMErender   copy   video
> 3816  kwin_x11 |███▎  ||  ||  ||  |
> 3523  Xorg |▊ ||  ||  ||  |
>  1120449   mpv |  ||  ||▋ ||  |
>  1120529  glxgears |▋ ||  ||  ||  |
>  1120449   mpv |▍ ||  ||  ||  |
> 3860   plasmashell |▏ ||  ||  ||  |
> 4764   krunner |  ||  ||  ||  |
>   575206chrome |  ||  ||  ||  |
>   833481   firefox |  ||  ||  ||  |
>   892924   thunderbird |  ||  ||  ||  |
> 
> 
> I did test it as well with two cards and confirmed that too works.
> 
> Rob Clark also tested it with a patch which exports the respective data from 
> the
> msm driver and confirmed it works fine. Christian König tested it with in
> progress patches for amdgpu and that worked as well.
> 
> v2:
>  * Fixed SPDX headers and added a bunch of code comments/docs throughout.
> 
> Tvrtko Ursulin (8):
>   lib: Extract igt_drm_clients from intel_gpu_top
>   libdrmfdinfo: Allow specifying custom engine map
>   libdrmclients: Record client drm minor
>   libdrmclient: Support multiple DRM cards
>   libdrmfdinfo: Track largest engine index
>   libdrmclient/intel_gpu_top: Decouple hardcoded engine assumptions
>   libdrmclient: Enforce client status sort order in the library
>   gputop: Basic vendor agnostic GPU top tool
> 
>  lib/igt_drm_clients.c   | 503 +
>  lib/igt_drm_clients.h   |  87 ++
>  lib/igt_drm_fdinfo.c|  50 ++-
>  lib/igt_drm_fdinfo.h|  16 +-
>  lib/meson.build |   8 +
>  tests/i915/drm_fdinfo.c |  19 +-
>  tools/gputop.c  | 260 +++
>  tools/intel_gpu_top.c   | 677 +++-
>  tools/meson.build   |   7 +-
>  9 files changed, 1113 insertions(+), 514 deletions(-)
>  create mode 100644 lib/igt_drm_clients.c
>  create mode 100644 lib/igt_drm_clients.h
>  create mode 100644 tools/gputop.c
> 
> -- 
> 2.34.1
> 


[Intel-gfx] [PATCH i-g-t 0/8] Vendor agnostic gputop

2022-11-11 Thread Tvrtko Ursulin
From: Tvrtko Ursulin 

This is a pile of patches which implements a rudimentary vendor agnostic gputop
tool based of the new DRM spec as documented in
Documentation/gpu/drm-usage-stats.rst.

First part of the series is code refactoring which should be reasonably stable.
I've tested it all while working on it both against intel_gpu_top and gputop.

Last patch is the actual tool itself. It works but it is rather rudimentary
which is hopefully good enough for a start.

Fundamental difference between intel_gpu_top and gputop is that the former is
centered around a single card and only shows processes belonging to it. Gputop
on the other hand has an idea to show all processes with DRM file descriptors
open and sort them into groups per card. It also makes no effort to provide
sorting modes, well any interactivity, or any pretty names for GPUs or engines.

It looks like this:

DRM minor 0
PID   NAMErender   copy   video
3816  kwin_x11 |███▎  ||  ||  ||  |
3523  Xorg |▊ ||  ||  ||  |
 1120449   mpv |  ||  ||▋ ||  |
 1120529  glxgears |▋ ||  ||  ||  |
 1120449   mpv |▍ ||  ||  ||  |
3860   plasmashell |▏ ||  ||  ||  |
4764   krunner |  ||  ||  ||  |
  575206chrome |  ||  ||  ||  |
  833481   firefox |  ||  ||  ||  |
  892924   thunderbird |  ||  ||  ||  |


I did test it as well with two cards and confirmed that too works.

Rob Clark also tested it with a patch which exports the respective data from the
msm driver and confirmed it works fine. Christian König tested it with in
progress patches for amdgpu and that worked as well.

v2:
 * Fixed SPDX headers and added a bunch of code comments/docs throughout.

Tvrtko Ursulin (8):
  lib: Extract igt_drm_clients from intel_gpu_top
  libdrmfdinfo: Allow specifying custom engine map
  libdrmclients: Record client drm minor
  libdrmclient: Support multiple DRM cards
  libdrmfdinfo: Track largest engine index
  libdrmclient/intel_gpu_top: Decouple hardcoded engine assumptions
  libdrmclient: Enforce client status sort order in the library
  gputop: Basic vendor agnostic GPU top tool

 lib/igt_drm_clients.c   | 503 +
 lib/igt_drm_clients.h   |  87 ++
 lib/igt_drm_fdinfo.c|  50 ++-
 lib/igt_drm_fdinfo.h|  16 +-
 lib/meson.build |   8 +
 tests/i915/drm_fdinfo.c |  19 +-
 tools/gputop.c  | 260 +++
 tools/intel_gpu_top.c   | 677 +++-
 tools/meson.build   |   7 +-
 9 files changed, 1113 insertions(+), 514 deletions(-)
 create mode 100644 lib/igt_drm_clients.c
 create mode 100644 lib/igt_drm_clients.h
 create mode 100644 tools/gputop.c

-- 
2.34.1



[Intel-gfx] [PATCH i-g-t 0/8] Vendor agnostic gputop

2022-06-16 Thread Tvrtko Ursulin
From: Tvrtko Ursulin 

Just a re-send having rebased on top of latest tree.

Tvrtko Ursulin (8):
  lib: Extract igt_drm_clients from intel_gpu_top
  libdrmfdinfo: Allow specifying custom engine map
  libdrmclients: Record client drm minor
  libdrmclient: Support multiple DRM cards
  libdrmfdinfo: Track largest engine index
  libdrmclient/intel_gpu_top: Decouple hardcoded engine assumptions
  libdrmclient: Enforce client status sort order in the library
  gputop: Basic vendor agnostic GPU top tool

 lib/igt_drm_clients.c   | 503 +
 lib/igt_drm_clients.h   |  87 ++
 lib/igt_drm_fdinfo.c|  50 ++-
 lib/igt_drm_fdinfo.h|  16 +-
 lib/meson.build |   8 +
 tests/i915/drm_fdinfo.c |  19 +-
 tools/gputop.c  | 260 +++
 tools/intel_gpu_top.c   | 677 +++-
 tools/meson.build   |   7 +-
 9 files changed, 1113 insertions(+), 514 deletions(-)
 create mode 100644 lib/igt_drm_clients.c
 create mode 100644 lib/igt_drm_clients.h
 create mode 100644 tools/gputop.c

-- 
2.34.1



[Intel-gfx] [PATCH i-g-t 0/8] Vendor agnostic gputop

2022-05-11 Thread Tvrtko Ursulin
From: Tvrtko Ursulin 

This is a pile of patches which implements a rudimentary vendor agnostic gputop
tool based of the new DRM spec as documented in
Documentation/gpu/drm-usage-stats.rst.

First part of the series is code refactoring which should be reasonably stable.
I've tested it all while working on it both against intel_gpu_top and gputop.

Last patch is the actual tool itself. It works but it is rather rudimentary
which is hopefully good enough for a start.

Fundamental difference between intel_gpu_top and gputop is that the former is
centered around a single card and only shows processes belonging to it. Gputop
on the other hand has an idea to show all processes with DRM file descriptors
open and sort them into groups per card. It also makes no effort to provide
sorting modes, well any interactivity, or any pretty names for GPUs or engines.

It looks like this:

DRM minor 0
PID   NAMErender   copy   video
3816  kwin_x11 |███▎  ||  ||  ||  |
3523  Xorg |▊ ||  ||  ||  |
 1120449   mpv |  ||  ||▋ ||  |
 1120529  glxgears |▋ ||  ||  ||  |
 1120449   mpv |▍ ||  ||  ||  |
3860   plasmashell |▏ ||  ||  ||  |
4764   krunner |  ||  ||  ||  |
  575206chrome |  ||  ||  ||  |
  833481   firefox |  ||  ||  ||  |
  892924   thunderbird |  ||  ||  ||  |


I did test it as well with two cards and confirmed that too works.

Rob Clark also tested it with a patch which exports the respective data from the
msm driver and confirmed it works fine. Christian König tested it with in
progress patches for amdgpu and that worked as well.

v2:
 * Fixed SPDX headers and added a bunch of code comments/docs throughout.

Tvrtko Ursulin (8):
  lib: Extract igt_drm_clients from intel_gpu_top
  libdrmfdinfo: Allow specifying custom engine map
  libdrmclients: Record client drm minor
  libdrmclient: Support multiple DRM cards
  libdrmfdinfo: Track largest engine index
  libdrmclient/intel_gpu_top: Decouple hardcoded engine assumptions
  libdrmclient: Enforce client status sort order in the library
  gputop: Basic vendor agnostic GPU top tool

 lib/igt_drm_clients.c   | 495 ++
 lib/igt_drm_clients.h   |  87 ++
 lib/igt_drm_fdinfo.c|  50 ++-
 lib/igt_drm_fdinfo.h|  16 +-
 lib/meson.build |   8 +
 tests/i915/drm_fdinfo.c |  18 +-
 tools/gputop.c  | 260 
 tools/intel_gpu_top.c   | 663 ++--
 tools/meson.build   |   7 +-
 9 files changed, 1085 insertions(+), 519 deletions(-)
 create mode 100644 lib/igt_drm_clients.c
 create mode 100644 lib/igt_drm_clients.h
 create mode 100644 tools/gputop.c

-- 
2.32.0