public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
To: Bill Davidsen <davidsen@tmr.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>,
	Ingo Molnar <mingo@elte.hu>,
	Dhaval Giani <dhaval@linux.vnet.ibm.com>,
	Mike Galbraith <efault@gmx.de>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Dmitry Adamushko <dmitry.adamushko@gmail.com>,
	lkml <linux-kernel@vger.kernel.org>,
	maneesh@linux.vnet.ibm.com,
	Andrew Morton <akpm@linux-foundation.org>,
	Sudhir Kumar <skumar@linux.vnet.ibm.com>
Subject: Re: [RFC/PATCH -v2] Add sysfs control to modify a user's cpu share
Date: Thu, 4 Oct 2007 22:50:05 +0530	[thread overview]
Message-ID: <20071004172005.GA5519@linux.vnet.ibm.com> (raw)
In-Reply-To: <47050E79.6020100@tmr.com>

On Thu, Oct 04, 2007 at 12:02:01PM -0400, Bill Davidsen wrote:
> >>i'm wondering about the following: could not (yet) existing UIDs be made 
> >>configurable too? I.e. if i do this in a bootup script:
> >>
> >>  echo 2048 > /sys/kernel/uids/500/cpu_share
> >>
> >>this should just work too, regardless of there not being any UID 500 
> >>tasks yet. Likewise, once configured, the /sys/kernel/uids/* directories 
> >>(with the settings in them) should probably not go away either.
> >
> >Shouldn't that be done via uevents? E.g. UID x gets added to the sysfs 
> >tree,
> >generates a uevent and a script then figures out the cpu_share and sets it.
> >That way you also don't need to keep the directories. No?
> 
> That sounds complex administratively. It means that instead of setting a 
> higher or lower than default once and having it persist until reboot I 
> have to create a script, which *will* in some cases be left in place 
> even after the need has gone.
> 
> I agree with Ingo, once it's done it should be persistent.
> And as another administrative convenience I can look at that set of 
> values and see what shares are being used, even when the user is not 
> currently active.

Although the need seems very real, I am thinking about the implementation 
aspect of this in the kernel i.e how will this be implementable?

1. The current patch proposes a sysfs based interface, where a new
   directory is created for every new user created who logs into the 
   system. To meet the requirement Ingo suggested, it would require the
   ability to create directories in sysfs in advance of (user_struct) objects 
   that aren't yet there - which is not possible to implement in sysfs
   afaik

2. configfs seems to allow creation of directories (i.e kernel objects) from 
   userland. Every new directory created should translate to a
   user_struct object being created in the kernel (and inserted in
   uid_hash table). Would this be acceptable?

Also, IMHO, CONFIG_FAIR_USER_SCHED is there only as a toy, to test fair group 
scheduling and I expect distros to support CONFIG_FAIR_CGROUP_SCHED instead 
which allows "control group" (or process containers) based fair group 
scheduling.

Using CONFIG_FAIR_CGROUP_SCHED it is still possible to provide user-id based 
fair group scheduling, in two ways:

	1. Have a daemon which listens for UID change events
	   (PROC_EVENT_UID) and move the task to appropriate "control
	   groups" and set the "control group" shares
	2. Implement a "user" subsystem registered with "cgroup" core,
  	   which automatically creates new "control groups" whenever
 	   a new user is being added to the system. This is very similar
	   to "ns" subsystem (kernel/ns_cgroup.c in -mm tree).
 	   Thus in order to provide fair user scheduling with this option,
	   distro needs to modify initrd to:

		# mkdir /dev/usercpucontrol
		# mount -t cgroup -ouser,cpu none /dev/usercpucontrol

Using a combination of these two options and a /etc configuration file
which specifies the cpu shares to be given to a user, it should be
possible for distro to give a good fair-user based scheduler.

> Final question, how do setuid processes map into this implementation?

We seem to be going by the real uid of a task (which is what tsk->user
points at) to decide its CPU bandwidth. Is that a cause of concern?

-- 
Regards,
vatsa

  reply	other threads:[~2007-10-04 17:09 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-24 21:45 [git] CFS-devel, latest code Ingo Molnar
2007-09-24 21:55 ` Andrew Morton
2007-09-24 21:59   ` Ingo Molnar
2007-09-25  0:08 ` Daniel Walker
2007-09-25  6:45   ` Ingo Molnar
2007-09-25 15:17     ` Daniel Walker
2007-09-25  6:10 ` Mike Galbraith
2007-09-25  7:35   ` Mike Galbraith
2007-09-25  8:33     ` Mike Galbraith
2007-09-25  8:53       ` Srivatsa Vaddagiri
2007-09-25  9:11         ` Srivatsa Vaddagiri
2007-09-25  9:15           ` Mike Galbraith
2007-09-25  9:12         ` Mike Galbraith
2007-09-25  9:13       ` Ingo Molnar
2007-09-25  9:17         ` Mike Galbraith
2007-09-25  9:47           ` Ingo Molnar
2007-09-25 10:02             ` Mike Galbraith
2007-09-26  8:04             ` Mike Galbraith
2007-09-28 21:46             ` Bill Davidsen
2007-09-25  9:44         ` Srivatsa Vaddagiri
2007-09-25  9:40           ` Ingo Molnar
2007-09-25 10:10             ` Ingo Molnar
2007-09-25 10:28               ` Srivatsa Vaddagiri
2007-09-25 10:36                 ` Ingo Molnar
2007-09-25 11:33                   ` Ingo Molnar
2007-09-25 14:48                     ` Srivatsa Vaddagiri
2007-09-25 12:51                   ` Srivatsa Vaddagiri
2007-09-25 13:35                     ` Mike Galbraith
2007-09-25 14:07                       ` Srivatsa Vaddagiri
2007-09-25 12:28                 ` Mike Galbraith
2007-09-25 12:54                   ` Mike Galbraith
     [not found]                     ` <20070925131717.GM26289@linux.vnet.ibm.com>
     [not found]                       ` <1190725693.13716.10.camel@Homer.simpson.net>
     [not found]                         ` <20070925132528.GN26289@linux.vnet.ibm.com>
     [not found]                           ` <1190726682.11260.1.camel@Homer.simpson.net>
     [not found]                             ` <20070925140559.GB26310@linux.vnet.ibm.com>
     [not found]                               ` <20070925143755.GA15594@elte.hu>
     [not found]                                 ` <20070926210737.GA8663@elte.hu>
2007-10-01 14:04                                   ` [RFC/PATCH] Add sysfs control to modify a user's cpu share Dhaval Giani
2007-10-01 14:44                                     ` Ingo Molnar
2007-10-01 15:32                                       ` Srivatsa Vaddagiri
2007-10-02 22:12                                       ` Eric St-Laurent
2007-10-03  4:09                                         ` Srivatsa Vaddagiri
2007-10-03 17:10                                       ` [RFC/PATCH -v2] " Dhaval Giani
2007-10-04  7:57                                         ` Ingo Molnar
2007-10-04  8:54                                           ` Heiko Carstens
2007-10-04 16:02                                             ` Bill Davidsen
2007-10-04 17:20                                               ` Srivatsa Vaddagiri [this message]
2007-10-04 21:32                                             ` Valdis.Kletnieks
2007-10-05  7:01                                               ` Srivatsa Vaddagiri
2007-10-09 15:12                                             ` [PATCH sched-devel] Generate uevents for user creation/destruction Srivatsa Vaddagiri
2007-10-10  7:42                                               ` Ingo Molnar
2007-10-01 16:12                                     ` [RFC/PATCH] Add sysfs control to modify a user's cpu share Dave Jones
2007-10-01 16:37                                       ` Srivatsa Vaddagiri
2007-09-25  6:50 ` [git] CFS-devel, latest code S.Çağlar Onur
2007-09-25  9:17   ` Ingo Molnar
2007-09-25  7:41 ` Andrew Morton
2007-09-25  8:43   ` Srivatsa Vaddagiri
2007-09-25  8:48     ` Andrew Morton
2007-09-25 11:00     ` Ingo Molnar

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=20071004172005.GA5519@linux.vnet.ibm.com \
    --to=vatsa@linux.vnet.ibm.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=davidsen@tmr.com \
    --cc=dhaval@linux.vnet.ibm.com \
    --cc=dmitry.adamushko@gmail.com \
    --cc=efault@gmx.de \
    --cc=heiko.carstens@de.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maneesh@linux.vnet.ibm.com \
    --cc=mingo@elte.hu \
    --cc=skumar@linux.vnet.ibm.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