From: Eric Anholt <eric@anholt.net>
To: "Michel Dänzer" <michel@daenzer.net>,
christian.koenig@amd.com, "Michal Hocko" <mhocko@kernel.org>
Cc: linux-mm@kvack.org, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org
Subject: Re: [RFC] Per file OOM badness
Date: Sun, 21 Jan 2018 17:50:39 +1100 [thread overview]
Message-ID: <87bmhnn1s0.fsf@anholt.net> (raw)
In-Reply-To: <8ab81340-f4f0-c2ed-6462-5f14102af1a9@daenzer.net>
[-- Attachment #1: Type: text/plain, Size: 3622 bytes --]
Michel Dänzer <michel@daenzer.net> writes:
> On 2018-01-19 11:02 AM, Michel Dänzer wrote:
>> On 2018-01-19 10:58 AM, Christian König wrote:
>>> Am 19.01.2018 um 10:32 schrieb Michel Dänzer:
>>>> On 2018-01-19 09:39 AM, Christian König wrote:
>>>>> Am 19.01.2018 um 09:20 schrieb Michal Hocko:
>>>>>> OK, in that case I would propose a different approach. We already
>>>>>> have rss_stat. So why do not we simply add a new counter there
>>>>>> MM_KERNELPAGES and consider those in oom_badness? The rule would be
>>>>>> that such a memory is bound to the process life time. I guess we will
>>>>>> find more users for this later.
>>>>> I already tried that and the problem with that approach is that some
>>>>> buffers are not created by the application which actually uses them.
>>>>>
>>>>> For example X/Wayland is creating and handing out render buffers to
>>>>> application which want to use OpenGL.
>>>>>
>>>>> So the result is when you always account the application who created the
>>>>> buffer the OOM killer will certainly reap X/Wayland first. And that is
>>>>> exactly what we want to avoid here.
>>>> FWIW, what you describe is true with DRI2, but not with DRI3 or Wayland
>>>> anymore. With DRI3 and Wayland, buffers are allocated by the clients and
>>>> then shared with the X / Wayland server.
>>>
>>> Good point, when I initially looked at that problem DRI3 wasn't widely
>>> used yet.
>>>
>>>> Also, in all cases, the amount of memory allocated for buffers shared
>>>> between DRI/Wayland clients and the server should be relatively small
>>>> compared to the amount of memory allocated for buffers used only locally
>>>> in the client, particularly for clients which create significant memory
>>>> pressure.
>>>
>>> That is unfortunately only partially true. When you have a single
>>> runaway application which tries to allocate everything it would indeed
>>> work as you described.
>>>
>>> But when I tested this a few years ago with X based desktop the
>>> applications which actually used most of the memory where Firefox and
>>> Thunderbird. Unfortunately they never got accounted for that.
>>>
>>> Now, on my current Wayland based desktop it actually doesn't look much
>>> better. Taking a look at radeon_gem_info/amdgpu_gem_info the majority of
>>> all memory was allocated either by gnome-shell or Xwayland.
>>
>> My guess would be this is due to pixmaps, which allow X clients to cause
>> the X server to allocate essentially unlimited amounts of memory. It's a
>> separate issue, which would require a different solution than what we're
>> discussing in this thread. Maybe something that would allow the X server
>> to tell the kernel that some of the memory it allocates is for the
>> client process.
>
> Of course, such a mechanism could probably be abused to incorrectly
> blame other processes for one's own memory consumption...
>
>
> I'm not sure if the pixmap issue can be solved for the OOM killer. It's
> an X design issue which is fixed with Wayland. So it's probably better
> to ignore it for this discussion.
>
> Also, I really think the issue with DRM buffers being shared between
> processes isn't significant for the OOM killer compared to DRM buffers
> only used in the same process that allocates them. So I suggest focusing
> on the latter.
Agreed. The 95% case is non-shared buffers, so just don't account for
them and we'll have a solution good enough that we probably never need
to handle the shared case. On the DRM side, removing buffers from the
accounting once they get shared would be easy.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
next prev parent reply other threads:[~2018-01-21 6:50 UTC|newest]
Thread overview: 170+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-18 16:47 [RFC] Per file OOM badness Andrey Grodzovsky
2018-01-18 16:47 ` Andrey Grodzovsky
2018-01-18 16:47 ` Andrey Grodzovsky
2018-01-18 16:47 ` [PATCH 1/4] fs: add OOM badness callback in file_operatrations struct Andrey Grodzovsky
2018-01-18 16:47 ` Andrey Grodzovsky
2018-01-18 16:47 ` Andrey Grodzovsky
2018-01-18 16:47 ` [PATCH 2/4] oom: take per file badness into account Andrey Grodzovsky
2018-01-18 16:47 ` Andrey Grodzovsky
2018-01-18 16:47 ` Andrey Grodzovsky
[not found] ` <1516294072-17841-1-git-send-email-andrey.grodzovsky-5C7GfCeVMHo@public.gmane.org>
2018-01-18 16:47 ` [PATCH 3/4] drm/gem: adjust per file OOM badness on handling buffers Andrey Grodzovsky
2018-01-18 16:47 ` Andrey Grodzovsky
2018-01-18 16:47 ` Andrey Grodzovsky
2018-01-19 6:01 ` Chunming Zhou
2018-01-19 6:01 ` Chunming Zhou
2018-01-19 6:01 ` Chunming Zhou
2018-01-18 16:47 ` [PATCH 4/4] drm/amdgpu: Use drm_oom_badness for amdgpu Andrey Grodzovsky
2018-01-18 16:47 ` Andrey Grodzovsky
2018-01-18 16:47 ` Andrey Grodzovsky
2018-01-30 9:24 ` Daniel Vetter
2018-01-30 9:24 ` Daniel Vetter
[not found] ` <20180130092413.GD25930-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2018-01-30 12:42 ` Andrey Grodzovsky
2018-01-30 12:42 ` Andrey Grodzovsky
2018-01-30 12:42 ` Andrey Grodzovsky
2018-01-18 17:00 ` [RFC] Per file OOM badness Michal Hocko
2018-01-18 17:00 ` Michal Hocko
2018-01-18 17:00 ` Michal Hocko
2018-01-18 17:13 ` Michal Hocko
2018-01-18 17:13 ` Michal Hocko
2018-01-18 20:01 ` Eric Anholt
2018-01-19 8:20 ` Michal Hocko
2018-01-19 8:20 ` Michal Hocko
2018-01-19 8:20 ` Michal Hocko
[not found] ` <20180119082046.GL6584-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2018-01-19 8:39 ` Christian König
2018-01-19 8:39 ` Christian König
2018-01-19 8:39 ` Christian König
2018-01-19 9:32 ` Michel Dänzer
2018-01-19 9:32 ` Michel Dänzer
2018-01-19 9:32 ` Michel Dänzer
2018-01-19 9:58 ` Christian König
2018-01-19 9:58 ` Christian König
2018-01-19 9:58 ` Christian König
[not found] ` <11153f4f-8b9a-5780-6087-bc1e85459584-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2018-01-19 10:02 ` Michel Dänzer
2018-01-19 10:02 ` Michel Dänzer
2018-01-19 10:02 ` Michel Dänzer
2018-01-19 15:07 ` Michel Dänzer
2018-01-19 15:07 ` Michel Dänzer
2018-01-21 6:50 ` Eric Anholt [this message]
2018-01-19 10:40 ` Michal Hocko
2018-01-19 10:40 ` Michal Hocko
2018-01-19 10:40 ` Michal Hocko
2018-01-19 11:37 ` Christian König
2018-01-19 11:37 ` Christian König
2018-01-19 11:37 ` Christian König
2018-01-19 12:13 ` Michal Hocko
2018-01-19 12:13 ` Michal Hocko
2018-01-19 12:13 ` Michal Hocko
2018-01-19 12:20 ` Michal Hocko
2018-01-19 12:20 ` Michal Hocko
2018-01-19 12:20 ` Michal Hocko
2018-01-19 16:54 ` Christian König
2018-01-19 16:54 ` Christian König
2018-01-19 16:54 ` Christian König
2018-01-23 11:39 ` Michal Hocko
2018-01-23 11:39 ` Michal Hocko
2018-01-23 11:39 ` Michal Hocko
2018-01-19 16:48 ` Michel Dänzer
2018-01-19 16:48 ` Michel Dänzer
2018-01-19 16:48 ` Michel Dänzer
2018-01-19 8:35 ` Christian König
2018-01-19 8:35 ` Christian König
2018-01-19 6:01 ` He, Roger
2018-01-19 8:25 ` Michal Hocko
2018-01-19 8:25 ` Michal Hocko
2018-01-19 10:02 ` roger
2018-01-19 10:02 ` roger
2018-01-23 15:27 ` Roman Gushchin
2018-01-23 15:27 ` Roman Gushchin
2018-01-23 15:27 ` Roman Gushchin
2018-01-23 15:36 ` Michal Hocko
2018-01-23 15:36 ` Michal Hocko
2018-01-23 15:36 ` Michal Hocko
[not found] ` <20180123153631.GR1526-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2018-01-23 16:39 ` Michel Dänzer
2018-01-23 16:39 ` Michel Dänzer
2018-01-23 16:39 ` Michel Dänzer
2018-01-24 9:28 ` Michal Hocko
2018-01-24 9:28 ` Michal Hocko
2018-01-24 9:28 ` Michal Hocko
2018-01-24 10:27 ` Michel Dänzer
2018-01-24 10:27 ` Michel Dänzer
2018-01-24 10:27 ` Michel Dänzer
2018-01-24 11:01 ` Michal Hocko
2018-01-24 11:01 ` Michal Hocko
2018-01-24 11:01 ` Michal Hocko
2018-01-24 11:23 ` Michel Dänzer
2018-01-24 11:23 ` Michel Dänzer
2018-01-24 11:23 ` Michel Dänzer
[not found] ` <36b49523-792d-45f9-8617-32b6d9d77418-otUistvHUpPR7s880joybQ@public.gmane.org>
2018-01-24 11:50 ` Michal Hocko
2018-01-24 11:50 ` Michal Hocko
2018-01-24 11:50 ` Michal Hocko
2018-01-24 12:11 ` Christian König
2018-01-24 12:11 ` Christian König
2018-01-30 9:31 ` Daniel Vetter
2018-01-30 9:31 ` Daniel Vetter
2018-01-30 9:31 ` Daniel Vetter
[not found] ` <20180130093145.GE25930-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2018-01-30 9:43 ` Michel Dänzer
2018-01-30 9:43 ` Michel Dänzer
2018-01-30 9:43 ` Michel Dänzer
2018-01-30 10:40 ` Christian König
2018-01-30 10:40 ` Christian König
2018-01-30 10:40 ` Christian König
2018-01-30 11:02 ` Michel Dänzer
2018-01-30 11:02 ` Michel Dänzer
2018-01-30 11:02 ` Michel Dänzer
2018-01-30 11:28 ` Christian König
2018-01-30 11:28 ` Christian König
2018-01-30 11:34 ` Michel Dänzer
2018-01-30 11:34 ` Michel Dänzer
2018-01-30 11:34 ` Michel Dänzer
2018-01-30 11:36 ` Nicolai Hähnle
2018-01-30 11:36 ` Nicolai Hähnle
2018-01-30 11:36 ` Nicolai Hähnle
2018-01-30 11:42 ` Michel Dänzer
2018-01-30 11:42 ` Michel Dänzer
2018-01-30 11:42 ` Michel Dänzer
2018-01-30 11:56 ` Christian König
2018-01-30 11:56 ` Christian König
2018-01-30 11:56 ` Christian König
2018-01-30 15:52 ` Michel Dänzer
2018-01-30 15:52 ` Michel Dänzer
2018-01-30 15:52 ` Michel Dänzer
2018-01-30 10:42 ` Daniel Vetter
2018-01-30 10:42 ` Daniel Vetter
2018-01-30 10:42 ` Daniel Vetter
2018-01-30 10:48 ` Michel Dänzer
2018-01-30 10:48 ` Michel Dänzer
2018-01-30 10:48 ` Michel Dänzer
2018-01-30 11:35 ` Nicolai Hähnle
2018-01-30 11:35 ` Nicolai Hähnle
2018-01-30 11:35 ` Nicolai Hähnle
[not found] ` <20180124115059.GC28465-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2018-01-24 14:31 ` Michel Dänzer
2018-01-24 14:31 ` Michel Dänzer
2018-01-24 14:31 ` Michel Dänzer
2018-01-30 9:29 ` Michel Dänzer
2018-01-30 9:29 ` Michel Dänzer
2018-01-30 9:29 ` Michel Dänzer
2018-01-30 10:28 ` Michal Hocko
2018-01-30 10:28 ` Michal Hocko
2018-01-30 10:28 ` Michal Hocko
[not found] ` <20180130102855.GY21609-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2018-03-26 14:36 ` Lucas Stach
2018-03-26 14:36 ` Lucas Stach
2018-03-26 14:36 ` Lucas Stach
[not found] ` <1522074988.1196.1.camel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2018-04-04 9:09 ` Michel Dänzer
2018-04-04 9:09 ` Michel Dänzer
2018-04-04 9:09 ` Michel Dänzer
2018-04-04 9:36 ` Lucas Stach
2018-04-04 9:36 ` Lucas Stach
2018-04-04 9:36 ` Lucas Stach
2018-04-04 9:46 ` Michel Dänzer
2018-04-04 9:46 ` Michel Dänzer
2018-04-04 9:46 ` Michel Dänzer
2018-01-19 5:39 ` He, Roger
2018-01-19 8:17 ` Christian König
2018-01-19 8:17 ` Christian König
2018-01-19 8:17 ` Christian König
2018-01-22 23:23 ` Andrew Morton
2018-01-22 23:23 ` Andrew Morton
2018-01-22 23:23 ` Andrew Morton
[not found] ` <20180122152315.749d88f3c91ffce4d70ac450-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2018-01-23 1:59 ` Andrey Grodzovsky
2018-01-23 1:59 ` Andrey Grodzovsky
-- strict thread matches above, loose matches on Subject: below --
2015-09-04 12:53 Christian König
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=87bmhnn1s0.fsf@anholt.net \
--to=eric@anholt.net \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=michel@daenzer.net \
/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 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.