public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Andrew Morton <akpm@osdl.org>
Cc: Paul Jackson <pj@sgi.com>,
	dgc@sgi.com, steiner@sgi.com, Simon.Derr@bull.net, ak@suse.de,
	linux-kernel@vger.kernel.org, clameter@sgi.com
Subject: Re: [PATCH 1/5] cpuset memory spread basic implementation
Date: Mon, 6 Feb 2006 08:39:38 +0100	[thread overview]
Message-ID: <20060206073938.GA24366@elte.hu> (raw)
In-Reply-To: <20060205230816.4ae6b6e2.akpm@osdl.org>


* Andrew Morton <akpm@osdl.org> wrote:

> We're all on the same page here.  I'm questioning whether slab and 
> pagecache should be inextricably lumped together though.
> 
> Is it possible to integrate the slab and pagecache allocation policies 
> more cleanly into a process's mempolicy?  Right now, MPOL_* are 
> disjoint.
> 
> (Why is the spreading policy part of cpusets at all?  Shouldn't it be 
> part of the mempolicy layer?)

the whole mempolicy design seems to be too coarse: it is a fundamentally 
per-node thing, while workloads often share nodes. So it seems to me the 
approach Paul took was to make things more finegrained via cpusets - as 
that seems to be the preferred method to isolate workloads anyway.  
Cpusets are a limited form of virtualization / resource allocation, they 
allow the partitioning of a workload to a set of CPUs and a workload's 
memory allocations to a set of nodes.

in that sense, if we accept cpusets as the main abstraction for workload 
isolation on NUMA systems, it would be a natural and minimal extension 
to attach an access pattern hint to the cpuset - which is the broadest 
container of the workload. Mempolicies are pretty orthogonal to this and 
do not allow the separate handling of two workloads living in two 
different cpusets.

once we accept cpusets as the main abstraction, i dont think there is 
any fundamentally cleaner solution than the one presented by Paul. The 
advantage of having a 'global, per-cpuset' hint is obvious: the 
administrator can set it without having to change applications. Since it 
is global for the "virtual machine" (that is represented by the cpuset), 
the natural controls are limited to kernel entities: slab caches, 
pagecache, anonymous allocations.

what feels hacky is the knowledge about kernel-internal caches, but 
there's nothing else to control i think. Making it finegrained to the 
object level would make it impractical to use in the cpuset abstraction.

if we do not accept cpusets as the main abstraction, then per-task and
per-object hints seem to be the right control - which would have to be
used by the application.

the cpuset solution is certainly simpler to implement: the cpuset is 
already available to the memory allocator, so it's a simple step to 
extend it. Object-level flags would have to be passed down to the 
allocators - we dont have those right now as allocations are mostly 
anonymous.

also, maybe application / object level hints are _too_ finegrained: if a 
cpuset is used as a container for a 'project', then it's easy and 
straightforward to attach an allocation policy to it. Modifying hundreds 
of apps, some of which might be legacy, seems impractical - and the 
access pattern might very much depend on the project it is used in.

so to me the cpuset level seems to be the most natural point to control 
this: it is the level where resources are partitioned, and hence anyone 
configuring them should have a good idea about the expected access 
patterns of the project the cpuset belongs to. The application writer 
has little idea about the circumstances the app gets used in.

