On 03/05/2024 16:58, Alex Deucher wrote:
On Fri, May 3, 2024 at 11:33 AM Daniel Vetter <daniel@xxxxxxxx> wrote:
On Fri, May 03, 2024 at 01:58:38PM +0100, Tvrtko Ursulin wrote:
[And I forgot dri-devel.. doing well!]
On 03/05/2024 13:40, Tvrtko Ursulin wrote:
[Correcting Christian's email]
On 03/05/2024 13:36, Tvrtko Ursulin wrote:
From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxx>
Currently it is not well defined what is drm-memory- compared to other
categories.
In practice the only driver which emits these keys is amdgpu and in them
exposes the total memory use (including shared).
Document that drm-memory- and drm-total-memory- are aliases to
prevent any
confusion in the future.
While at it also clarify that the reserved sub-string 'memory' refers to
the memory region component.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxx>
Cc: Alex Deucher <alexander.deucher@xxxxxxx>
Cc: Christian König <christian.keonig@xxxxxxx>
Mea culpa, I copied the mistake from
77d17c4cd0bf52eacfad88e63e8932eb45d643c5. :)
Regards,
Tvrtko
Cc: Rob Clark <robdclark@xxxxxxxxxxxx>
---
Documentation/gpu/drm-usage-stats.rst | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/Documentation/gpu/drm-usage-stats.rst
b/Documentation/gpu/drm-usage-stats.rst
index 6dc299343b48..ef5c0a0aa477 100644
--- a/Documentation/gpu/drm-usage-stats.rst
+++ b/Documentation/gpu/drm-usage-stats.rst
@@ -128,7 +128,9 @@ Memory
Each possible memory type which can be used to store buffer
objects by the
GPU in question shall be given a stable and unique name to be
returned as the
-string here. The name "memory" is reserved to refer to normal
system memory.
+string here.
+
+The region name "memory" is reserved to refer to normal system memory.
Value shall reflect the amount of storage currently consumed by
the buffer
objects belong to this client, in the respective memory region.
@@ -136,6 +138,9 @@ objects belong to this client, in the respective
memory region.
Default unit shall be bytes with optional unit specifiers of 'KiB'
or 'MiB'
indicating kibi- or mebi-bytes.
+This is an alias for drm-total-<region> and only one of the two
should be
+present.
This feels a bit awkward and seems to needlessly complicate fdinfo uapi.
- Could we just patch amdgpu to follow everyone else, and avoid the
special case? If there's no tool that relies on the special amdgpu
prefix then that would be a lot easier.
- If that's not on the table, could we make everyone (with a suitable
helper or something) just print both variants, so that we again have
consisent fdinfo output? Or breaks that a different set of existing
tools.
- Finally maybe could we get away with fixing amd by adding the common
format there, deprecating the old, fixing the tools that would break and
then maybe if we're lucky, remove the old one from amdgpu in a year or
so?
I'm not really understanding what amdgpu is doing wrong. It seems to
be following the documentation. Is the idea that we would like to
deprecate drm-memory-<region> in favor of drm-total-<region>?
If that's the case, I think the 3rd option is probably the best. We
have a lot of tools and customers using this. It would have also been
nice to have "memory" in the string for the newer ones to avoid
conflicts with other things that might be a total or shared in the
future, but I guess that ship has sailed. We should also note that
drm-memory-<region> is deprecated. While we are here, maybe we should
clarify the semantics of resident, purgeable, and active. For
example, isn't resident just a duplicate of total? If the memory was
not resident, it would be in a different region.
Amdgpu isn't doing anything wrong. It just appears when the format was
discussed no one noticed (me included) that the two keys are not clearly
described. And it looks there also wasn't a plan to handle the uncelar
duality in the future.
For me deprecating sounds fine, the 3rd option. I understand we would
only make amdgpu emit both sets of keys and then remove drm-memory- in
due time.
With regards to key naming, yeah, memory in the name would have been
nice. We had a lot of discussion on this topic but ship has indeed
sailed. It is probably workarble for anything new that might come to add
their prefix. As long as it does not clash with the memory categories is
should be fine.
In terms of resident semantics, think of it as VIRT vs RES in top(1). It
is for drivers which allocate backing store lazily, on first use.
Purgeable is for drivers which have a form of MADV_DONTNEED ie.
currently have backing store but userspace has indicated it can be
dropped without preserving the content on memory pressure.
Active is when reservation object says there is activity on the buffer.
Regards,
Tvrtko
Alex
Uapi that's "either do $foo or on this one driver, do $bar" is just
guaranteed to fragement the ecosystem, so imo that should be the absolute
last resort.
-Sima
+
- drm-shared-<region>: <uint> [KiB|MiB]
The total size of buffers that are shared with another file (e.g.,
have more
@@ -145,6 +150,9 @@ than a single handle).
The total size of buffers that including shared and private memory.
+This is an alias for drm-memory-<region> and only one of the two
should be
+present.
+
- drm-resident-<region>: <uint> [KiB|MiB]
The total size of buffers that are resident in the specified region.
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch