[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d1169f34-ccd8-299d-af1f-f45da37556db@suse.de>
Date: Wed, 9 Mar 2022 20:28:01 +0100
From: Thomas Zimmermann <tzimmermann@...e.de>
To: Dmitry Osipenko <dmitry.osipenko@...labora.com>,
David Airlie <airlied@...ux.ie>,
Gerd Hoffmann <kraxel@...hat.com>,
Gurchetan Singh <gurchetansingh@...omium.org>,
Chia-I Wu <olvaffe@...il.com>, Daniel Vetter <daniel@...ll.ch>,
Daniel Almeida <daniel.almeida@...labora.com>,
Gert Wollny <gert.wollny@...labora.com>
Cc: Tomeu Vizoso <tomeu.vizoso@...labora.com>,
linux-kernel@...r.kernel.org,
virtualization@...ts.linux-foundation.org,
Gustavo Padovan <gustavo.padovan@...labora.com>,
dri-devel@...ts.freedesktop.org, Dmitry Osipenko <digetx@...il.com>
Subject: Re: [PATCH v1 0/5] Add memory shrinker to VirtIO-GPU DRM driver
Hi
Am 09.03.22 um 12:55 schrieb Dmitry Osipenko:
> Hello,
>
> On 3/9/22 11:59, Thomas Zimmermann wrote:
>> Hi
>>
>> Am 08.03.22 um 14:17 schrieb Dmitry Osipenko:
>>> Hello,
>>>
>>> This patchset introduces memory shrinker for the VirtIO-GPU DRM driver.
>>> During OOM, the shrinker will release BOs that are marked as "not needed"
>>> by userspace using the new madvise IOCTL. The userspace in this case is
>>> the Mesa VirGL driver, it will mark the cached BOs as "not needed",
>>> allowing kernel driver to release memory of the cached shmem BOs on
>>> lowmem
>>> situations, preventing OOM kills.
>>
>> Virtio-gpu is build on top of GEM shmem helpers. I have a prototype
>> patchset that adds a shrinker to these helpers. If you want to go
>> further, you could implement something like that instead. Panfrost and
>> lima also have their own shrinker and could certainly be converted to
>> the gem-shmem shrinker.
>
> I had a thought that it could be possible to unify shrinkers into a
> common DRM framework. Could you please give me a link to yours prototype
> patchset?
I uploaded the patches to
https://gitlab.freedesktop.org/tzimmermann/linux/-/commits/gem-shmem-cached-mappings
it's incomplete and un-debugged, but it shows what needs to be done. It
has the infrastructure, but lacks the changes to the GEM shmem code.
The reason for this work is to keep GEM shmem pages mapped and allocated
even while the BO is neither mapped nor pinned. As it is now, GEM SHMEM
creates and releases pages on each pin and unpin, and maps and unmaps
memory ranges on each vmap and vunmap. It's all wasteful. Only the
first pin and vmap calls should establish pages and mappings and only
the purge and free functions should release them.
The patchset adds new helpers for BO purging to struct
drm_gem_object_funcs. With this, I think it might be possible to have
one global DRM shrinker and let it handle all BOs; independent of each
BO's memory manager.
Best regards
Thomas
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev
Download attachment "OpenPGP_signature" of type "application/pgp-signature" (841 bytes)
Powered by blists - more mailing lists