dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* Proposal to report GPU private memory allocations with sysfs nodes [plain text version]
@ 2019-10-25 18:35 Yiwei Zhang
  2019-10-28 15:26 ` Jerome Glisse
  0 siblings, 1 reply; 27+ messages in thread
From: Yiwei Zhang @ 2019-10-25 18:35 UTC (permalink / raw)
  To: dri-devel
  Cc: Alistair Delva, Prahlad Kilambi, Sean Paul, kraxel, Chris Forbes,
	kernel-team


[-- Attachment #1.1: Type: text/plain, Size: 2742 bytes --]

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.

--- 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".

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.

For the 2nd level "pid", there are usually just a couple of them per
snapshot, since we only takes snapshot for the active ones.

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.

Looking forward to any concerns/comments/suggestions!

Best regards,
Yiwei

[-- Attachment #1.2: Type: text/html, Size: 3327 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2020-03-21 10:45 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
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

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).