From Fedora Project Wiki
No edit summary
Line 1: Line 1:
== Feature Name ==
== ControlGroups ==
 
ControlGroups


== Summary ==
== Summary ==
Line 27: Line 25:


== Scope ==
== Scope ==
 
* Required extended testing and fixing of [http://libcg.sourceforge.net/ libcgroups] package and in time when libcgroups will be stable enough try to  add start to write another parts - based on existing ones.
Required extended testing and fixing of [http://libcg.sourceforge.net/ libcgroups] package and in time when libcgroups will be stable enough try to  add start to write another parts - based on existing ones.


== How To Test ==
== How To Test ==
Line 53: Line 50:
== User Experience ==
== User Experience ==
Currently, the <code>libcgroups</code> package has several bugs, these will have to be fixed at first. When that is out of the way, configuration (or even monitoring) tools would reduce the barrier of entry to using control groups on Linux significantly.
Currently, the <code>libcgroups</code> package has several bugs, these will have to be fixed at first. When that is out of the way, configuration (or even monitoring) tools would reduce the barrier of entry to using control groups on Linux significantly.
<!-- If this feature is noticeable by its target audience, how will their experiences change as a result?  Describe what they will see or notice. -->


== Dependencies ==
== Dependencies ==
Depends on kernel > 2.6.24 and <code>libcgroups</code> (current version is 0.32.2) which both are in Fedora since F-9.
* Depends on kernel > 2.6.24 and <code>libcgroups</code> (current version is 0.32.2) which both are in Fedora since F-9.
 
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this feature depends?  In other words, completion of another feature owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel feature)? -->


== Contingency Plan ==
== Contingency Plan ==
Currently, nothing depends on <code>libcgroup</code> or the tools which would use it. If things go really wrong, we can always go back to the last working version of <code>libcgroup</code>.
Currently, nothing depends on <code>libcgroup</code> or the tools which would use it. If things go really wrong, we can always go back to the last working version of <code>libcgroup</code>.
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "None necessary, revert to previous release behaviour."  Or it might not.  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->


== Documentation ==
== Documentation ==
Line 73: Line 62:
** [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=Documentation/scheduler/sched-rt-group.txt Documentation/scheduler/sched-rt-group.txt]
** [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=Documentation/scheduler/sched-rt-group.txt Documentation/scheduler/sched-rt-group.txt]
** [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=Documentation/scheduler/sched-design-CFS.txt Documentation/scheduler/sched-design-CFS.txt:]
** [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=Documentation/scheduler/sched-design-CFS.txt Documentation/scheduler/sched-design-CFS.txt:]
<code>Documentation/cgroups/</code>]
* <code>Documentation/cgroups/</code>]
* <code>libcg</code>:
* <code>libcg</code>:
** [http://libcg.sourceforge.net/ upstream site]
** [http://libcg.sourceforge.net/ upstream site]
Line 79: Line 68:


== Release Notes ==
== Release Notes ==
[http://libcg.sourceforge.net/ libcgroups] tool which helps to manipulate, control administrate and monitor control groups and the associated controllers. Using this tool it is possible to aggregate/partition set of tasks and their future children into hierarchical groups with specialized access to resources.  
[http://libcg.sourceforge.net/ libcgroups] is a tool which helps to manipulate, control administrate and monitor control groups and the associated controllers. Using this tool it is possible to aggregate/partition set of tasks and their future children into hierarchical groups with specialized access to resources.  
 
 
 
 
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->


== Comments and Discussion ==
== Comments and Discussion ==
* See [[Talk:Features/ControlGroups]]


<!-- * See [[Talk:Features/YourFeatureName]]  <!-- This adds a link to the "discussion" tab associated with your page.  This provides the ability to have ongoing comments or conversation without bogging down the main feature page -->
[[Category:FeatureReadyForFesco]]
 
 
----
 
[[Category:FeaturePageIncomplete]]
<!-- When your feature page is completed and ready for review -->
<!-- When your feature page is completed and ready for review -->
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->

Revision as of 18:34, 5 February 2009

ControlGroups

Summary

Improve the existing tools where necessary and feasible and/or to create new ones e.g. to create or modify persistent cgroups configuration (using libcgroups package).

Owner

Current status

  • Targeted release:
  • Last updated: 2009-01-19
  • Percentage of completion: 0%

Detailed Description

Since kernel 2.6.24, Linux has so called control groups as a means to partition available resources between running processes. Libcgroups makes that functionality available to programmers and contains two tools, cgexec and cgclassify, to start processes in a control group or move existing processes from one control group to another.

Our goals are to improve the existing tools where necessary and feasible and/or to create new ones e.g. to create or modify persistent cgroups configuration. At the beginning the focus will be on command line tools, but we'll keep in mind that in the long term we'll likely want to have graphical tools. These would offer similar functionality and we should try to make sure that any non-UI code written is usable from both kinds of frontends.

First steps would include bugfixing, then creation of Python bindings to use from any GUI tools.

Benefit to Fedora

Libcgroups handles the new kernel features which are able to restrict the sources for tasks. This project should help the user to make the best of this feature.

Scope

  • Required extended testing and fixing of libcgroups package and in time when libcgroups will be stable enough try to add start to write another parts - based on existing ones.

How To Test

For now it is necessary to have a kernel with cgroups support (Documentation/cgroups.txt) and the libcgroups package.

Start the cgconfig service:

  • Create the /etc/cgconfig.conf configuration file (the example is in the /samples section, the initscript from version 0.32.2 is able to create the mount point itself and mount the filesystem to it).
  • For each mount point create the relevant directory and mount it. The filesystem type is cgroup, so an fstab line would look like this:
cgroup                   <mount-point>                cgroup  defaults        0 0

or you can mount it manually with this command:

mount -t cgroup cgroup <mount-point>

(see scripts/doc/howto.txt - this mentions that the script would mount it but this doesn't seem to work, probably a problem in the cgroup init script)

  • Then you can start the service:

/sbin/service cgconfig start

Problems (in 0.32.2)

  • Test example of cgconfig.conf from scripts/doc/howto.txt does not work.
  • Changing /etc/cgconfig.conf while cgconfig is running leads to a bunch of error messages if you try to restart it.

User Experience

Currently, the libcgroups package has several bugs, these will have to be fixed at first. When that is out of the way, configuration (or even monitoring) tools would reduce the barrier of entry to using control groups on Linux significantly.

Dependencies

  • Depends on kernel > 2.6.24 and libcgroups (current version is 0.32.2) which both are in Fedora since F-9.

Contingency Plan

Currently, nothing depends on libcgroup or the tools which would use it. If things go really wrong, we can always go back to the last working version of libcgroup.

Documentation

Release Notes

libcgroups is a tool which helps to manipulate, control administrate and monitor control groups and the associated controllers. Using this tool it is possible to aggregate/partition set of tasks and their future children into hierarchical groups with specialized access to resources.

Comments and Discussion