From: Thomas Hellstrom <thellstrom@vmware.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: "dri-devel@lists.freedesktop.org" <dri-devel@lists.freedesktop.org>
Subject: Fwd: Re: [PATCH] gpu/drm/ttm: Use mutex_lock_killable() for shrinker functions.
Date: Tue, 20 May 2014 09:38:07 +0100 [thread overview]
Message-ID: <537B146F.6040102@vmware.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1405200140010.20503@skynet.skynet.ie>
Konrad,
This looks OK to me, but do you have a chance to take a look?
/Thomas
-------- Original Message --------
Return-Path: <dri-devel-bounces@lists.freedesktop.org>
X-Original-To: thomas@shipmail.org
Delivered-To: thomas@shipmail.org
Received: from mail.shipmail.org (lin0.kontor.shipmail.org [127.0.0.1])
by mail.shipmail.org (Postfix) with ESMTP id 7EB6A33807A for
<thomas@shipmail.org>; Tue, 20 May 2014 02:40:25 +0200 (CEST)
Received: from lin0.kontor.shipmail.org [127.0.0.1] by BitDefender SMTP
Proxy on lin0.kontor.shipmail.org [127.0.0.1] for
lin0.kontor.shipmail.org [127.0.0.1]; Tue, 20 May 2014 02:40:25 +0200
(CEST)
Received: from gabe.freedesktop.org (gabe.freedesktop.org
[131.252.210.177]) by mail.shipmail.org (Postfix) with ESMTP id
1D7B0338079 for <thomas@shipmail.org>; Tue, 20 May 2014 02:40:25 +0200
(CEST)
Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by
gabe.freedesktop.org (Postfix) with ESMTP id B14C16E104; Mon, 19 May
2014 17:40:25 -0700 (PDT)
X-Original-To: dri-devel@lists.freedesktop.org
Delivered-To: dri-devel@lists.freedesktop.org
Received: from gir.skynet.ie (gir.skynet.ie [193.1.99.77]) by
gabe.freedesktop.org (Postfix) with ESMTP id E6E276E104 for
<dri-devel@lists.freedesktop.org>; Mon, 19 May 2014 17:40:23 -0700 (PDT)
Received: from skynet.skynet.ie (skynet.skynet.ie [193.1.99.74]) (using
TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client
certificate requested) by gir.skynet.ie (Postfix) with ESMTPS id
C819612529; Tue, 20 May 2014 01:40:21 +0100 (IST)
Date: Tue, 20 May 2014 01:40:21 +0100 (IST)
From: Dave Airlie <airlied@linux.ie>
X-X-Sender: airlied@skynet.skynet.ie
To: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Subject: Re: [PATCH] gpu/drm/ttm: Use mutex_lock_killable() for
shrinker functions.
In-Reply-To: <201405192339.JIJ04144.FHQFVFOtOSLJOM@I-love.SAKURA.ne.jp>
Message-ID: <alpine.DEB.2.00.1405200140010.20503@skynet.skynet.ie>
References: <201405192339.JIJ04144.FHQFVFOtOSLJOM@I-love.SAKURA.ne.jp>
User-Agent: Alpine 2.00 (DEB 1167 2008-08-23)
MIME-Version: 1.0
Cc: linux-kernel@vger.kernel.org, glommer@openvz.org, mgorman@suse.de,
DRI mailing list <dri-devel@lists.freedesktop.org>, dchinner@redhat.com
X-BeenThere: dri-devel@lists.freedesktop.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Direct Rendering Infrastructure - Development
<dri-devel.lists.freedesktop.org>
List-Unsubscribe:
<http://lists.freedesktop.org/mailman/options/dri-devel>,
<mailto:dri-devel-request@lists.freedesktop.org?subject=unsubscribe>
List-Archive: <http://lists.freedesktop.org/archives/dri-devel>
List-Post: <mailto:dri-devel@lists.freedesktop.org>
List-Help: <mailto:dri-devel-request@lists.freedesktop.org?subject=help>
List-Subscribe:
<http://lists.freedesktop.org/mailman/listinfo/dri-devel>,
<mailto:dri-devel-request@lists.freedesktop.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: dri-devel-bounces@lists.freedesktop.org
Sender: "dri-devel" <dri-devel-bounces@lists.freedesktop.org>
X-BitDefender-Scanner: Mail not scanned due to license constraints
cc'ing dri-devel.
> >From e314a1a1583e585d062dfc30c8aad8bf5380510b Mon Sep 17 00:00:00 2001
> From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
> Date: Mon, 19 May 2014 18:43:21 +0900
> Subject: [PATCH] gpu/drm/ttm: Use mutex_lock_killable() for shrinker functions.
>
> I can observe that RHEL7 environment stalls with 100% CPU usage when a
> certain type of memory pressure is given. While the shrinker functions
> are called by shrink_slab() before the OOM killer is triggered, the stall
> lasts for many minutes.
>
> I added debug printk() and observed that many threads are blocked for more
> than 10 seconds at ttm_dma_pool_shrink_count()/ttm_dma_pool_shrink_scan()
> functions. Since the kswapd can call these functions later, the current
> thread can return from these functions as soon as chosen by the OOM killer.
>
> This patch changes "mutex_lock();" to "if (mutex_lock_killable()) return ...;"
> so that any threads can promptly give up. (By the way, as far as I tested,
> changing to "if (!mutex_trylock()) return ...;" likely shortens the duration
> of stall. Maybe we don't need to wait for mutex if someone is already calling
> these functions.)
>
> Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
> ---
> drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> index 1b79bf0..f75dab8 100644
> --- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> +++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> @@ -1012,7 +1012,8 @@ ttm_dma_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
> if (list_empty(&_manager->pools))
> return SHRINK_STOP;
>
> - mutex_lock(&_manager->lock);
> + if (mutex_lock_killable(&_manager->lock))
> + return SHRINK_STOP;
> pool_offset = pool_offset % _manager->npools;
> list_for_each_entry(p, &_manager->pools, pools) {
> unsigned nr_free;
> @@ -1043,7 +1044,8 @@ ttm_dma_pool_shrink_count(struct shrinker *shrink, struct shrink_control *sc)
> struct device_pools *p;
> unsigned long count = 0;
>
> - mutex_lock(&_manager->lock);
> + if (mutex_lock_killable(&_manager->lock))
> + return 0;
> list_for_each_entry(p, &_manager->pools, pools)
> count += p->pool->npages_free;
> mutex_unlock(&_manager->lock);
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2014-05-20 8:38 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-19 14:39 [PATCH] gpu/drm/ttm: Use mutex_lock_killable() for shrinker functions Tetsuo Handa
2014-05-20 0:40 ` Dave Airlie
2014-05-20 0:40 ` Dave Airlie
2014-05-20 8:38 ` Thomas Hellstrom [this message]
2014-05-20 15:30 ` Tetsuo Handa
2014-05-24 14:22 ` Tetsuo Handa
2014-05-28 18:54 ` Konrad Rzeszutek Wilk
2014-05-28 18:54 ` Konrad Rzeszutek Wilk
2014-05-28 21:47 ` Tetsuo Handa
2014-05-28 21:47 ` Tetsuo Handa
2014-05-29 14:34 ` Tetsuo Handa
2014-05-30 16:08 ` Konrad Rzeszutek Wilk
2014-05-30 16:08 ` Konrad Rzeszutek Wilk
2014-05-31 2:58 ` [PATCH 1/5] gpu/drm/ttm: Fix possible division by 0 in ttm_dma_pool_shrink_scan() Tetsuo Handa
2014-05-31 2:59 ` [PATCH 2/5] gpu/drm/ttm: Choose a pool to shrink correctly " Tetsuo Handa
2014-05-31 3:00 ` [PATCH 3/5] gpu/drm/ttm: Use mutex_trylock() to avoid deadlock inside shrinker functions Tetsuo Handa
2014-05-31 3:01 ` [PATCH 4/5] gpu/drm/ttm: Fix possible stack overflow by recursive shrinker calls Tetsuo Handa
2014-05-31 3:02 ` [PATCH 5/5] gpu/drm/ttm: Pass GFP flags in order to avoid deadlock Tetsuo Handa
2014-06-10 19:17 ` [PATCH 3/5] gpu/drm/ttm: Use mutex_trylock() to avoid deadlock inside shrinker functions Konrad Rzeszutek Wilk
2014-06-10 19:17 ` Konrad Rzeszutek Wilk
2014-06-10 19:17 ` Konrad Rzeszutek Wilk
2014-06-10 20:16 ` Tetsuo Handa
2014-06-10 20:16 ` Tetsuo Handa
2014-08-03 11:14 ` [PATCH 1/5] gpu/drm/ttm: Fix possible division by 0 in ttm_dma_pool_shrink_scan() Tetsuo Handa
2014-08-03 11:14 ` [PATCH 2/5] gpu/drm/ttm: Choose a pool to shrink correctly " Tetsuo Handa
2014-08-03 11:15 ` [PATCH 3/5] gpu/drm/ttm: Use mutex_trylock() to avoid deadlock inside shrinker functions Tetsuo Handa
2014-08-03 11:16 ` [PATCH 4/5] gpu/drm/ttm: Fix possible stack overflow by recursive shrinker calls Tetsuo Handa
2014-08-03 11:16 ` [PATCH 5/5] gpu/drm/ttm: Pass GFP flags in order to avoid deadlock Tetsuo Handa
2014-05-30 16:06 ` [PATCH] gpu/drm/ttm: Use mutex_lock_killable() for shrinker functions Konrad Rzeszutek Wilk
2014-05-30 16:06 ` Konrad Rzeszutek Wilk
2014-05-30 16:06 ` Konrad Rzeszutek Wilk
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=537B146F.6040102@vmware.com \
--to=thellstrom@vmware.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=konrad.wilk@oracle.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.