All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Wilson <chris@chris-wilson.co.uk>
To: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Roman Jarosz <kedgedev@gmail.com>
Cc: kosaki.motohiro@jp.fujitsu.com,
	lkml <linux-kernel@vger.kernel.org>,
	A Rojas <nqn1976list@gmail.com>,
	Hugh Dickins <hugh.dickins@tiscali.co.uk>,
	"A. Boulan" <arnaud.boulan@libertysurf.fr>,
	michael@reinelt.co.at, jcnengel@googlemail.com,
	rientjes@google.com, earny@net4u.de,
	Jesse Barnes <jbarnes@virtuousgeek.org>,
	Eric Anholt <eric@anholt.net>
Subject: Re: OOM-Killer kills too much with 2.6.32.2
Date: Tue, 26 Jan 2010 12:33:29 +0000	[thread overview]
Message-ID: <89k77n$mrr1hi@fmsmga001.fm.intel.com> (raw)
In-Reply-To: <20100126183412.6AC9.A69D9226@jp.fujitsu.com>

On Tue, 26 Jan 2010 20:07:43 +0900 (JST), KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote:
>         obj->filp = shmem_file_setup("drm mm object", size, VM_NORESERVE);
> (snip)
>         /* Basically we want to disable the OOM killer and handle ENOMEM
>          * ourselves by sacrificing pages from cached buffers.
>          * XXX shmem_file_[gs]et_gfp_mask()
>          */
>         mapping_set_gfp_mask(obj->filp->f_path.dentry->d_inode->i_mapping,
>                              GFP_HIGHUSER |
>                              __GFP_COLD |
>                              __GFP_FS |
>                              __GFP_RECLAIMABLE |
>                              __GFP_NORETRY |
>                              __GFP_NOWARN |
>                              __GFP_NOMEMALLOC);
> 
> 
> This comment is lie. __GFP_NORETY cause ENOMEM to shmem, not GEM itself.
> GEM can't handle nor recover it. I suspect following commit is wrong. 

Indeed, the NORETRY flag is required for the inode mapping routines to
return ENOMEM instead of triggering the OOM killer themselves. GEM has
code to handle the ENOMEM as returned from shmem (please at least read the
code before commenting, and comments are appreciated), by attempting to
free up some of its own inactive buffers before retrying the allocation
(with NORETRY removed, so the OOM killer will be invoked on the second
instance). The reason for this convoluted approach is that GEM's inactive
list shrinker requires the struct mutex and so cannot be run when GEM
itself is attempting and failing to allocate memory. We could recover from
more situations if we made some more invasive changes to our locking.

This is without a doubt an area that needs improvement.
-- 
Chris Wilson, Intel Open Source Technology Centre

  reply	other threads:[~2010-01-26 12:33 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-14 13:15 OOM-Killer kills too much with 2.6.32.2 Roman Jarosz
2010-01-23  0:40 ` David Rientjes
2010-01-25 22:12   ` Roman Jarosz
2010-01-25  1:48 ` KOSAKI Motohiro
2010-01-25 20:47   ` Roman Jarosz
2010-01-26  5:19     ` KOSAKI Motohiro
2010-01-26  7:51       ` A Rojas
2010-01-26  9:06       ` Roman Jarosz
2010-01-26 11:07         ` KOSAKI Motohiro
2010-01-26 12:33           ` Chris Wilson [this message]
2010-01-26 13:03             ` KOSAKI Motohiro
2010-01-26 13:18               ` Chris Wilson
2010-01-26 13:59                 ` Michael Reinelt
2010-01-26 14:07                   ` Michael Reinelt
2010-01-27  0:50                 ` KOSAKI Motohiro
2010-01-27  9:56                   ` Pekka Enberg
2010-01-27 10:55                     ` Linus Torvalds
2010-01-27 11:12                       ` Pekka Enberg
2010-01-27 11:14                       ` [PATCH] drm/i915: Selectively enable self-reclaim Chris Wilson
2010-01-27 11:20                         ` Pekka Enberg
2010-01-27 11:30                           ` Michael Reinelt
2010-01-28  3:15                           ` Michael Reinelt
2010-01-28 18:21                             ` Roman Jarosz
2010-01-27 11:50                         ` KOSAKI Motohiro
2010-01-27 12:16                         ` Linus Torvalds
2010-01-27 12:28                           ` Linus Torvalds
2010-01-27 15:25                           ` Chris Wilson
2010-01-27 16:09                             ` Linus Torvalds
2010-01-27 17:14                               ` Chris Wilson
2010-01-27 17:19                                 ` Linus Torvalds
2010-01-27 21:03                                   ` Roman Jarosz
2010-06-30  6:54                                   ` [Intel-gfx] " Dave Airlie
2010-06-30  7:05                                     ` Chris Wilson
2010-06-30  7:05                                       ` Chris Wilson
2010-06-30 23:07                                       ` [Intel-gfx] " Linus Torvalds
2010-07-01  1:24                                         ` Linus Torvalds
2010-07-01  1:55                                           ` KOSAKI Motohiro
2010-07-01 10:15                                           ` Dave Airlie
2010-07-01 11:19                                           ` Chris Wilson
2010-07-01 11:19                                             ` Chris Wilson
2010-07-01 22:34                                           ` M. Vefa Bicakci
2010-07-01 23:59                                             ` Linus Torvalds
2010-07-01 23:59                                               ` Linus Torvalds
2010-07-02  0:06                                               ` [Intel-gfx] " Dave Airlie
2010-07-02  0:49                                                 ` Dave Airlie
2010-07-02  1:28                                                   ` Linus Torvalds
2010-07-02  1:28                                                     ` Linus Torvalds
2010-07-17 18:58                                                     ` [Intel-gfx] " M. Vefa Bicakci
2010-07-17 19:15                                                       ` Linus Torvalds
2010-07-18 14:27                                                         ` M. Vefa Bicakci
2010-07-18 14:27                                                           ` M. Vefa Bicakci
2010-07-18 16:59                                                           ` Linus Torvalds
2010-01-28  6:37                                 ` Willy Tarreau
2010-01-26 13:41           ` OOM-Killer kills too much with 2.6.32.2 Roman Jarosz
2010-01-27  0:14             ` KOSAKI Motohiro
2010-01-27  9:53               ` Roman Jarosz
2010-01-26 13:57       ` Pekka Enberg

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='89k77n$mrr1hi@fmsmga001.fm.intel.com' \
    --to=chris@chris-wilson.co.uk \
    --cc=arnaud.boulan@libertysurf.fr \
    --cc=earny@net4u.de \
    --cc=eric@anholt.net \
    --cc=hugh.dickins@tiscali.co.uk \
    --cc=jbarnes@virtuousgeek.org \
    --cc=jcnengel@googlemail.com \
    --cc=kedgedev@gmail.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michael@reinelt.co.at \
    --cc=nqn1976list@gmail.com \
    --cc=rientjes@google.com \
    /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.