Re-floating a simple idea (this time with more Cc) born from an user interest to
be able to correctly size the swap space during OS installation, based on the
size of the VRAM a discrete GPU might have. And to be able to do it in a vendor
agnostic way.
Idea is to expose a standardized scheme in sysfs, under the DRM class card, and
under a new 'memstat' directory. Such as, example from amdgpu:
/sys/class/drm/card1/memstat/
├── gtt
│ ├── total_mb
│ └── used_mb
└── vram
├── total_mb
└── used_mb
Or with concrete numbers:
$ grep -Hr . /sys/class/drm/card1/memstat/
/sys/class/drm/card1/memstat/vram/total_mb:1024
/sys/class/drm/card1/memstat/vram/used_mb:445
/sys/class/drm/card1/memstat/gtt/total_mb:7394
/sys/class/drm/card1/memstat/gtt/used_mb:71
Drivers need to implement a simple DRM driver level callback which needs to
report a stable list of interesting memory regions and their respective stats.
The region names then become sub-directory names under the new 'memstat'
directory, with each region exposing the total size and the current usage.
Similar data can already be queried if the dmem cgroup controller is enabled,
also only for the participating drivers, by querying the root cgroup. But
perhaps sysfs is easier, or perhaps it is too much code for too little benefit.
I am curious to hear any opinions.
Cc: Maíra Canal <[email protected]>
Cc: Ludovico de Nittis <[email protected]>
Cc: Alex Deucher <[email protected]>
Cc: Christian König <[email protected]>
Cc: Maarten Lankhorst <[email protected]>
Cc: Maxime Ripard <[email protected]>
Cc: Thomas Zimmermann <[email protected]>
Cc: David Airlie <[email protected]>
Cc: Simona Vetter <[email protected]>
Tvrtko Ursulin (2):
drm: Allow drivers to report standardized memory stats
drm/amdgpu: Wire up DRM memory stats reporting
drivers/gpu/drm/amd/amdgpu/amdgpu.h | 6 +
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c | 40 +++++--
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 37 +++++++
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 3 +
drivers/gpu/drm/drm_drv.c | 10 ++
drivers/gpu/drm/drm_sysfs.c | 123 +++++++++++++++++++++
include/drm/drm_device.h | 19 ++++
include/drm/drm_drv.h | 8 ++
include/drm/drm_file.h | 9 ++
include/drm/drm_sysfs.h | 4 +
11 files changed, 248 insertions(+), 13 deletions(-)
--
2.55.0