All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michel Dänzer" <michel@daenzer.net>
To: "Christian König" <christian.koenig@amd.com>,
	"Michal Hocko" <mhocko@kernel.org>
Cc: linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org,
	linux-mm@kvack.org, dri-devel@lists.freedesktop.org
Subject: Re: [RFC] Per file OOM badness
Date: Fri, 19 Jan 2018 17:48:24 +0100	[thread overview]
Message-ID: <d1e54376-6ed4-dceb-1dfa-1b95a11ab3c8@daenzer.net> (raw)
In-Reply-To: <d4fe7e59-da2d-11a5-73e2-55f2f27cdfd8@amd.com>

On 2018-01-19 12:37 PM, Christian König wrote:
> Am 19.01.2018 um 11:40 schrieb Michal Hocko:
>> On Fri 19-01-18 09:39:03, 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.
>> Then you have to find the target allocation context at the time of the
>> allocation and account it.
> 
> And exactly that's the root of the problem: The target allocation
> context isn't known at the time of the allocation.
> 
> We could add callbacks so that when the memory is passed from the
> allocator to the actual user of the memory. In other words when the
> memory is passed from the X server to the client the driver would need
> to decrement the X servers accounting and increment the clients accounting.
> 
> But I think that would go deep into the file descriptor handling (we
> would at least need to handle dup/dup2 and passing the fd using unix
> domain sockets) and most likely would be rather error prone.
> 
> The per file descriptor badness is/was just the much easier approach to
> solve the issue, because the drivers already knew which client is
> currently using which buffer objects.
> 
> I of course agree that file descriptors can be shared between processes
> and are by themselves not killable. But at least for our graphics driven
> use case I don't see much of a problem killing all processes when a file
> descriptor is used by more than one at the same time.

In that case, accounting a BO as suggested by Michal above, in every
process that shares it, should work fine, shouldn't it?

The OOM killer will first select the process which has more memory
accounted for other things than the BOs shared with another process.


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer

WARNING: multiple messages have this Message-ID (diff)
From: "Michel Dänzer" <michel@daenzer.net>
To: "Christian König" <christian.koenig@amd.com>,
	"Michal Hocko" <mhocko@kernel.org>
Cc: linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org,
	linux-mm@kvack.org, dri-devel@lists.freedesktop.org
Subject: Re: [RFC] Per file OOM badness
Date: Fri, 19 Jan 2018 17:48:24 +0100	[thread overview]
Message-ID: <d1e54376-6ed4-dceb-1dfa-1b95a11ab3c8@daenzer.net> (raw)
In-Reply-To: <d4fe7e59-da2d-11a5-73e2-55f2f27cdfd8@amd.com>

On 2018-01-19 12:37 PM, Christian KA?nig wrote:
> Am 19.01.2018 um 11:40 schrieb Michal Hocko:
>> On Fri 19-01-18 09:39:03, Christian KA?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.
>> Then you have to find the target allocation context at the time of the
>> allocation and account it.
> 
> And exactly that's the root of the problem: The target allocation
> context isn't known at the time of the allocation.
> 
> We could add callbacks so that when the memory is passed from the
> allocator to the actual user of the memory. In other words when the
> memory is passed from the X server to the client the driver would need
> to decrement the X servers accounting and increment the clients accounting.
> 
> But I think that would go deep into the file descriptor handling (we
> would at least need to handle dup/dup2 and passing the fd using unix
> domain sockets) and most likely would be rather error prone.
> 
> The per file descriptor badness is/was just the much easier approach to
> solve the issue, because the drivers already knew which client is
> currently using which buffer objects.
> 
> I of course agree that file descriptors can be shared between processes
> and are by themselves not killable. But at least for our graphics driven
> use case I don't see much of a problem killing all processes when a file
> descriptor is used by more than one at the same time.

In that case, accounting a BO as suggested by Michal above, in every
process that shares it, should work fine, shouldn't it?

The OOM killer will first select the process which has more memory
accounted for other things than the BOs shared with another process.


-- 
Earthling Michel DA?nzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: "Michel Dänzer" <michel@daenzer.net>
To: "Christian König" <christian.koenig@amd.com>,
	"Michal Hocko" <mhocko@kernel.org>
Cc: linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org,
	linux-mm@kvack.org, dri-devel@lists.freedesktop.org
Subject: Re: [RFC] Per file OOM badness
Date: Fri, 19 Jan 2018 17:48:24 +0100	[thread overview]
Message-ID: <d1e54376-6ed4-dceb-1dfa-1b95a11ab3c8@daenzer.net> (raw)
In-Reply-To: <d4fe7e59-da2d-11a5-73e2-55f2f27cdfd8@amd.com>

On 2018-01-19 12:37 PM, Christian König wrote:
> Am 19.01.2018 um 11:40 schrieb Michal Hocko:
>> On Fri 19-01-18 09:39:03, 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.
>> Then you have to find the target allocation context at the time of the
>> allocation and account it.
> 
> And exactly that's the root of the problem: The target allocation
> context isn't known at the time of the allocation.
> 
> We could add callbacks so that when the memory is passed from the
> allocator to the actual user of the memory. In other words when the
> memory is passed from the X server to the client the driver would need
> to decrement the X servers accounting and increment the clients accounting.
> 
> But I think that would go deep into the file descriptor handling (we
> would at least need to handle dup/dup2 and passing the fd using unix
> domain sockets) and most likely would be rather error prone.
> 
> The per file descriptor badness is/was just the much easier approach to
> solve the issue, because the drivers already knew which client is
> currently using which buffer objects.
> 
> I of course agree that file descriptors can be shared between processes
> and are by themselves not killable. But at least for our graphics driven
> use case I don't see much of a problem killing all processes when a file
> descriptor is used by more than one at the same time.

In that case, accounting a BO as suggested by Michal above, in every
process that shares it, should work fine, shouldn't it?

The OOM killer will first select the process which has more memory
accounted for other things than the BOs shared with another process.


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2018-01-19 16:48 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
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
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
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
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
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 [this message]
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
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
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
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
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
2018-03-26 14:36                       ` Lucas Stach
2018-03-26 14:36                         ` Lucas Stach
2018-03-26 14:36                         ` Lucas Stach
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
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=d1e54376-6ed4-dceb-1dfa-1b95a11ab3c8@daenzer.net \
    --to=michel@daenzer.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 \
    /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.