linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: KUROSAWA Takahiro <kurosawa@valinux.co.jp>
To: Paul Jackson <pj@sgi.com>
Cc: taka@valinux.co.jp, magnus.damm@gmail.com, dino@in.ibm.com,
	linux-kernel@vger.kernel.org, ckrm-tech@lists.sourceforge.net
Subject: Re: [ckrm-tech] Re: [PATCH 1/3] CPUMETER: add cpumeter framework to the CPUSETS
Date: Wed, 28 Sep 2005 15:21:42 +0900	[thread overview]
Message-ID: <20050928062146.6038E70041@sv1.valinux.co.jp> (raw)
In-Reply-To: <20050927084905.7d77bdde.pj@sgi.com>

On Tue, 27 Sep 2005 08:49:05 -0700
Paul Jackson <pj@sgi.com> wrote:

> Instead of doing the impossible and trying to mark all the children
> of C as meter_cpu all at same instant in time, I should just mark the
> parent cpuset C, one time.  

I agree with your idea.
Marking the parent cpuset C instead of marking each child seems to make
things quite easier.

> Then if C is so marked, its -children- now
> have the meter_cpu_* files, which can default at that instant in time to
> providing (1/N) of the cpu to each of the N children of C.

Maybe the default value of meter_cpu_guar (guarantee) could be 0 
in this design, since guarantee 0 means no guarantee.  Resources
can even be allocated without guarantee.

> I would say that C can only be marked meter_cpu if:
>  * C is already marked cpu_exclusive.
>  * All of its children have the same 'cpus' setting as C.
>  * Any new child of C created after C is marked meter_cpu will
>    automatically start with the same 'cpus' setting as C, and
>    with the meter_cpu_* files.
>  * It is prohibited to change the 'cpus' of any cpuset whose
>    parent is marked meter_cpu.
>  * Changing the 'cpus' of a cpuset such as C that is itself
>    marked meter_cpu will instantly change the 'cpus' of each
>    of its children.
>  * It is prohibited to turn on the cpu_exclusive flag of a cpuset
>    whose parent is marked meter_cpu, or to turn off the cpu_exclusive
>    flag on a cpuset that is itself marked meter_cpu.

These seem good for me.

> The metered children of C may have their own children in turn, which
> may have cpus any subset of the cpus in C, but which cannot be marked
> cpu_exclusive or meter_cpu.
> 
> Borrowing your fine art work, and modifying it slightly, this looks
> like:
> 
>       +-----------------------------------+
>       |                                   |
>    CPUSET 0                            CPUSET 1 (aka 'C')
>    sched domain A                      sched domain B
>    cpus: 0, 1                          cpus: 2, 3
>    cpu_exclusive=1                     cpu_exclusive=1
>    meter_cpu=0                         meter_cpu=1
>                                           |
>                          +----------------+----------------+
>                          |                |                |
>                       CPUSET 1a        CPUSET 1b        CPUSET 1c
>                       cpus: 2, 3       cpus: 2, 3       cpus: 2, 3
>                       cpu_exclusive=0  cpu_exclusive=0  cpu_exclusive=0
>                       meter_cpu=0      meter_cpu=0      meter_cpu=0
>                       meter_cpu_*      meter_cpu_*      meter_cpu_*
>                          |
>             +------------+------------+
>             |                         |
>          CPUSET 2a                CPUSET 2b
>          cpus: 2                  cpus: 3
>          meter_cpu=0              meter_cpu=0
>          cpu_exclusive=0          cpu_exclusive=0
> 
> Note here that marking C (CPUSET 1) as meter_cpu exposes the meter_cpu_*
> files in the children of C.

If we split the cpus {2, 3} into {2} and {3} by creating CPUSET 2a 
and CPUSET 2b, the guarantee assigned to CPUSET 1a might not be
satisfied.  For example, the maximum cpu resource usage of tasks 
in CPUSET 2a should essentially be 50% because tasks in CPUSET 2a
can only use the half number of cpus.  If we set meter_cpu_guar=60% 
on CPUSET 1a, the problem might occur.  Maybe (or maybe not), we can 
leave this problem as it is.

> > Is it prohibited for any decendant of C's children to set meter_cpu=1 ?
> 
> Yes, I presume so, and made up my new rules above assuming that.  It is
> definitely worth an effort in my opinion to allow creating nested
> ordinary (not metered) cpusets below the children of C, but I am
> guessing it would be too hard to try to allow nesting of metered
> cpusets below metered cpusets.  If you have a mind to try that however,
> I am more than willing to listen to your proposal.

Probably allowing nested metered cpusets is too hard both to implement
and to use.  So far, I woundn't like to implement it.

> Therefore I propose some new cpuset flags:
>  * 'sched_domain' to mark sched domains (now done by the cpu_exclusive
>    flag),
>  * 'kernel_memory' to mark the constraints on GFP_KERNEL allocations,
>  * 'oom_killer' to mark the constraints on oom killing,
>  * your 'meter_cpu' flag to mark a set of metered cpus, and
>  * your 'meter_mem' flag to mark a set of metered mems.

