Nouveau Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Intel Graphics Development <Intel-gfx@lists.freedesktop.org>,
	Maling list - DRI developers <dri-devel@lists.freedesktop.org>,
	Daniel Stone <daniel@fooishbar.org>,
	Simon Ser <contact@emersion.fr>,
	"nouveau@lists.freedesktop.org" <nouveau@lists.freedesktop.org>,
	"Koenig, Christian" <Christian.Koenig@amd.com>,
	"Nieto, David M" <David.Nieto@amd.com>
Subject: Re: [Nouveau] [Intel-gfx] [PATCH 0/7] Per client engine busyness
Date: Mon, 24 May 2021 11:48:00 +0100	[thread overview]
Message-ID: <74dd3086-13c5-2fb0-bb66-eec1a061e693@linux.intel.com> (raw)
In-Reply-To: <b1d508ee-6809-f5dc-6539-70cb89ef5e3b@linux.intel.com>


On 20/05/2021 09:35, Tvrtko Ursulin wrote:
> On 19/05/2021 19:23, Daniel Vetter wrote:
>> On Wed, May 19, 2021 at 6:16 PM Tvrtko Ursulin
>> <tvrtko.ursulin@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@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.

CPU usage looks passable under a production kernel (non-debug). Once a 
second refresh period, on a not really that loaded system (115 running 
processes, 3096 open file descriptors as reported by lsof, none of which 
are DRM), results in a system call heavy load:

real    0m55.348s
user    0m0.100s
sys     0m0.319s

Once per second loop is essentially along the lines of:

   for each pid in /proc/<pid>:
     for each fd in /proc/<pid>/fdinfo:
       if fstatat(fd) is drm major:
         read fdinfo text in one sweep and parse it

I'll post the quick intel_gpu_top patch for reference but string parsing 
in C leaves a few things to be desired there.

Regards,

Tvrtko
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

      reply	other threads:[~2021-05-24 10:48 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <c6c61179-5b4b-4e0b-6e57-ec4839ca3268@linux.intel.com>
     [not found] ` <CADnq5_N03pz6GmptzhRnCRQH=qkd4eWuAbuUysHp-A9NZHQMHg@mail.gmail.com>
     [not found]   ` <BYAPR12MB2840AA68BCAEBD9279C6184FF4509@BYAPR12MB2840.namprd12.prod.outlook.com>
     [not found]     ` <39ccc2ef-05d1-d9f0-0639-ea86bef58b80@amd.com>
     [not found]       ` <7d6d09fe-ec85-6aaf-9834-37a49ec7d6c5@linux.intel.com>
     [not found]         ` <9144f63b-953d-2019-742d-6553e09f5b40@amd.com>
     [not found]           ` <22e7d6ea-f2dd-26da-f264-b17aad25af95@linux.intel.com>
     [not found]             ` <b2203d34-2de3-7c58-de2f-bf6fafc3f67c@amd.com>
     [not found]               ` <6cf2f14a-6a16-5ea3-d307-004faad4cc79@linux.intel.com>
     [not found]                 ` <a2b03603-eb3e-7bef-a799-c15cfb1a8e0b@amd.com>
     [not found]                   ` <YKJ+F4KqEiQQYkRz@phenom.ffwll.local>
     [not found]                     ` <BYAPR12MB2840C633CF05C1F29263F5BCF42D9@BYAPR12MB2840.namprd12.prod.outlook.com>
     [not found]                       ` <c85fc53f-d25b-464c-d411-eed4a509a009@linux.intel.com>
     [not found]                         ` <BYAPR12MB28409E25DEFD3DD620E596ABF42D9@BYAPR12MB2840.namprd12.prod.outlook.com>
2021-05-17 18:16                           ` [Nouveau] [PATCH 0/7] Per client engine busyness Nieto, David M
2021-05-17 19:03                             ` Simon Ser
2021-05-18  9:08                               ` Tvrtko Ursulin
2021-05-18  9:16                                 ` Daniel Stone
2021-05-18  9:40                                   ` Tvrtko Ursulin
2021-05-19 16:16                                     ` Tvrtko Ursulin
2021-05-19 18:23                                       ` [Nouveau] [Intel-gfx] " Daniel Vetter
2021-05-19 23:17                                         ` Nieto, David M
2021-05-20 14:11                                           ` Daniel Vetter
2021-05-20 14:12                                             ` Christian König
2021-05-20 14:17                                               ` arabek
2021-05-20  8:35                                         ` Tvrtko Ursulin
2021-05-24 10:48                                           ` Tvrtko Ursulin [this message]

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=74dd3086-13c5-2fb0-bb66-eec1a061e693@linux.intel.com \
    --to=tvrtko.ursulin@linux.intel.com \
    --cc=Christian.Koenig@amd.com \
    --cc=David.Nieto@amd.com \
    --cc=Intel-gfx@lists.freedesktop.org \
    --cc=contact@emersion.fr \
    --cc=daniel@ffwll.ch \
    --cc=daniel@fooishbar.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=nouveau@lists.freedesktop.org \
    /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