From: Jerome Glisse <jglisse@redhat.com>
To: Yiwei Zhang <zzyiwei@google.com>
Cc: Alistair Delva <adelva@google.com>,
dri-devel@lists.freedesktop.org,
Prahlad Kilambi <prahladk@google.com>,
Sean Paul <seanpaul@chromium.org>,
kraxel@redhat.com, Chris Forbes <chrisforbes@google.com>,
kernel-team@android.com
Subject: Re: Proposal to report GPU private memory allocations with sysfs nodes [plain text version]
Date: Mon, 28 Oct 2019 11:26:02 -0400 [thread overview]
Message-ID: <20191028152602.GA5057@redhat.com> (raw)
In-Reply-To: <CAKT=dDk0sNAXxz-angd5WvQXXLF8p3sPLEzOt=wVSLhuaP8dkQ@mail.gmail.com>
On Fri, Oct 25, 2019 at 11:35:32AM -0700, Yiwei Zhang wrote:
> Hi folks,
>
> This is the plain text version of the previous email in case that was
> considered as spam.
>
> --- Background ---
> On the downstream Android, vendors used to report GPU private memory
> allocations with debugfs nodes in their own formats. However, debugfs nodes
> are getting deprecated in the next Android release.
Maybe explain why it is useful first ?
>
> --- Proposal ---
> We are taking the chance to unify all the vendors to migrate their existing
> debugfs nodes into a standardized sysfs node structure. Then the platform
> is able to do a bunch of useful things: memory profiling, system health
> coverage, field metrics, local shell dump, in-app api, etc. This proposal
> is better served upstream as all GPU vendors can standardize a gpu memory
> structure and reduce fragmentation across Android and Linux that clients
> can rely on.
>
> --- Detailed design ---
> The sysfs node structure looks like below:
> /sys/devices/<ro.gfx.sysfs.0>/<pid>/<type_name>
> e.g. "/sys/devices/mali0/gpu_mem/606/gl_buffer" and the gl_buffer is a node
> having the comma separated size values: "4096,81920,...,4096".
How does kernel knows what API the allocation is use for ? With the
open source driver you never specify what API is creating a gem object
(opengl, vulkan, ...) nor what purpose (transient, shader, ...).
> For the top level root, vendors can choose their own names based on the
> value of ro.gfx.sysfs.0 the vendors set. (1) For the multiple gpu driver
> cases, we can use ro.gfx.sysfs.1, ro.gfx.sysfs.2 for the 2nd and 3rd KMDs.
> (2) It's also allowed to put some sub-dir for example "kgsl/gpu_mem" or
> "mali0/gpu_mem" in the ro.gfx.sysfs.<channel> property if the root name
> under /sys/devices/ is already created and used for other purposes.
On one side you want to standardize on the other you want to give
complete freedom on the top level naming scheme. I would rather see a
consistent naming scheme (ie something more restraint and with little
place for interpration by individual driver)
.
> For the 2nd level "pid", there are usually just a couple of them per
> snapshot, since we only takes snapshot for the active ones.
? Do not understand here, you can have any number of applications with
GPU objects ? And thus there is no bound on the number of PID. Please
consider desktop too, i do not know what kind of limitation android
impose.
> For the 3rd level "type_name", the type name will be one of the GPU memory
> object types in lower case, and the value will be a comma separated
> sequence of size values for all the allocations under that specific type.
>
> We especially would like some comments on this part. For the GPU memory
> object types, we defined 9 different types for Android:
> (1) UNKNOWN // not accounted for in any other category
> (2) SHADER // shader binaries
> (3) COMMAND // allocations which have a lifetime similar to a
> VkCommandBuffer
> (4) VULKAN // backing for VkDeviceMemory
> (5) GL_TEXTURE // GL Texture and RenderBuffer
> (6) GL_BUFFER // GL Buffer
> (7) QUERY // backing for query
> (8) DESCRIPTOR // allocations which have a lifetime similar to a
> VkDescriptorSet
> (9) TRANSIENT // random transient things that the driver needs
>
> We are wondering if those type enumerations make sense to the upstream side
> as well, or maybe we just deal with our own different type sets. Cuz on the
> Android side, we'll just read those nodes named after the types we defined
> in the sysfs node structure.
See my above point of open source driver and kernel being unaware
of the allocation purpose and use.
Cheers,
Jérôme
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2019-10-28 15:26 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-25 18:35 Proposal to report GPU private memory allocations with sysfs nodes [plain text version] Yiwei Zhang
2019-10-28 15:26 ` Jerome Glisse [this message]
2019-10-28 18:33 ` Yiwei Zhang
2019-10-29 1:19 ` Yiwei Zhang
2019-10-31 5:23 ` Kenny Ho
2019-10-31 16:59 ` Yiwei Zhang
2019-10-31 17:57 ` Kenny Ho
2019-11-01 8:36 ` Pekka Paalanen
2019-11-04 19:34 ` Yiwei Zhang
2019-11-05 9:47 ` Daniel Vetter
2019-11-05 19:45 ` Yiwei Zhang
2019-11-06 9:56 ` Daniel Vetter
2019-11-06 16:55 ` Rob Clark
2019-11-06 19:21 ` Yiwei Zhang
2019-11-12 18:17 ` Yiwei Zhang
2019-11-12 20:18 ` Jerome Glisse
2019-11-15 1:02 ` Yiwei Zhang
2019-12-13 22:09 ` Yiwei Zhang
2019-12-19 16:18 ` Rohan Garg
2019-12-19 18:52 ` Yiwei Zhang
2020-01-06 10:46 ` Rohan Garg
2020-01-06 20:47 ` Yiwei Zhang
2020-03-20 12:07 ` Rohan Garg
2020-03-20 21:35 ` Yiwei Zhang
2019-10-29 8:33 ` Pekka Paalanen
2019-10-30 21:03 ` Yiwei Zhang
2019-10-30 22:06 ` Yiwei Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191028152602.GA5057@redhat.com \
--to=jglisse@redhat.com \
--cc=adelva@google.com \
--cc=chrisforbes@google.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=kernel-team@android.com \
--cc=kraxel@redhat.com \
--cc=prahladk@google.com \
--cc=seanpaul@chromium.org \
--cc=zzyiwei@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).