linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/11] introduce down_write_killable for rw_semaphore v3
@ 2016-04-07 15:12 Michal Hocko
  2016-04-07 15:12 ` Michal Hocko
                   ` (12 more replies)
  0 siblings, 13 replies; 66+ messages in thread
From: Michal Hocko @ 2016-04-07 15:12 UTC (permalink / raw)
  To: LKML
  Cc: Peter Zijlstra, Ingo Molnar, Thomas Gleixner, H. Peter Anvin,
	David S. Miller, Tony Luck, Andrew Morton, Chris Zankel,
	Max Filippov, x86, linux-alpha, linux-ia64, linux-s390, linux-sh,
	sparclinux, linux-xtensa, linux-arch, Davidlohr Bueso,
	Michal Hocko

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
merged in 4.6-rc1 (aac453635549 ("mm, oom: introduce oom reaper")) 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 previous version of this series was posted [1]. I have dropped patches 7-9
based on Davidlohr Bueso feedback because he pointed out that sh and extensa
can use the generic implementation. Further investigation has shown the same
is true for sparc. While those patches were removed 3 new ones were added for
same archs to use the generic implementation. Other than that there were no
functional changes since the last version.

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.
- Patches 3-5 are moving xtensa, sh and sparc to generic implementation
- Patch 6 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 7-10 are implementing arch specific __down_write_killable. One
  patch per architecture.
- 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.

Follow up patches to change mmap_sem write users to killable form is not
part of the series because that will be routed via mmotm tree later on.

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.

Thanks!
---
[1] http://lkml.kernel.org/r/1459508695-14915-1-git-send-email-mhocko@kernel.org


^ permalink raw reply	[flat|nested] 66+ messages in thread

end of thread, other threads:[~2016-04-27 12:02 UTC | newest]

Thread overview: 66+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-07 15:12 [PATCH 0/11] introduce down_write_killable for rw_semaphore v3 Michal Hocko
2016-04-07 15:12 ` Michal Hocko
2016-04-07 15:12 ` [PATCH 01/11] locking, rwsem: get rid of __down_write_nested Michal Hocko
2016-04-07 15:12   ` Michal Hocko
2016-04-07 15:12 ` [PATCH 02/11] locking, rwsem: drop explicit memory barriers Michal Hocko
2016-04-07 15:12   ` Michal Hocko
2016-04-07 15:12 ` [PATCH 03/11] xtensa, rwsem: drop superfluous arch specific implementation Michal Hocko
2016-04-07 15:12   ` Michal Hocko
2016-04-07 15:12 ` [PATCH 04/11] sh, " Michal Hocko
2016-04-07 15:12   ` Michal Hocko
2016-04-07 15:12 ` [PATCH 05/11] sparc, " Michal Hocko
2016-04-07 15:12   ` Michal Hocko
2016-04-07 15:12 ` [PATCH 06/11] locking, rwsem: introduce basis for down_write_killable Michal Hocko
2016-04-07 15:12   ` Michal Hocko
2016-04-07 15:12 ` [PATCH 07/11] alpha, rwsem: provide __down_write_killable Michal Hocko
2016-04-07 15:12   ` Michal Hocko
2016-04-07 15:12 ` [PATCH 08/11] ia64, " Michal Hocko
2016-04-07 15:12   ` Michal Hocko
2016-04-07 17:28   ` Sergei Shtylyov
2016-04-08  6:22     ` Michal Hocko
2016-04-07 15:12 ` [PATCH 09/11] s390, " Michal Hocko
2016-04-07 15:12   ` Michal Hocko
2016-04-07 15:12 ` [PATCH 10/11] x86, " Michal Hocko
2016-04-07 15:12   ` Michal Hocko
2016-04-13  9:08   ` Ingo Molnar
2016-04-13  9:16     ` Michal Hocko
2016-04-13  9:16       ` Michal Hocko
2016-04-13  9:19       ` Ingo Molnar
2016-04-13  9:19         ` Ingo Molnar
2016-04-13 10:27         ` Ingo Molnar
2016-04-13 12:49           ` Michal Hocko
2016-04-13 12:49             ` Michal Hocko
2016-04-17 16:59             ` Michal Hocko
2016-04-17 16:59               ` Michal Hocko
2016-04-20 13:40             ` Peter Zijlstra
2016-04-20 13:40               ` Peter Zijlstra
2016-04-20 18:04               ` H. Peter Anvin
2016-04-20 18:04                 ` H. Peter Anvin
2016-04-20 20:45                 ` Borislav Petkov
2016-04-20 20:45                   ` Borislav Petkov
2016-04-20 20:58                   ` Michal Hocko
2016-04-20 20:58                     ` Michal Hocko
2016-04-20 21:06                   ` H. Peter Anvin
2016-04-20 21:06                     ` H. Peter Anvin
2016-04-20 21:36                     ` Borislav Petkov
2016-04-20 22:29                       ` H. Peter Anvin
2016-04-20 22:29                         ` H. Peter Anvin
2016-04-21 11:35                         ` Borislav Petkov
2016-04-21 11:35                           ` Borislav Petkov
2016-04-21 13:09                           ` Michal Hocko
2016-04-21 13:09                             ` Michal Hocko
2016-04-21 13:21                             ` Borislav Petkov
2016-04-21 13:21                               ` Borislav Petkov
2016-04-27 12:02                         ` [PATCH] x86/locking/rwsem: Cleanup ____down_write() Borislav Petkov
2016-04-27 12:02                           ` Borislav Petkov
2016-04-22  6:53               ` [PATCH 10/11] x86, rwsem: provide __down_write_killable Ingo Molnar
2016-04-22  6:53                 ` Ingo Molnar
2016-04-13  9:57   ` [PATCH] x86: add frame annotation for call_rwsem_down_write_failed_killable Michal Hocko
2016-04-07 15:12 ` [PATCH 11/11] locking, rwsem: provide down_write_killable Michal Hocko
2016-04-07 15:12   ` Michal Hocko
2016-04-12  9:37 ` [PATCH 0/11] introduce down_write_killable for rw_semaphore v3 Michal Hocko
2016-04-12  9:37   ` Michal Hocko
2016-04-12 15:40   ` Peter Zijlstra
2016-04-12 15:40     ` Peter Zijlstra
2016-04-12 18:01     ` Michal Hocko
2016-04-12 18:01       ` Michal Hocko

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).