Daniel Vetter
2021-May-19 18:23 UTC
[Nouveau] [Intel-gfx] [PATCH 0/7] Per client engine busyness
On Wed, May 19, 2021 at 6:16 PM Tvrtko Ursulin <tvrtko.ursulin at linux.intel.com> wrote:> > > On 18/05/2021 10:40, Tvrtko Ursulin wrote: > > > > On 18/05/2021 10:16, Daniel Stone wrote: > >> Hi, > >> > >> On Tue, 18 May 2021 at 10:09, Tvrtko Ursulin > >> <tvrtko.ursulin at linux.intel.com> wrote: > >>> I was just wondering if stat(2) and a chrdev major check would be a > >>> solid criteria to more efficiently (compared to parsing the text > >>> content) detect drm files while walking procfs. > >> > >> Maybe I'm missing something, but is the per-PID walk actually a > >> measurable performance issue rather than just a bit unpleasant? > > > > Per pid and per each open fd. > > > > As said in the other thread what bothers me a bit in this scheme is that > > the cost of obtaining GPU usage scales based on non-GPU criteria. > > > > For use case of a top-like tool which shows all processes this is a > > smaller additional cost, but then for a gpu-top like tool it is somewhat > > higher. > > To further expand, not only cost would scale per pid multiplies per open > fd, but to detect which of the fds are DRM I see these three options: > > 1) Open and parse fdinfo. > 2) Name based matching ie /dev/dri/.. something. > 3) Stat the symlink target and check for DRM major.stat with symlink following should be plenty fast.> All sound quite sub-optimal to me. > > Name based matching is probably the least evil on system resource usage > (Keeping the dentry cache too hot? Too many syscalls?), even though > fundamentally I don't it is the right approach. > > What happens with dup(2) is another question.We need benchmark numbers showing that on anything remotely realistic it's an actual problem. Until we've demonstrated it's a real problem we don't need to solve it. E.g. top with any sorting enabled also parses way more than it displays on every update. It seems to be doing Just Fine (tm).> Does anyone have any feedback on the /proc/<pid>/gpu idea at all?When we know we have a problem to solve we can take a look at solutions. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch
Nieto, David M
2021-May-19 23:17 UTC
[Nouveau] [Intel-gfx] [PATCH 0/7] Per client engine busyness
[AMD Official Use Only] Parsing over 550 processes for fdinfo is taking between 40-100ms single threaded in a 2GHz skylake IBRS within a VM using simple string comparisons and DIRent parsing. And that is pretty much the worst case scenario with some more optimized implementations. David ________________________________ From: Daniel Vetter <daniel at ffwll.ch> Sent: Wednesday, May 19, 2021 11:23 AM To: Tvrtko Ursulin <tvrtko.ursulin at linux.intel.com> Cc: Daniel Stone <daniel at fooishbar.org>; jhubbard at nvidia.com <jhubbard at nvidia.com>; nouveau at lists.freedesktop.org <nouveau at lists.freedesktop.org>; Intel Graphics Development <Intel-gfx at lists.freedesktop.org>; Maling list - DRI developers <dri-devel at lists.freedesktop.org>; Simon Ser <contact at emersion.fr>; Koenig, Christian <Christian.Koenig at amd.com>; aritger at nvidia.com <aritger at nvidia.com>; Nieto, David M <David.Nieto at amd.com> Subject: Re: [Intel-gfx] [PATCH 0/7] Per client engine busyness On Wed, May 19, 2021 at 6:16 PM Tvrtko Ursulin <tvrtko.ursulin at linux.intel.com> wrote:> > > On 18/05/2021 10:40, Tvrtko Ursulin wrote: > > > > On 18/05/2021 10:16, Daniel Stone wrote: > >> Hi, > >> > >> On Tue, 18 May 2021 at 10:09, Tvrtko Ursulin > >> <tvrtko.ursulin at linux.intel.com> wrote: > >>> I was just wondering if stat(2) and a chrdev major check would be a > >>> solid criteria to more efficiently (compared to parsing the text > >>> content) detect drm files while walking procfs. > >> > >> Maybe I'm missing something, but is the per-PID walk actually a > >> measurable performance issue rather than just a bit unpleasant? > > > > Per pid and per each open fd. > > > > As said in the other thread what bothers me a bit in this scheme is that > > the cost of obtaining GPU usage scales based on non-GPU criteria. > > > > For use case of a top-like tool which shows all processes this is a > > smaller additional cost, but then for a gpu-top like tool it is somewhat > > higher. > > To further expand, not only cost would scale per pid multiplies per open > fd, but to detect which of the fds are DRM I see these three options: > > 1) Open and parse fdinfo. > 2) Name based matching ie /dev/dri/.. something. > 3) Stat the symlink target and check for DRM major.stat with symlink following should be plenty fast.> All sound quite sub-optimal to me. > > Name based matching is probably the least evil on system resource usage > (Keeping the dentry cache too hot? Too many syscalls?), even though > fundamentally I don't it is the right approach. > > What happens with dup(2) is another question.We need benchmark numbers showing that on anything remotely realistic it's an actual problem. Until we've demonstrated it's a real problem we don't need to solve it. E.g. top with any sorting enabled also parses way more than it displays on every update. It seems to be doing Just Fine (tm).> Does anyone have any feedback on the /proc/<pid>/gpu idea at all?When we know we have a problem to solve we can take a look at solutions. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation https://nam11.safelinks.protection.outlook.com/?url=http%3A%2F%2Fblog.ffwll.ch%2F&data=04%7C01%7CDavid.Nieto%40amd.com%7Cf6aea97532cf41f916de08d91af32cc1%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637570453997158377%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=4CFrY9qWbJREcIcSzeO9KIn2P%2Fw6k%2BYdNlh6rdS%2BEh4%3D&reserved=0 -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20210519/a35edad4/attachment-0001.htm>
Tvrtko Ursulin
2021-May-20 08:35 UTC
[Nouveau] [Intel-gfx] [PATCH 0/7] Per client engine busyness
On 19/05/2021 19:23, Daniel Vetter wrote:> On Wed, May 19, 2021 at 6:16 PM Tvrtko Ursulin > <tvrtko.ursulin at linux.intel.com> wrote: >> >> >> On 18/05/2021 10:40, Tvrtko Ursulin wrote: >>> >>> On 18/05/2021 10:16, Daniel Stone wrote: >>>> Hi, >>>> >>>> On Tue, 18 May 2021 at 10:09, Tvrtko Ursulin >>>> <tvrtko.ursulin at linux.intel.com> wrote: >>>>> I was just wondering if stat(2) and a chrdev major check would be a >>>>> solid criteria to more efficiently (compared to parsing the text >>>>> content) detect drm files while walking procfs. >>>> >>>> Maybe I'm missing something, but is the per-PID walk actually a >>>> measurable performance issue rather than just a bit unpleasant? >>> >>> Per pid and per each open fd. >>> >>> As said in the other thread what bothers me a bit in this scheme is that >>> the cost of obtaining GPU usage scales based on non-GPU criteria. >>> >>> For use case of a top-like tool which shows all processes this is a >>> smaller additional cost, but then for a gpu-top like tool it is somewhat >>> higher. >> >> To further expand, not only cost would scale per pid multiplies per open >> fd, but to detect which of the fds are DRM I see these three options: >> >> 1) Open and parse fdinfo. >> 2) Name based matching ie /dev/dri/.. something. >> 3) Stat the symlink target and check for DRM major. > > stat with symlink following should be plenty fast.Maybe. I don't think my point about keeping the dentry cache needlessly hot is getting through at all. On my lightly loaded desktop: $ sudo lsof | wc -l 599551 $ sudo lsof | grep "/dev/dri/" | wc -l 1965 It's going to look up ~600k pointless dentries in every iteration. Just to find a handful of DRM ones. Hard to say if that is better or worse than just parsing fdinfo text for all files. Will see.>> All sound quite sub-optimal to me. >> >> Name based matching is probably the least evil on system resource usage >> (Keeping the dentry cache too hot? Too many syscalls?), even though >> fundamentally I don't it is the right approach. >> >> What happens with dup(2) is another question. > > We need benchmark numbers showing that on anything remotely realistic > it's an actual problem. Until we've demonstrated it's a real problem > we don't need to solve it.Point about dup(2) is whether it is possible to distinguish the duplicated fds in fdinfo. If a DRM client dupes, and we found two fdinfos each saying client is using 20% GPU, we don't want to add it up to 40%.> E.g. top with any sorting enabled also parses way more than it > displays on every update. It seems to be doing Just Fine (tm).Ha, perceptions differ. I see it using 4-5% while building the kernel on a Xeon server which I find quite a lot. :)>> Does anyone have any feedback on the /proc/<pid>/gpu idea at all? > > When we know we have a problem to solve we can take a look at solutions.Yes I don't think the problem would be to add a better solution later, so happy to try the fdinfo first. I am simply pointing out a fundamental design inefficiency. Even if machines are getting faster and faster I don't think that should be an excuse to waste more and more under the hood, when a more efficient solution can be designed from the start. Regards, Tvrtko