All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/10] mm/memcg: per-memcg per-zone lru locking
@ 2012-02-20 23:26 ` Hugh Dickins
  0 siblings, 0 replies; 72+ messages in thread
From: Hugh Dickins @ 2012-02-20 23:26 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Konstantin Khlebnikov, KAMEZAWA Hiroyuki, Johannes Weiner,
	Ying Han, linux-mm, linux-kernel

Here is my per-memcg per-zone LRU locking series, as promised last year.

zone->lru_lock is a heavily contended lock, and we expect that splitting
it across memcgs will show benefit on systems with many cpus.  Sorry, no
performance numbers included yet (I did try yesterday, but my own machines
are too small to show any advantage - it'll be a shame if the same proves
so for large ones!); but otherwise tested and ready.

Konstantin Khlebnikov posted RFC for a competing series a few days ago:
[PATCH RFC 00/15] mm: memory book keeping and lru_lock splitting
https://lkml.org/lkml/2012/2/15/445
and then today
[PATCH v2 00/22] mm: lru_lock splitting
https://lkml.org/lkml/2012/2/20/252

I haven't glanced at v2 yet, but judging by a quick look at the RFC:
the two series have lots of overlap and much in common, so I'd better
post this now before the numbers, to help us exchange ideas.  If you
choose to use either series, we shall probably want to add in pieces
from the other.

There should be a further patch, to update references to zone->lru_lock
in comments and Documentation; but that's just a distraction at the
moment, better held over until our final direction is decided.

These patches are based upon what I expect in the next linux-next with
an update from akpm: perhaps 3.3.0-rc4-next-20120222, or maybe later.
They were prepared on 3.3.0-rc3-next-20120217 plus recent mm-commits:

memcg-remove-export_symbolmem_cgroup_update_page_stat.patch
memcg-simplify-move_account-check.patch
memcg-simplify-move_account-check-fix.patch
memcg-remove-pcg_move_lock-flag-from-page_cgroup.patch
memcg-use-new-logic-for-page-stat-accounting.patch
memcg-use-new-logic-for-page-stat-accounting-fix.patch
memcg-remove-pcg_file_mapped.patch
memcg-fix-performance-of-mem_cgroup_begin_update_page_stat.patch
memcg-fix-performance-of-mem_cgroup_begin_update_page_stat-fix.patch
mm-memcontrolc-s-stealed-stolen.patch

mm-vmscan-handle-isolated-pages-with-lru-lock-released.patch
mm-vmscan-forcibly-scan-highmem-if-there-are-too-many-buffer_heads-pinning-highmem-fix.patch
mm-vmscan-forcibly-scan-highmem-if-there-are-too-many-buffer_heads-pinning-highmem-fix-fix.patch

But it looks like there are no clashes with the first ten of those,
the last three little rearrangements in vmscan.c should be enough.
I see Konstantin has based his v2 off 3.3.0-rc3-next-20120210: that
should be good for mine too, if you add the last three commits on first.

Per-memcg per-zone LRU locking series:

 1/10 mm/memcg: scanning_global_lru means mem_cgroup_disabled
 2/10 mm/memcg: move reclaim_stat into lruvec
 3/10 mm/memcg: add zone pointer into lruvec
 4/10 mm/memcg: apply add/del_page to lruvec
 5/10 mm/memcg: introduce page_relock_lruvec
 6/10 mm/memcg: take care over pc->mem_cgroup
 7/10 mm/memcg: remove mem_cgroup_reset_owner
 8/10 mm/memcg: nest lru_lock inside page_cgroup lock
 9/10 mm/memcg: move lru_lock into lruvec
10/10 mm/memcg: per-memcg per-zone lru locking

 include/linux/memcontrol.h |   67 +----
 include/linux/mm_inline.h  |   20 -
 include/linux/mmzone.h     |   33 +-
 include/linux/swap.h       |   68 +++++
 mm/compaction.c            |   64 +++--
 mm/huge_memory.c           |   13 -
 mm/ksm.c                   |   11 
 mm/memcontrol.c            |  402 +++++++++++++++++------------------
 mm/migrate.c               |    2 
 mm/page_alloc.c            |   11 
 mm/swap.c                  |  138 ++++--------
 mm/swap_state.c            |   10 
 mm/vmscan.c                |  396 +++++++++++++++++-----------------
 13 files changed, 605 insertions(+), 630 deletions(-)

Next step: I shall be looking at and trying Konstantin's,
and I hope he can look at and try mine.

Hugh

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

end of thread, other threads:[~2012-02-23 14:21 UTC | newest]

Thread overview: 72+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-20 23:26 [PATCH 0/10] mm/memcg: per-memcg per-zone lru locking Hugh Dickins
2012-02-20 23:26 ` Hugh Dickins
2012-02-20 23:28 ` [PATCH 1/10] mm/memcg: scanning_global_lru means mem_cgroup_disabled Hugh Dickins
2012-02-20 23:28   ` Hugh Dickins
2012-02-21  8:03   ` KAMEZAWA Hiroyuki
2012-02-21  8:03     ` KAMEZAWA Hiroyuki
2012-02-20 23:29 ` [PATCH 2/10] mm/memcg: move reclaim_stat into lruvec Hugh Dickins
2012-02-20 23:29   ` Hugh Dickins
2012-02-21  8:05   ` KAMEZAWA Hiroyuki
2012-02-21  8:05     ` KAMEZAWA Hiroyuki
2012-02-20 23:30 ` [PATCH 3/10] mm/memcg: add zone pointer " Hugh Dickins
2012-02-20 23:30   ` Hugh Dickins
2012-02-21  8:08   ` KAMEZAWA Hiroyuki
2012-02-21  8:08     ` KAMEZAWA Hiroyuki
2012-02-20 23:32 ` [PATCH 4/10] mm/memcg: apply add/del_page to lruvec Hugh Dickins
2012-02-20 23:32   ` Hugh Dickins
2012-02-21  8:20   ` KAMEZAWA Hiroyuki
2012-02-21  8:20     ` KAMEZAWA Hiroyuki
2012-02-21 22:25     ` Hugh Dickins
2012-02-21 22:25       ` Hugh Dickins
2012-02-20 23:33 ` [PATCH 5/10] mm/memcg: introduce page_relock_lruvec Hugh Dickins
2012-02-20 23:33   ` Hugh Dickins
2012-02-21  8:38   ` KAMEZAWA Hiroyuki
2012-02-21  8:38     ` KAMEZAWA Hiroyuki
2012-02-21 22:36     ` Hugh Dickins
2012-02-21 22:36       ` Hugh Dickins
2012-02-20 23:34 ` [PATCH 6/10] mm/memcg: take care over pc->mem_cgroup Hugh Dickins
2012-02-20 23:34   ` Hugh Dickins
2012-02-21  5:55   ` Konstantin Khlebnikov
2012-02-21  5:55     ` Konstantin Khlebnikov
2012-02-21 19:37     ` Hugh Dickins
2012-02-21 19:37       ` Hugh Dickins
2012-02-21 20:40       ` Konstantin Khlebnikov
2012-02-21 20:40         ` Konstantin Khlebnikov
2012-02-21 22:05         ` Hugh Dickins
2012-02-21 22:05           ` Hugh Dickins
2012-02-21  6:05   ` Konstantin Khlebnikov
2012-02-21  6:05     ` Konstantin Khlebnikov
2012-02-21 20:00     ` Hugh Dickins
2012-02-21 20:00       ` Hugh Dickins
2012-02-21  9:13   ` KAMEZAWA Hiroyuki
2012-02-21  9:13     ` KAMEZAWA Hiroyuki
2012-02-21 23:03     ` Hugh Dickins
2012-02-21 23:03       ` Hugh Dickins
2012-02-22  4:05       ` Konstantin Khlebnikov
2012-02-22  4:05         ` Konstantin Khlebnikov
2012-02-20 23:35 ` [PATCH 7/10] mm/memcg: remove mem_cgroup_reset_owner Hugh Dickins
2012-02-20 23:35   ` Hugh Dickins
2012-02-21  9:17   ` KAMEZAWA Hiroyuki
2012-02-21  9:17     ` KAMEZAWA Hiroyuki
2012-02-20 23:36 ` [PATCH 8/10] mm/memcg: nest lru_lock inside page_cgroup lock Hugh Dickins
2012-02-20 23:36   ` Hugh Dickins
2012-02-21  9:48   ` KAMEZAWA Hiroyuki
2012-02-21  9:48     ` KAMEZAWA Hiroyuki
2012-02-20 23:38 ` [PATCH 9/10] mm/memcg: move lru_lock into lruvec Hugh Dickins
2012-02-20 23:38   ` Hugh Dickins
2012-02-21  7:08   ` Konstantin Khlebnikov
2012-02-21  7:08     ` Konstantin Khlebnikov
2012-02-21 20:12     ` Hugh Dickins
2012-02-21 20:12       ` Hugh Dickins
2012-02-21 21:35       ` Konstantin Khlebnikov
2012-02-21 21:35         ` Konstantin Khlebnikov
2012-02-21 22:12         ` Hugh Dickins
2012-02-21 22:12           ` Hugh Dickins
2012-02-22  3:43           ` Konstantin Khlebnikov
2012-02-22  3:43             ` Konstantin Khlebnikov
2012-02-22  6:09             ` Hugh Dickins
2012-02-22  6:09               ` Hugh Dickins
2012-02-23 14:21               ` Konstantin Khlebnikov
2012-02-23 14:21                 ` Konstantin Khlebnikov
2012-02-20 23:39 ` [PATCH 10/10] mm/memcg: per-memcg per-zone lru locking Hugh Dickins
2012-02-20 23:39   ` Hugh Dickins

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.