* [PATCH] drm/amdgpu: Add uid info to process BO list @ 2020-09-21 19:18 Madhav Chauhan 2020-09-21 19:24 ` Christian König 0 siblings, 1 reply; 8+ messages in thread From: Madhav Chauhan @ 2020-09-21 19:18 UTC (permalink / raw) To: amd-gfx Cc: kishore.surampalli, mihir.patel, shashank.sharma, Madhav Chauhan, alexander.deucher, athar.saleem UID is helpful while doing analysis of BO allocated by a process. Signed-off-by: Madhav Chauhan <madhav.chauhan@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c index f4c2e2e75b8f..c1982349ec7b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c @@ -892,6 +892,7 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) struct drm_info_node *node = (struct drm_info_node *)m->private; struct drm_device *dev = node->minor->dev; struct drm_file *file; + kuid_t uid; int r; r = mutex_lock_interruptible(&dev->filelist_mutex); @@ -909,7 +910,10 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) */ rcu_read_lock(); task = pid_task(file->pid, PIDTYPE_PID); - seq_printf(m, "pid %8d command %s:\n", pid_nr(file->pid), + uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID; + seq_printf(m, "pid %8d uid %5d command %s:\n", + pid_nr(file->pid), + from_kuid_munged(seq_user_ns(m), uid), task ? task->comm : "<unknown>"); rcu_read_unlock(); -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] drm/amdgpu: Add uid info to process BO list 2020-09-21 19:18 [PATCH] drm/amdgpu: Add uid info to process BO list Madhav Chauhan @ 2020-09-21 19:24 ` Christian König 2020-09-21 19:55 ` Chauhan, Madhav 0 siblings, 1 reply; 8+ messages in thread From: Christian König @ 2020-09-21 19:24 UTC (permalink / raw) To: Madhav Chauhan, amd-gfx Cc: alexander.deucher, kishore.surampalli, mihir.patel, athar.saleem, shashank.sharma Am 21.09.20 um 21:18 schrieb Madhav Chauhan: > UID is helpful while doing analysis of BO allocated > by a process. Looks like a bit overkill to me, why not get the uid from the process info? Christian. > > Signed-off-by: Madhav Chauhan <madhav.chauhan@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > index f4c2e2e75b8f..c1982349ec7b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > @@ -892,6 +892,7 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) > struct drm_info_node *node = (struct drm_info_node *)m->private; > struct drm_device *dev = node->minor->dev; > struct drm_file *file; > + kuid_t uid; > int r; > > r = mutex_lock_interruptible(&dev->filelist_mutex); > @@ -909,7 +910,10 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) > */ > rcu_read_lock(); > task = pid_task(file->pid, PIDTYPE_PID); > - seq_printf(m, "pid %8d command %s:\n", pid_nr(file->pid), > + uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID; > + seq_printf(m, "pid %8d uid %5d command %s:\n", > + pid_nr(file->pid), > + from_kuid_munged(seq_user_ns(m), uid), > task ? task->comm : "<unknown>"); > rcu_read_unlock(); > _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH] drm/amdgpu: Add uid info to process BO list 2020-09-21 19:24 ` Christian König @ 2020-09-21 19:55 ` Chauhan, Madhav 2020-09-22 6:44 ` Christian König 0 siblings, 1 reply; 8+ messages in thread From: Chauhan, Madhav @ 2020-09-21 19:55 UTC (permalink / raw) To: Koenig, Christian, amd-gfx Cc: Deucher, Alexander, Surampalli, Kishore, Patel, Mihir, Saleem, Athar, Sharma, Shashank [AMD Public Use] -----Original Message----- From: Christian König <ckoenig.leichtzumerken@gmail.com> Sent: Tuesday, September 22, 2020 12:54 AM To: Chauhan, Madhav <Madhav.Chauhan@amd.com>; amd-gfx@lists.freedesktop.org Cc: Surampalli, Kishore <Kishore.Surampalli@amd.com>; Patel, Mihir <Mihir.Patel@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Saleem, Athar <Athar.Saleem@amd.com> Subject: Re: [PATCH] drm/amdgpu: Add uid info to process BO list Am 21.09.20 um 21:18 schrieb Madhav Chauhan: > UID is helpful while doing analysis of BO allocated by a process. Looks like a bit overkill to me, why not get the uid from the process info? Not sure if I got your point , but used the similar method implemented at drm level inside drm_debugfs.c. Thanks Regards, Madhav Christian. > > Signed-off-by: Madhav Chauhan <madhav.chauhan@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > index f4c2e2e75b8f..c1982349ec7b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > @@ -892,6 +892,7 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) > struct drm_info_node *node = (struct drm_info_node *)m->private; > struct drm_device *dev = node->minor->dev; > struct drm_file *file; > + kuid_t uid; > int r; > > r = mutex_lock_interruptible(&dev->filelist_mutex); > @@ -909,7 +910,10 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) > */ > rcu_read_lock(); > task = pid_task(file->pid, PIDTYPE_PID); > - seq_printf(m, "pid %8d command %s:\n", pid_nr(file->pid), > + uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID; > + seq_printf(m, "pid %8d uid %5d command %s:\n", > + pid_nr(file->pid), > + from_kuid_munged(seq_user_ns(m), uid), > task ? task->comm : "<unknown>"); > rcu_read_unlock(); > _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] drm/amdgpu: Add uid info to process BO list 2020-09-21 19:55 ` Chauhan, Madhav @ 2020-09-22 6:44 ` Christian König 2020-09-22 10:38 ` Chauhan, Madhav 0 siblings, 1 reply; 8+ messages in thread From: Christian König @ 2020-09-22 6:44 UTC (permalink / raw) To: Chauhan, Madhav, amd-gfx Cc: Deucher, Alexander, Surampalli, Kishore, Patel, Mihir, Saleem, Athar, Sharma, Shashank Am 21.09.20 um 21:55 schrieb Chauhan, Madhav: > [AMD Public Use] > > -----Original Message----- > From: Christian König <ckoenig.leichtzumerken@gmail.com> > Sent: Tuesday, September 22, 2020 12:54 AM > To: Chauhan, Madhav <Madhav.Chauhan@amd.com>; amd-gfx@lists.freedesktop.org > Cc: Surampalli, Kishore <Kishore.Surampalli@amd.com>; Patel, Mihir <Mihir.Patel@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Saleem, Athar <Athar.Saleem@amd.com> > Subject: Re: [PATCH] drm/amdgpu: Add uid info to process BO list > > Am 21.09.20 um 21:18 schrieb Madhav Chauhan: >> UID is helpful while doing analysis of BO allocated by a process. > Looks like a bit overkill to me, why not get the uid from the process info? > > Not sure if I got your point , but used the similar method implemented at drm level inside drm_debugfs.c. Thanks Good argument, but I'm not sure if we should duplicate that here. What do you need this for? Christian. > > Regards, > Madhav > > Christian. > >> Signed-off-by: Madhav Chauhan <madhav.chauhan@amd.com> >> --- >> drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 6 +++++- >> 1 file changed, 5 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >> index f4c2e2e75b8f..c1982349ec7b 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >> @@ -892,6 +892,7 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) >> struct drm_info_node *node = (struct drm_info_node *)m->private; >> struct drm_device *dev = node->minor->dev; >> struct drm_file *file; >> + kuid_t uid; >> int r; >> >> r = mutex_lock_interruptible(&dev->filelist_mutex); >> @@ -909,7 +910,10 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) >> */ >> rcu_read_lock(); >> task = pid_task(file->pid, PIDTYPE_PID); >> - seq_printf(m, "pid %8d command %s:\n", pid_nr(file->pid), >> + uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID; >> + seq_printf(m, "pid %8d uid %5d command %s:\n", >> + pid_nr(file->pid), >> + from_kuid_munged(seq_user_ns(m), uid), >> task ? task->comm : "<unknown>"); >> rcu_read_unlock(); >> _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH] drm/amdgpu: Add uid info to process BO list 2020-09-22 6:44 ` Christian König @ 2020-09-22 10:38 ` Chauhan, Madhav 2020-09-22 12:54 ` Christian König 0 siblings, 1 reply; 8+ messages in thread From: Chauhan, Madhav @ 2020-09-22 10:38 UTC (permalink / raw) To: Koenig, Christian, amd-gfx Cc: Deucher, Alexander, Surampalli, Kishore, Patel, Mihir, Saleem, Athar, Sharma, Shashank [AMD Public Use] -----Original Message----- From: Koenig, Christian <Christian.Koenig@amd.com> Sent: Tuesday, September 22, 2020 12:15 PM To: Chauhan, Madhav <Madhav.Chauhan@amd.com>; amd-gfx@lists.freedesktop.org Cc: Surampalli, Kishore <Kishore.Surampalli@amd.com>; Patel, Mihir <Mihir.Patel@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Saleem, Athar <Athar.Saleem@amd.com> Subject: Re: [PATCH] drm/amdgpu: Add uid info to process BO list Am 21.09.20 um 21:55 schrieb Chauhan, Madhav: > [AMD Public Use] > > -----Original Message----- > From: Christian König <ckoenig.leichtzumerken@gmail.com> > Sent: Tuesday, September 22, 2020 12:54 AM > To: Chauhan, Madhav <Madhav.Chauhan@amd.com>; > amd-gfx@lists.freedesktop.org > Cc: Surampalli, Kishore <Kishore.Surampalli@amd.com>; Patel, Mihir > <Mihir.Patel@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com>; > Deucher, Alexander <Alexander.Deucher@amd.com>; Saleem, Athar > <Athar.Saleem@amd.com> > Subject: Re: [PATCH] drm/amdgpu: Add uid info to process BO list > > Am 21.09.20 um 21:18 schrieb Madhav Chauhan: >> UID is helpful while doing analysis of BO allocated by a process. > Looks like a bit overkill to me, why not get the uid from the process info? > > Not sure if I got your point , but used the similar method implemented > at drm level inside drm_debugfs.c. Thanks Good argument, but I'm not sure if we should duplicate that here. What do you need this for? Thanks, We need details of BOs allocated by a process and associated UID so that we can do memory perf analysis using some scripts To find the top consumer of GPU memory and see if those application can be optimized. Clients information at DRM level doesn’t print list of BO per process and since that is handled by amdgpu driver specific Functions. So all the BO list information at one place is really useful and needed by our customers as various other vendors Already provide this. Regards, Madhav Christian. > > Regards, > Madhav > > Christian. > >> Signed-off-by: Madhav Chauhan <madhav.chauhan@amd.com> >> --- >> drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 6 +++++- >> 1 file changed, 5 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >> index f4c2e2e75b8f..c1982349ec7b 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >> @@ -892,6 +892,7 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) >> struct drm_info_node *node = (struct drm_info_node *)m->private; >> struct drm_device *dev = node->minor->dev; >> struct drm_file *file; >> + kuid_t uid; >> int r; >> >> r = mutex_lock_interruptible(&dev->filelist_mutex); >> @@ -909,7 +910,10 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) >> */ >> rcu_read_lock(); >> task = pid_task(file->pid, PIDTYPE_PID); >> - seq_printf(m, "pid %8d command %s:\n", pid_nr(file->pid), >> + uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID; >> + seq_printf(m, "pid %8d uid %5d command %s:\n", >> + pid_nr(file->pid), >> + from_kuid_munged(seq_user_ns(m), uid), >> task ? task->comm : "<unknown>"); >> rcu_read_unlock(); >> _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] drm/amdgpu: Add uid info to process BO list 2020-09-22 10:38 ` Chauhan, Madhav @ 2020-09-22 12:54 ` Christian König 2020-09-22 14:39 ` Chauhan, Madhav 0 siblings, 1 reply; 8+ messages in thread From: Christian König @ 2020-09-22 12:54 UTC (permalink / raw) To: Chauhan, Madhav, Koenig, Christian, amd-gfx Cc: Deucher, Alexander, Surampalli, Kishore, Patel, Mihir, Saleem, Athar, Sharma, Shashank Am 22.09.20 um 12:38 schrieb Chauhan, Madhav: > [AMD Public Use] > > -----Original Message----- > From: Koenig, Christian <Christian.Koenig@amd.com> > Sent: Tuesday, September 22, 2020 12:15 PM > To: Chauhan, Madhav <Madhav.Chauhan@amd.com>; amd-gfx@lists.freedesktop.org > Cc: Surampalli, Kishore <Kishore.Surampalli@amd.com>; Patel, Mihir <Mihir.Patel@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Saleem, Athar <Athar.Saleem@amd.com> > Subject: Re: [PATCH] drm/amdgpu: Add uid info to process BO list > > Am 21.09.20 um 21:55 schrieb Chauhan, Madhav: >> [AMD Public Use] >> >> -----Original Message----- >> From: Christian König <ckoenig.leichtzumerken@gmail.com> >> Sent: Tuesday, September 22, 2020 12:54 AM >> To: Chauhan, Madhav <Madhav.Chauhan@amd.com>; >> amd-gfx@lists.freedesktop.org >> Cc: Surampalli, Kishore <Kishore.Surampalli@amd.com>; Patel, Mihir >> <Mihir.Patel@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com>; >> Deucher, Alexander <Alexander.Deucher@amd.com>; Saleem, Athar >> <Athar.Saleem@amd.com> >> Subject: Re: [PATCH] drm/amdgpu: Add uid info to process BO list >> >> Am 21.09.20 um 21:18 schrieb Madhav Chauhan: >>> UID is helpful while doing analysis of BO allocated by a process. >> Looks like a bit overkill to me, why not get the uid from the process info? >> >> Not sure if I got your point , but used the similar method implemented >> at drm level inside drm_debugfs.c. Thanks > Good argument, but I'm not sure if we should duplicate that here. What do you need this for? > > Thanks, We need details of BOs allocated by a process and associated UID so that we can do memory perf analysis using some scripts > To find the top consumer of GPU memory and see if those application can be optimized. > > Clients information at DRM level doesn’t print list of BO per process and since that is handled by amdgpu driver specific > Functions. So all the BO list information at one place is really useful and needed by our customers as various other vendors > Already provide this. Well that is exactly the explanation I didn't want to hear :( See both the drm client list as well as the amdgpu GEM info are only debugfs files and only intended for providing some information for debugging and are not 100% reliable for the use case you have here. The first problem is that on modern installations the file descriptor is often opened by the X server instead of the application. So for example you end up with: > pid 1382 command Xorg: > 0x00000001: 2097152 byte VRAM @ 0x0000002a00 > 0x00000002: 4096 byte GTT @ 0x00000006c7 > .... > 0x00000090: 266240 byte VRAM @ 0x000005e800 > 0x00000091: 2097152 byte VRAM @ 0x000004e200 > 0x00000092: 2097152 byte GTT > pid 1382 command Xorg: > 0x00000001: 2097152 byte VRAM @ 0x0000002800 > ... Then next problem is that the amdgpu_gem_info is completely inaccurate regarding the used memory of an application, since the same BO is sometimes opened multiple times. That's also the reason why we don't provide a total of the consumed memory. It basically just informs you which handle is what. Then last the debugfs files are not a stable interface and not meant to be consumed by scripts and/or frontend applications. You should instead use sysfs for this. Regards, Christian. > > Regards, > Madhav > > Christian. > >> Regards, >> Madhav >> >> Christian. >> >>> Signed-off-by: Madhav Chauhan <madhav.chauhan@amd.com> >>> --- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 6 +++++- >>> 1 file changed, 5 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >>> index f4c2e2e75b8f..c1982349ec7b 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >>> @@ -892,6 +892,7 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) >>> struct drm_info_node *node = (struct drm_info_node *)m->private; >>> struct drm_device *dev = node->minor->dev; >>> struct drm_file *file; >>> + kuid_t uid; >>> int r; >>> >>> r = mutex_lock_interruptible(&dev->filelist_mutex); >>> @@ -909,7 +910,10 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) >>> */ >>> rcu_read_lock(); >>> task = pid_task(file->pid, PIDTYPE_PID); >>> - seq_printf(m, "pid %8d command %s:\n", pid_nr(file->pid), >>> + uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID; >>> + seq_printf(m, "pid %8d uid %5d command %s:\n", >>> + pid_nr(file->pid), >>> + from_kuid_munged(seq_user_ns(m), uid), >>> task ? task->comm : "<unknown>"); >>> rcu_read_unlock(); >>> > _______________________________________________ > amd-gfx mailing list > amd-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH] drm/amdgpu: Add uid info to process BO list 2020-09-22 12:54 ` Christian König @ 2020-09-22 14:39 ` Chauhan, Madhav 2020-09-22 15:02 ` Alex Deucher 0 siblings, 1 reply; 8+ messages in thread From: Chauhan, Madhav @ 2020-09-22 14:39 UTC (permalink / raw) To: Koenig, Christian, amd-gfx Cc: Deucher, Alexander, Surampalli, Kishore, Patel, Mihir, Saleem, Athar, Sharma, Shashank [AMD Public Use] -----Original Message----- From: Christian König <ckoenig.leichtzumerken@gmail.com> Sent: Tuesday, September 22, 2020 6:25 PM To: Chauhan, Madhav <Madhav.Chauhan@amd.com>; Koenig, Christian <Christian.Koenig@amd.com>; amd-gfx@lists.freedesktop.org Cc: Deucher, Alexander <Alexander.Deucher@amd.com>; Surampalli, Kishore <Kishore.Surampalli@amd.com>; Patel, Mihir <Mihir.Patel@amd.com>; Saleem, Athar <Athar.Saleem@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com> Subject: Re: [PATCH] drm/amdgpu: Add uid info to process BO list Am 22.09.20 um 12:38 schrieb Chauhan, Madhav: > [AMD Public Use] > > -----Original Message----- > From: Koenig, Christian <Christian.Koenig@amd.com> > Sent: Tuesday, September 22, 2020 12:15 PM > To: Chauhan, Madhav <Madhav.Chauhan@amd.com>; > amd-gfx@lists.freedesktop.org > Cc: Surampalli, Kishore <Kishore.Surampalli@amd.com>; Patel, Mihir > <Mihir.Patel@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com>; > Deucher, Alexander <Alexander.Deucher@amd.com>; Saleem, Athar > <Athar.Saleem@amd.com> > Subject: Re: [PATCH] drm/amdgpu: Add uid info to process BO list > > Am 21.09.20 um 21:55 schrieb Chauhan, Madhav: >> [AMD Public Use] >> >> -----Original Message----- >> From: Christian König <ckoenig.leichtzumerken@gmail.com> >> Sent: Tuesday, September 22, 2020 12:54 AM >> To: Chauhan, Madhav <Madhav.Chauhan@amd.com>; >> amd-gfx@lists.freedesktop.org >> Cc: Surampalli, Kishore <Kishore.Surampalli@amd.com>; Patel, Mihir >> <Mihir.Patel@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com>; >> Deucher, Alexander <Alexander.Deucher@amd.com>; Saleem, Athar >> <Athar.Saleem@amd.com> >> Subject: Re: [PATCH] drm/amdgpu: Add uid info to process BO list >> >> Am 21.09.20 um 21:18 schrieb Madhav Chauhan: >>> UID is helpful while doing analysis of BO allocated by a process. >> Looks like a bit overkill to me, why not get the uid from the process info? >> >> Not sure if I got your point , but used the similar method >> implemented at drm level inside drm_debugfs.c. Thanks > Good argument, but I'm not sure if we should duplicate that here. What do you need this for? > > Thanks, We need details of BOs allocated by a process and associated > UID so that we can do memory perf analysis using some scripts To find the top consumer of GPU memory and see if those application can be optimized. > > Clients information at DRM level doesn’t print list of BO per process > and since that is handled by amdgpu driver specific Functions. So all > the BO list information at one place is really useful and needed by our customers as various other vendors Already provide this. Well that is exactly the explanation I didn't want to hear :( See both the drm client list as well as the amdgpu GEM info are only debugfs files and only intended for providing some information for debugging and are not 100% reliable for the use case you have here. The first problem is that on modern installations the file descriptor is often opened by the X server instead of the application. So for example you end up with: > pid 1382 command Xorg: > 0x00000001: 2097152 byte VRAM @ 0x0000002a00 > 0x00000002: 4096 byte GTT @ 0x00000006c7 .... > 0x00000090: 266240 byte VRAM @ 0x000005e800 > 0x00000091: 2097152 byte VRAM @ 0x000004e200 > 0x00000092: 2097152 byte GTT pid 1382 command Xorg: > 0x00000001: 2097152 byte VRAM @ 0x0000002800 ... Then next problem is that the amdgpu_gem_info is completely inaccurate regarding the used memory of an application, since the same BO is sometimes opened multiple times. That's also the reason why we don't provide a total of the consumed memory. It basically just informs you which handle is what. Then last the debugfs files are not a stable interface and not meant to be consumed by scripts and/or frontend applications. You should instead use sysfs for this. Thanks for clarifying. UID should remain consistent even though X Server opens device on behalf of App?? Do you mean we may have entry for same BO inside file1->object_idr and file2->object_idr ?? So which interface inside sysfs/ we need to use to get: - Total Memory consumed by an application/pid - Details of BO like size, domain (VRAM/GTT) etc per application/pid?? Regards, Madhav Regards, Christian. > > Regards, > Madhav > > Christian. > >> Regards, >> Madhav >> >> Christian. >> >>> Signed-off-by: Madhav Chauhan <madhav.chauhan@amd.com> >>> --- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 6 +++++- >>> 1 file changed, 5 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >>> index f4c2e2e75b8f..c1982349ec7b 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >>> @@ -892,6 +892,7 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) >>> struct drm_info_node *node = (struct drm_info_node *)m->private; >>> struct drm_device *dev = node->minor->dev; >>> struct drm_file *file; >>> + kuid_t uid; >>> int r; >>> >>> r = mutex_lock_interruptible(&dev->filelist_mutex); >>> @@ -909,7 +910,10 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) >>> */ >>> rcu_read_lock(); >>> task = pid_task(file->pid, PIDTYPE_PID); >>> - seq_printf(m, "pid %8d command %s:\n", pid_nr(file->pid), >>> + uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID; >>> + seq_printf(m, "pid %8d uid %5d command %s:\n", >>> + pid_nr(file->pid), >>> + from_kuid_munged(seq_user_ns(m), uid), >>> task ? task->comm : "<unknown>"); >>> rcu_read_unlock(); >>> > _______________________________________________ > amd-gfx mailing list > amd-gfx@lists.freedesktop.org > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flist > s.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=02%7C01%7CMa > dhav.Chauhan%40amd.com%7C13036a57ccd2478eebb108d85ef6b0e8%7C3dd8961fe4 > 884e608e11a82d994e183d%7C0%7C0%7C637363760926411977&sdata=XORY%2Fh > iAOLlde1xhc0tUd%2FTQlCyG2cqvVH2Jn%2FiPtF8%3D&reserved=0 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] drm/amdgpu: Add uid info to process BO list 2020-09-22 14:39 ` Chauhan, Madhav @ 2020-09-22 15:02 ` Alex Deucher 0 siblings, 0 replies; 8+ messages in thread From: Alex Deucher @ 2020-09-22 15:02 UTC (permalink / raw) To: Chauhan, Madhav Cc: Surampalli, Kishore, Patel, Mihir, Sharma, Shashank, amd-gfx, Deucher, Alexander, Koenig, Christian, Saleem, Athar On Tue, Sep 22, 2020 at 10:39 AM Chauhan, Madhav <Madhav.Chauhan@amd.com> wrote: > > [AMD Public Use] > > -----Original Message----- > From: Christian König <ckoenig.leichtzumerken@gmail.com> > Sent: Tuesday, September 22, 2020 6:25 PM > To: Chauhan, Madhav <Madhav.Chauhan@amd.com>; Koenig, Christian <Christian.Koenig@amd.com>; amd-gfx@lists.freedesktop.org > Cc: Deucher, Alexander <Alexander.Deucher@amd.com>; Surampalli, Kishore <Kishore.Surampalli@amd.com>; Patel, Mihir <Mihir.Patel@amd.com>; Saleem, Athar <Athar.Saleem@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com> > Subject: Re: [PATCH] drm/amdgpu: Add uid info to process BO list > > Am 22.09.20 um 12:38 schrieb Chauhan, Madhav: > > [AMD Public Use] > > > > -----Original Message----- > > From: Koenig, Christian <Christian.Koenig@amd.com> > > Sent: Tuesday, September 22, 2020 12:15 PM > > To: Chauhan, Madhav <Madhav.Chauhan@amd.com>; > > amd-gfx@lists.freedesktop.org > > Cc: Surampalli, Kishore <Kishore.Surampalli@amd.com>; Patel, Mihir > > <Mihir.Patel@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com>; > > Deucher, Alexander <Alexander.Deucher@amd.com>; Saleem, Athar > > <Athar.Saleem@amd.com> > > Subject: Re: [PATCH] drm/amdgpu: Add uid info to process BO list > > > > Am 21.09.20 um 21:55 schrieb Chauhan, Madhav: > >> [AMD Public Use] > >> > >> -----Original Message----- > >> From: Christian König <ckoenig.leichtzumerken@gmail.com> > >> Sent: Tuesday, September 22, 2020 12:54 AM > >> To: Chauhan, Madhav <Madhav.Chauhan@amd.com>; > >> amd-gfx@lists.freedesktop.org > >> Cc: Surampalli, Kishore <Kishore.Surampalli@amd.com>; Patel, Mihir > >> <Mihir.Patel@amd.com>; Sharma, Shashank <Shashank.Sharma@amd.com>; > >> Deucher, Alexander <Alexander.Deucher@amd.com>; Saleem, Athar > >> <Athar.Saleem@amd.com> > >> Subject: Re: [PATCH] drm/amdgpu: Add uid info to process BO list > >> > >> Am 21.09.20 um 21:18 schrieb Madhav Chauhan: > >>> UID is helpful while doing analysis of BO allocated by a process. > >> Looks like a bit overkill to me, why not get the uid from the process info? > >> > >> Not sure if I got your point , but used the similar method > >> implemented at drm level inside drm_debugfs.c. Thanks > > Good argument, but I'm not sure if we should duplicate that here. What do you need this for? > > > > Thanks, We need details of BOs allocated by a process and associated > > UID so that we can do memory perf analysis using some scripts To find the top consumer of GPU memory and see if those application can be optimized. > > > > Clients information at DRM level doesn’t print list of BO per process > > and since that is handled by amdgpu driver specific Functions. So all > > the BO list information at one place is really useful and needed by our customers as various other vendors Already provide this. > > Well that is exactly the explanation I didn't want to hear :( > > See both the drm client list as well as the amdgpu GEM info are only debugfs files and only intended for providing some information for debugging and are not 100% reliable for the use case you have here. > > The first problem is that on modern installations the file descriptor is often opened by the X server instead of the application. > > So for example you end up with: > > pid 1382 command Xorg: > > 0x00000001: 2097152 byte VRAM @ 0x0000002a00 > > 0x00000002: 4096 byte GTT @ 0x00000006c7 .... > > 0x00000090: 266240 byte VRAM @ 0x000005e800 > > 0x00000091: 2097152 byte VRAM @ 0x000004e200 > > 0x00000092: 2097152 byte GTT > > pid 1382 command Xorg: > > 0x00000001: 2097152 byte VRAM @ 0x0000002800 ... > > Then next problem is that the amdgpu_gem_info is completely inaccurate regarding the used memory of an application, since the same BO is sometimes opened multiple times. That's also the reason why we don't provide a total of the consumed memory. It basically just informs you which handle is what. > > Then last the debugfs files are not a stable interface and not meant to be consumed by scripts and/or frontend applications. You should instead use sysfs for this. > > Thanks for clarifying. > UID should remain consistent even though X Server opens device on behalf of App?? > Do you mean we may have entry for same BO inside file1->object_idr and file2->object_idr ?? > > So which interface inside sysfs/ we need to use to get: > - Total Memory consumed by an application/pid > - Details of BO like size, domain (VRAM/GTT) etc per application/pid?? Whether you use this interface or another, it's not clear how you should do the accounting for shared buffers. Alex > > Regards, > Madhav > > Regards, > Christian. > > > > > Regards, > > Madhav > > > > Christian. > > > >> Regards, > >> Madhav > >> > >> Christian. > >> > >>> Signed-off-by: Madhav Chauhan <madhav.chauhan@amd.com> > >>> --- > >>> drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 6 +++++- > >>> 1 file changed, 5 insertions(+), 1 deletion(-) > >>> > >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > >>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > >>> index f4c2e2e75b8f..c1982349ec7b 100644 > >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > >>> @@ -892,6 +892,7 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) > >>> struct drm_info_node *node = (struct drm_info_node *)m->private; > >>> struct drm_device *dev = node->minor->dev; > >>> struct drm_file *file; > >>> + kuid_t uid; > >>> int r; > >>> > >>> r = mutex_lock_interruptible(&dev->filelist_mutex); > >>> @@ -909,7 +910,10 @@ static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data) > >>> */ > >>> rcu_read_lock(); > >>> task = pid_task(file->pid, PIDTYPE_PID); > >>> - seq_printf(m, "pid %8d command %s:\n", pid_nr(file->pid), > >>> + uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID; > >>> + seq_printf(m, "pid %8d uid %5d command %s:\n", > >>> + pid_nr(file->pid), > >>> + from_kuid_munged(seq_user_ns(m), uid), > >>> task ? task->comm : "<unknown>"); > >>> rcu_read_unlock(); > >>> > > _______________________________________________ > > amd-gfx mailing list > > amd-gfx@lists.freedesktop.org > > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flist > > s.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=02%7C01%7CMa > > dhav.Chauhan%40amd.com%7C13036a57ccd2478eebb108d85ef6b0e8%7C3dd8961fe4 > > 884e608e11a82d994e183d%7C0%7C0%7C637363760926411977&sdata=XORY%2Fh > > iAOLlde1xhc0tUd%2FTQlCyG2cqvVH2Jn%2FiPtF8%3D&reserved=0 > _______________________________________________ > amd-gfx mailing list > amd-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-09-22 15:02 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-09-21 19:18 [PATCH] drm/amdgpu: Add uid info to process BO list Madhav Chauhan 2020-09-21 19:24 ` Christian König 2020-09-21 19:55 ` Chauhan, Madhav 2020-09-22 6:44 ` Christian König 2020-09-22 10:38 ` Chauhan, Madhav 2020-09-22 12:54 ` Christian König 2020-09-22 14:39 ` Chauhan, Madhav 2020-09-22 15:02 ` Alex Deucher
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.