linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Lee Schermerhorn <lee.schermerhorn@hp.com>
To: linux-mm@kvack.org, linux-numa@vger.kernel.org
Cc: Tejun Heo <tj@kernel.org>, Mel Gorman <mel@csn.ul.ie>,
	Andi@domain.invalid, Kleen@domain.invalid, andi@firstfloor.org,
	Christoph Lameter <cl@linux-foundation.org>,
	Nick Piggin <npiggin@suse.de>,
	David Rientjes <rientjes@google.com>,
	eric.whitney@hp.com, Andrew Morton <akpm@linux-foundation.org>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: [PATCH 0/8] Numa: Use Generic Per-cpu Variables for numa_*_id()
Date: Thu, 15 Apr 2010 13:29:50 -0400	[thread overview]
Message-ID: <20100415172950.8801.60358.sendpatchset@localhost.localdomain> (raw)

Use Generic Per cpu infrastructure for numa_*_id() V4

Series Against: 2.6.34-rc3-mmotm-100405-1609

Background:

V1 of this series resolved a fairly serious performance problem on our ia64
platforms with memoryless nodes because SLAB cannot cache object from a remote
node, even tho' that node is the effective "local memory node" for a given cpu.
V1 caused no regression in x86_64 [a slight improvement even] for the admittedly
few tests that I ran.

Christoph Lameter suggested the approach implemented in V2 and later:  define
a new function--numa_mem_id()--that returns the "local memory node" for cpus
attached to memoryless nodes.  Christoph also suggested that, while at it, I
could modify the implementation of numa_node_id() [and the related cpu_to_node()]
to use the generic percpu variable implementation.

While implementing V2, I encountered a circular header dependency between:

	topology.h -> percpu.h -> slab.h -> gfp.h -> topology.h

I resolved this by moving the generic percpu functions to
include/asm-generic/percpu.h so that various arch asm/percpu.h could include
that, and topology.h could include asm/percpu.h to avoid including slab.h,
breaking the circular dependency.  Reviewers didn't like that.  Matthew Willcox
suggested that I uninline percpu_alloc()/free() for the !SMP config and remove
slab.h from percpu.h.  I tried that.  I broke the build of a LOT of files.  Tejun
Heo mentioned that percpu-defs.h would be a better place for the generic function
definitions.  V3 implemented that suggestion.

Later, Tejun decided to jump in and remove slab.h from percpu.h and semi-
automagically fix up all of the affected modules.  V4 is implemented atop Tejun's
series now in mmotm.  Again, this solves the slab performance problem on our
servers configured with memoryless nodes, and shows no regression with
hackbench on x86_64.  Of course, more performance testing would be welcome.

The slab changes in patch 6 of the series need review w/rt to node hot plug
that could change the effective "local memory node" for a memoryless node
by inserting a "nearer" node in the zonelists.  An additional patch may be
required to address this.

Lee

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

             reply	other threads:[~2010-04-15 17:30 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-15 17:29 Lee Schermerhorn [this message]
2010-04-15 17:29 ` [PATCH 1/8] numa: add generic percpu var numa_node_id() implementation Lee Schermerhorn
2010-04-16 16:43   ` Christoph Lameter
2010-04-16 20:33   ` Andrew Morton
2010-04-19 13:22     ` Lee Schermerhorn
2010-04-19  2:32   ` KAMEZAWA Hiroyuki
2010-04-15 17:30 ` [PATCH 2/8] numa: x86_64: use " Lee Schermerhorn
2010-04-16 16:46   ` Christoph Lameter
2010-04-18  2:56     ` Tejun Heo
2010-04-29 16:56       ` Lee Schermerhorn
2010-04-30  4:58         ` Tejun Heo
2010-05-02  1:49           ` Christoph Lameter
2010-04-15 17:30 ` [PATCH 3/8] numa: ia64: " Lee Schermerhorn
2010-04-19  2:51   ` KAMEZAWA Hiroyuki
2010-04-15 17:30 ` [PATCH 4/8] numa: Introduce numa_mem_id()- effective local memory node id Lee Schermerhorn
2010-04-18  3:13   ` Tejun Heo
2010-04-15 17:30 ` [PATCH 5/8] numa: ia64: support numa_mem_id() for memoryless nodes Lee Schermerhorn
2010-04-18  3:14   ` Tejun Heo
2010-04-15 17:30 ` [PATCH 6/8] numa: slab: use numa_mem_id() for slab local memory node Lee Schermerhorn
2010-05-12 18:49   ` Andrew Morton
2010-05-12 19:11     ` Lee Schermerhorn
2010-05-12 19:25       ` Valdis.Kletnieks
2010-05-12 20:03         ` Lee Schermerhorn
2010-04-15 17:30 ` [PATCH 7/8] numa: in-kernel profiling: use cpu_to_mem() for per cpu allocations Lee Schermerhorn
2010-04-15 17:30 ` [PATCH 8/8] numa: update Documentation/vm/numa, add memoryless node info Lee Schermerhorn
2010-04-15 18:00   ` Randy Dunlap
2010-04-16  0:50   ` KAMEZAWA Hiroyuki
2010-04-18  3:19 ` [PATCH 0/8] Numa: Use Generic Per-cpu Variables for numa_*_id() Tejun Heo
2010-04-19 13:29   ` Lee Schermerhorn

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=20100415172950.8801.60358.sendpatchset@localhost.localdomain \
    --to=lee.schermerhorn@hp.com \
    --cc=Andi@domain.invalid \
    --cc=Kleen@domain.invalid \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=cl@linux-foundation.org \
    --cc=eric.whitney@hp.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=linux-mm@kvack.org \
    --cc=linux-numa@vger.kernel.org \
    --cc=mel@csn.ul.ie \
    --cc=npiggin@suse.de \
    --cc=rientjes@google.com \
    --cc=tj@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).