if we want to reduce complexity, i'd suggest to consolidate the MPOL_* 
mechanism into cpusets, and phase out the mempolicy syscalls. (The sysfs 
interface to cpusets is much cleaner anyway.)

	Ingo

  reply	other threads:[~2006-02-06  7:40 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-04  7:19 [PATCH 1/5] cpuset memory spread basic implementation Paul Jackson
2006-02-04  7:19 ` [PATCH 2/5] cpuset memory spread page cache implementation and hooks Paul Jackson
2006-02-04 23:49   ` Andrew Morton
2006-02-05  1:42     ` Paul Jackson
2006-02-05  1:54       ` Andrew Morton
2006-02-05  3:28         ` Christoph Lameter
2006-02-05  5:06           ` Andrew Morton
2006-02-05  6:08             ` Paul Jackson
2006-02-05  6:15               ` Andrew Morton
2006-02-05  6:28                 ` Paul Jackson
2006-02-06  0:20                 ` Paul Jackson
2006-02-06  5:51                 ` Paul Jackson
2006-02-06  7:14                   ` Pekka J Enberg
2006-02-06  7:42                     ` Pekka J Enberg
2006-02-06  7:51                       ` Pekka J Enberg
2006-02-06 17:32                         ` Pekka Enberg
2006-02-04  7:19 ` [PATCH 3/5] cpuset memory spread slab cache implementation Paul Jackson
2006-02-04 23:49   ` Andrew Morton
2006-02-05  3:37     ` Christoph Lameter
2006-02-04  7:19 ` [PATCH 4/5] cpuset memory spread slab cache optimizations Paul Jackson
2006-02-04 23:50   ` Andrew Morton
2006-02-05  3:18     ` Paul Jackson
2006-02-04 23:50   ` Andrew Morton
2006-02-05  4:10     ` Paul Jackson
2006-02-04  7:19 ` [PATCH 5/5] cpuset memory spread slab cache hooks Paul Jackson
2006-02-06  4:37   ` Andrew Morton
2006-02-04 23:49 ` [PATCH 1/5] cpuset memory spread basic implementation Andrew Morton
2006-02-05  3:35   ` Christoph Lameter
2006-02-06  4:33   ` Andrew Morton
2006-02-06  5:50     ` Paul Jackson
2006-02-06  6:02       ` Andrew Morton
2006-02-06  6:17         ` Ingo Molnar
2006-02-06  7:22           ` Paul Jackson
2006-02-06  7:43             ` Ingo Molnar
2006-02-06  8:19               ` Paul Jackson
2006-02-06  8:22                 ` Ingo Molnar
2006-02-06  8:40                   ` Ingo Molnar
2006-02-06  9:03                     ` Paul Jackson
2006-02-06  9:09                       ` Ingo Molnar
2006-02-06  9:27                         ` Paul Jackson
2006-02-06  9:37                           ` Ingo Molnar
2006-02-06 20:22                     ` Paul Jackson
2006-02-06  8:47                   ` Paul Jackson
2006-02-06  8:51                     ` Ingo Molnar
2006-02-06  9:09                       ` Paul Jackson
2006-02-06 10:09                   ` Andi Kleen
2006-02-06 10:11                     ` Ingo Molnar
2006-02-06 10:16                       ` Andi Kleen
2006-02-06 10:23                         ` Ingo Molnar
2006-02-06 10:35                           ` Andi Kleen
2006-02-06 14:42                           ` Paul Jackson
2006-02-06 14:35                         ` Paul Jackson
2006-02-06 16:48                           ` Christoph Lameter
2006-02-06 17:11                             ` Andi Kleen
2006-02-06 18:21                               ` Christoph Lameter
2006-02-06 18:36                                 ` Andi Kleen
2006-02-06 18:43                                   ` Christoph Lameter
2006-02-06 18:48                                     ` Andi Kleen
2006-02-06 19:19                                       ` Christoph Lameter
2006-02-06 20:27                                       ` Paul Jackson
2006-02-06 18:43                                   ` Ingo Molnar
2006-02-06 20:01                                     ` Paul Jackson
2006-02-06 20:05                                       ` Ingo Molnar
2006-02-06 20:27                                         ` Christoph Lameter
2006-02-06 20:41                                           ` Ingo Molnar
2006-02-06 20:49                                             ` Christoph Lameter
2006-02-06 21:07                                               ` Ingo Molnar
2006-02-06 22:10                                                 ` Christoph Lameter
2006-02-06 23:29                                                   ` Ingo Molnar
2006-02-06 23:45                                         ` Paul Jackson
2006-02-07  0:19                                           ` Ingo Molnar
2006-02-07  1:17                                             ` David Chinner
2006-02-07  9:31                                             ` Andi Kleen
2006-02-07 11:53                                               ` Ingo Molnar
2006-02-07 12:14                                                 ` Andi Kleen
2006-02-07 12:30                                                   ` Ingo Molnar
2006-02-07 12:43                                                     ` Andi Kleen
2006-02-07 12:58                                                       ` Ingo Molnar
2006-02-07 13:14                                                         ` Andi Kleen
2006-02-07 14:11                                                           ` Ingo Molnar
2006-02-07 14:23                                                             ` Andi Kleen
2006-02-07 17:11                                                               ` Christoph Lameter
2006-02-07 17:29                                                                 ` Andi Kleen
2006-02-07 17:39                                                                   ` Christoph Lameter
2006-02-07 17:10                                                       ` Christoph Lameter
2006-02-07 17:28                                                         ` Andi Kleen
2006-02-07 17:42                                                           ` Christoph Lameter
2006-02-07 17:51                                                             ` Andi Kleen
2006-02-07 17:06                                                     ` Christoph Lameter
2006-02-07 17:26                                                       ` Andi Kleen
2006-02-04 23:50 ` Andrew Morton
2006-02-04 23:57   ` David S. Miller
2006-02-06  4:37 ` Andrew Morton
2006-02-06  6:02   ` Ingo Molnar
2006-02-06  6:56   ` Paul Jackson
2006-02-06  7:08     ` Andrew Morton
2006-02-06  7:39       ` Ingo Molnar [this message]
2006-02-06  8:22         ` Paul Jackson
2006-02-06  8:35         ` Paul Jackson
2006-02-06  9:32       ` Paul Jackson
2006-02-06  9:57         ` Andrew Morton
2006-02-06  9:18 ` Simon Derr

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=20060206073938.GA24366@elte.hu \
    --to=mingo@elte.hu \
    --cc=Simon.Derr@bull.net \
    --cc=ak@suse.de \
    --cc=akpm@osdl.org \
    --cc=clameter@sgi.com \
    --cc=dgc@sgi.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pj@sgi.com \
    --cc=steiner@sgi.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox