linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@kernel.org>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	"H. Peter Anvin" <hpa@zytor.com>,
	"David S. Miller" <davem@davemloft.net>,
	Tony Luck <tony.luck@intel.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Chris Zankel <chris@zankel.net>,
	Max Filippov <jcmvbkbc@gmail.com>,
	x86@kernel.org, linux-alpha@vger.kernel.org,
	linux-ia64@vger.kernel.org, linux-s390@vger.kernel.org,
	linux-sh@vger.kernel.org, sparclinux@vger.kernel.org,
	linux-xtensa@linux-xtensa.org, linux-arch@vger.kernel.org
Subject: Re: [RFC 0/12] introduce down_write_killable for rw_semaphore
Date: Fri, 19 Feb 2016 13:15:09 +0100	[thread overview]
Message-ID: <20160219121509.GD12690@dhcp22.suse.cz> (raw)
In-Reply-To: <1454444369-2146-1-git-send-email-mhocko@kernel.org>

Are there any fundamenta lobjections to the patchset? I plan to resubmit
next week with the changes from the feedback along with the mmap_sem
down_write_killable usage.

On Tue 02-02-16 21:19:17, Michal Hocko wrote:
> Hi,
> the following patchset implements a killable variant of write lock for
> rw_semaphore. My usecase is to turn as many mmap_sem write users to use
> a killable variant which will be helpful for the oom_reaper [1] to
> asynchronously tear down the oom victim address space which requires
> mmap_sem for read. This will reduce a likelihood of OOM livelocks caused
> by oom victim being stuck on a lock or other resource which prevents it
> to reach its exit path and release the memory. I haven't implemented
> the killable variant of the read lock because I do not have any usecase
> for this API.
> 
> The patchset is organized as follows.
> - Patch 1 is a trivial cleanup
> - Patch 2, I belive, shouldn't introduce any functional changes as per
>   Documentation/memory-barriers.txt.
> - Patch 3 is the preparatory work and necessary infrastructure for
>   down_write_killable. It implements generic __down_write_killable
>   and prepares the write lock slow path to bail out earlier when told so
> - Patch 4-9 are implementing arch specific __down_write_killable. One
>   patch per architecture. I haven't even tried to compile test anything but
>   sparch which uses CONFIG_RWSEM_GENERIC_SPINLOCK in allnoconfig.
>   Those shold be mostly trivial.
> - One exception is x86 which replaces the current implementation of
>   __down_write with the generic one to make easier to read and get rid
>   of one level of indirection to the slow path. More on that in patch 10.
>   I do not have any problems to drop patch 10 and rework 11 to the current
>   inline asm but I think the easier code would be better.
> - finally patch 11 implements down_write_killable and ties everything
>   together. I am not really an expert on lockdep so I hope I got it right.
> 
> Many of arch specific patches are basically same and I can squash them
> into one patch if this is preferred but I thought that one patch per
> arch is preferable.
> 
> My patch to change mmap_sem write users to killable form is not part
> of the series because it is not finished yet but I guess it is not
> really necessary for the RFC. The API is used in the same way as
> mutex_lock_killable.
> 
> I have tested on x86 with OOM situations with high mmap_sem contention
> (basically many parallel page faults racing with many parallel mmap/munmap
> tight loops) so the waiters for the write locks are routinely interrupted
> by SIGKILL.
> 
> Patches should apply cleanly on both Linus and next tree.
> 
> Any feedback is highly appreciated.
> ---
> [1] http://lkml.kernel.org/r/1452094975-551-1-git-send-email-mhocko@kernel.org

-- 
Michal Hocko
SUSE Labs

  parent reply	other threads:[~2016-02-19 12:15 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-02 20:19 [RFC 0/12] introduce down_write_killable for rw_semaphore Michal Hocko
2016-02-02 20:19 ` Michal Hocko
2016-02-02 20:19 ` [RFC 01/12] locking, rwsem: get rid of __down_write_nested Michal Hocko
2016-02-02 20:19   ` Michal Hocko
2016-02-02 20:19 ` [RFC 02/12] locking, rwsem: drop explicit memory barriers Michal Hocko
2016-02-02 20:19   ` Michal Hocko
2016-02-02 20:19 ` [RFC 03/12] locking, rwsem: introduce basis for down_write_killable Michal Hocko
2016-02-02 20:19   ` Michal Hocko
2016-02-02 20:19 ` [RFC 04/12] alpha, rwsem: provide __down_write_killable Michal Hocko
2016-02-02 20:19   ` Michal Hocko
2016-02-02 20:19 ` [RFC 05/12] ia64, " Michal Hocko
2016-02-02 20:19   ` Michal Hocko
2016-02-02 20:19 ` [RFC 06/12] s390, " Michal Hocko
2016-02-02 20:19   ` Michal Hocko
2016-02-02 20:19 ` [RFC 07/12] sh, " Michal Hocko
2016-02-02 20:19   ` Michal Hocko
2016-02-03 11:19   ` Sergei Shtylyov
2016-02-03 12:11     ` Michal Hocko
2016-02-03 12:11       ` Michal Hocko
2016-02-02 20:19 ` [RFC 08/12] sparc, " Michal Hocko
2016-02-02 20:19   ` Michal Hocko
2016-02-02 20:19 ` [RFC 09/12] xtensa, " Michal Hocko
2016-02-02 20:19   ` Michal Hocko
2016-02-02 20:19 ` [RFC 10/12] x86, rwsem: simplify __down_write Michal Hocko
2016-02-02 20:19   ` Michal Hocko
2016-02-03  8:10   ` Ingo Molnar
2016-02-03  8:10     ` Ingo Molnar
2016-02-03 12:10     ` Michal Hocko
2016-02-03 12:10       ` Michal Hocko
2016-06-03 16:13     ` Peter Zijlstra
2016-06-03 22:34       ` Peter Zijlstra
2016-06-03 22:34         ` Peter Zijlstra
2016-06-09 14:40       ` David Howells
2016-06-09 14:40         ` David Howells
2016-06-09 17:36         ` Peter Zijlstra
2016-06-10 16:39           ` Paul E. McKenney
2016-06-10 16:39             ` Paul E. McKenney
2016-02-02 20:19 ` [RFC 11/12] x86, rwsem: provide __down_write_killable Michal Hocko
2016-02-02 20:19   ` Michal Hocko
2016-02-17 16:41   ` [RFC 11/12 v1] " Michal Hocko
2016-02-17 16:41     ` Michal Hocko
2016-02-02 20:19 ` [RFC 12/12] locking, rwsem: provide down_write_killable Michal Hocko
2016-02-02 20:19   ` Michal Hocko
2016-02-19 12:15 ` Michal Hocko [this message]
2016-02-19 12:15   ` [RFC 0/12] introduce down_write_killable for rw_semaphore Michal Hocko
2016-03-09 12:18 ` Ingo Molnar
2016-03-09 12:18   ` Ingo Molnar
2016-03-09 12:56   ` Michal Hocko
2016-03-09 12:56     ` Michal Hocko
2016-03-09 13:17     ` Ingo Molnar
2016-03-09 13:28       ` Michal Hocko
2016-03-09 13:43         ` Ingo Molnar
2016-03-09 14:41           ` Michal Hocko
2016-03-10 10:24             ` Ingo Molnar
2016-03-10 10:24               ` Ingo Molnar

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=20160219121509.GD12690@dhcp22.suse.cz \
    --to=mhocko@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=chris@zankel.net \
    --cc=davem@davemloft.net \
    --cc=hpa@zytor.com \
    --cc=jcmvbkbc@gmail.com \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux-xtensa@linux-xtensa.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=sparclinux@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=x86@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).