This seems very interesting.  Tasks enclosed by a certain cpuset may
want to change the behavior of oom_killer.

-- 
KUROSAWA, Takahiro

  reply	other threads:[~2005-09-28  6:21 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-08  5:39 [PATCH 0/5] SUBCPUSETS: a resource control functionality using CPUSETS KUROSAWA Takahiro
2005-09-08  7:23 ` Paul Jackson
2005-09-08  8:18   ` KUROSAWA Takahiro
2005-09-08 12:02     ` Paul Jackson
2005-09-09  1:38       ` KUROSAWA Takahiro
2005-09-09  4:12         ` Magnus Damm
2005-09-09  5:55           ` Paul Jackson
2005-09-09  7:52             ` Magnus Damm
2005-09-09  8:39               ` Paul Jackson
2005-09-09 11:38             ` Hirokazu Takahashi
2005-09-09 13:31               ` Paul Jackson
2005-09-10  7:11                 ` Hirokazu Takahashi
2005-09-10  8:52                   ` Paul Jackson
2005-09-11 16:02                     ` Hirokazu Takahashi
2005-09-26  9:33                     ` [PATCH 0/3] CPUMETER (Re: [PATCH 0/5] SUBCPUSETS: a resource control functionality using CPUSETS) KUROSAWA Takahiro
2005-10-02  4:20                       ` Paul Jackson
2005-10-04  2:49                         ` KUROSAWA Takahiro
2005-09-26  9:34                     ` [PATCH 1/3] CPUMETER: add cpumeter framework to the CPUSETS KUROSAWA Takahiro
2005-09-27  8:37                       ` Paul Jackson
2005-09-27  9:22                         ` Nick Piggin
2005-09-27 15:53                           ` [ckrm-tech] " Paul Jackson
2005-09-27 21:45                           ` Chandra Seetharaman
2005-09-28  6:35                           ` KUROSAWA Takahiro
2005-09-28 10:08                             ` Hirokazu Takahashi
2005-09-28 10:32                               ` KUROSAWA Takahiro
2005-09-27 11:39                         ` KUROSAWA Takahiro
2005-09-27 15:49                           ` [ckrm-tech] " Paul Jackson
2005-09-28  6:21                             ` KUROSAWA Takahiro [this message]
2005-09-28  6:43                               ` Paul Jackson
2005-09-28  7:08                               ` Paul Jackson
2005-09-28  7:53                                 ` KUROSAWA Takahiro
2005-09-28 16:49                                   ` Paul Jackson
2005-09-29  2:53                                     ` KUROSAWA Takahiro
2005-09-29  2:58                                       ` Paul Jackson
2005-09-30  9:39                                       ` Simon Derr
2005-09-30 14:21                                         ` Paul Jackson
2005-10-02  7:01                             ` Ok to change cpuset flags for sched domains? (was [PATCH 1/3] CPUMETER ...) Paul Jackson
2005-10-03 14:00                               ` Dinakar Guniguntala
2005-10-03 23:36                                 ` [ckrm-tech] " Paul Jackson
2005-09-28  9:25                           ` [PATCH][BUG] fix memory leak on reading cpuset files after seeking beyond eof KUROSAWA Takahiro
2005-09-28 13:42                             ` Paul Jackson
2005-09-28 13:42                             ` [PATCH] cpuset read past eof memory leak fix Paul Jackson
2005-09-28 15:01                               ` Linus Torvalds
2005-09-28 17:53                                 ` Paul Jackson
2005-09-28 18:03                                   ` Linus Torvalds
2005-09-28 18:03                                   ` Randy.Dunlap
2005-09-28 19:04                                     ` [ckrm-tech] " Paul Jackson
2005-09-28 14:29                           ` [PATCH 1/3] CPUMETER: add cpumeter framework to the CPUSETS Paul Jackson
2005-09-26  9:34                     ` [PATCH 2/3] CPUMETER: CPU resource controller KUROSAWA Takahiro
2005-09-26  9:34                     ` [PATCH 3/3] CPUMETER: connect the CPU resource controller to CPUMETER KUROSAWA Takahiro
2005-09-09 22:26           ` [PATCH 0/5] SUBCPUSETS: a resource control functionality using CPUSETS Matthew Helsley
2005-09-08 13:14   ` Dinakar Guniguntala
2005-09-08 14:11     ` Dipankar Sarma
2005-09-08 14:55       ` Paul Jackson
2005-09-08 14:59     ` Paul Jackson
2005-09-08 22:51     ` [ckrm-tech] " Chandra Seetharaman

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=20050928062146.6038E70041@sv1.valinux.co.jp \
    --to=kurosawa@valinux.co.jp \
    --cc=ckrm-tech@lists.sourceforge.net \
    --cc=dino@in.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --cc=pj@sgi.com \
    --cc=taka@valinux.co.jp \
    /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).