[PATCH v8 3/5] Documentation/gpu: Clarify drm memory stats definition

Li, Yunxiang (Teddy) Yunxiang.Li at amd.com
Mon Nov 18 14:56:14 UTC 2024


[Public]

> From: Tvrtko Ursulin <tvrtko.ursulin at igalia.com>
> Sent: Monday, November 18, 2024 9:38
> On 16/11/2024 04:44, Yunxiang Li wrote:
> > Define how to handle buffers with multiple possible placement so we
> > don't get incompatible implementations. Callout the resident
> > requirement for drm-purgeable- explicitly. Remove the requirement for
> > there to be only drm-memory- or only drm-resident-, it's not what's
> > implemented and having both is better for back-compat. Also re-order
> > the paragraphs to flow better.
> >
> > Signed-off-by: Yunxiang Li <Yunxiang.Li at amd.com>
> > CC: dri-devel at lists.freedesktop.org
> > ---
> >   Documentation/gpu/drm-usage-stats.rst | 36 ++++++++++++---------------
> >   1 file changed, 16 insertions(+), 20 deletions(-)
> >
> > diff --git a/Documentation/gpu/drm-usage-stats.rst
> > b/Documentation/gpu/drm-usage-stats.rst
> > index ff964c707754a..973663f91a292 100644
> > --- a/Documentation/gpu/drm-usage-stats.rst
> > +++ b/Documentation/gpu/drm-usage-stats.rst
> > @@ -140,13 +140,9 @@ both.
> >   Memory
> >   ^^^^^^
> >
> > -- drm-memory-<region>: <uint> [KiB|MiB]
> > -
> > -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 region name "memory" is reserved to refer to normal system 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 used as
> the "<region>"
> > +string. 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.
> > @@ -154,31 +150,27 @@ 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 key is deprecated and is an alias for drm-resident-<region>.
> > Only one of -the two should be present in the output.
>
> IMO the second sentence should stay in principle (I mean at the new location,
> where you moved it). Intent is to avoid new implementations adding both keys. The
> fact amdgpu has both is not relevant for that purpose. We don't want someone just
> reading it is an alias and having to have any doubt whether they need to output both
> or not.

I see, yeah I will mention in the drm-memory- part that that tag is legacy amdgpu only behavior.

> > +- drm-total-<region>: <uint> [KiB|MiB]
> > +
> > +The total size of all created buffers including shared and private
> > +memory. The backing store for the buffers does not have to be
> > +currently instantiated to count under this category. To avoid double
> > +counting, if a buffer falls under multiple regions, the
> > +implementation should pick only one of the regions, and do so in a consistent
> manner.
>
> Addition feels fine to me in principle. I would only suggest rewording it a bit to avoid
> ambiguity about what it means to "fall under". Perhaps like this:
>
> To avoid double counting when buffers can be instantiated in one of the multiple
> allowed memory regions, the implementation should account the total against only
> one of the regions, and should pick this region in a consistent manner.

Ack

> >
> >   - drm-shared-<region>: <uint> [KiB|MiB]
> >
> >   The total size of buffers that are shared with another file (e.g.,
> > have more -than a single handle).
> > -
> > -- drm-total-<region>: <uint> [KiB|MiB]
> > -
> > -The total size of all created buffers including shared and private
> > memory. The -backing store for the buffers does not have to be
> > currently instantiated to be -counted under this category.
> > +than a single handle). Same caveat as drm-total- applies.
>
> I suggest to explicitly point out the caveat is the multiple region one.

and Ack

> >
> >   - drm-resident-<region>: <uint> [KiB|MiB]
> >
> >   The total size of buffers that are resident (have their backing store present or
> >   instantiated) in the specified region.
> >
> > -This is an alias for drm-memory-<region> and only one of the two
> > should be -present in the output.
>
> I think it does not harm to keep this note at both keys. Or at least make one
> reference the other for this point specifically.

Might be easier to just have drm-memory- as a foot note here, instead of its own section

> > -
> >   - drm-purgeable-<region>: <uint> [KiB|MiB]
> >
> > -The total size of buffers that are purgeable.
> > +The total size of buffers that are resident and purgeable.
>
> Is it not redundant? How could something not resident be purgeable in the first
> place?

There is the possible confusion between buffers having a purgeable bit and buffers in a state that is purgeable, I feel like it's worth an explicit callout since there's also code comments about this difference.

> >   For example drivers which implement a form of 'madvise' like functionality can
> >   here count buffers which have instantiated backing store, but have
> > been marked @@ -192,6 +184,10 @@ One practical example of this can be
> presence of unsignaled fences in an GEM
> >   buffer reservation object. Therefore the active category is a subset of
> >   resident.
> >
> > +- drm-memory-<region>: <uint> [KiB|MiB]
> > +
> > +This key is deprecated and is an alias for drm-resident-<region> if present.
> > +
> >   Implementation Details
> >   ======================
> >
>
> Regards,
>
> Tvrtko


More information about the dri-devel mailing list