CKRM Basics ------------- A brief review of CKRM concepts and terminology will help make installation and testing easier. For more details, please visit http://ckrm.sf.net. Currently there are two class types, taskclass and socketclass for grouping, regulating and monitoring tasks and sockets respectively. To avoid repeating instructions for each classtype, this document assumes a task to be the kernel object being grouped. By and large, one can replace task with socket and taskclass with socketclass. RCFS depicts a CKRM class as a directory. Hierarchy of classes can be created in which children of a class share resources allotted to the parent. Tasks can be classified to any class which is at any level. There is no correlation between parent-child relationship of tasks and the parent-child relationship of classes they belong to. Without a Classification Engine, class is inherited by a task. A privileged user can reassigned a task to a class as described below, after which all the child tasks under that task will be assigned to that class, unless the user reassigns any of them. A Classification Engine, if one exists, will be used by CKRM to classify a task to a class. The Rule based classification engine uses some of the attributes of the task to classify a task. When a CE is present class is not inherited by a task. Characteristics of a class can be accessed/changed through the following magic files under the directory representing the class: shares: allows to change the shares of different resources managed by the class stats: allows to see the statistics associated with each resources managed by the class target: allows to assign a task to a class. If a CE is present, assigning a task to a class through this interface will prevent CE from reassigning the task to any class during reclassification. members: allows to see which tasks has been assigned to a class config: allow to view and modify configuration information of different resources in a class. Resource allocations for a class is controlled by the parameters: guarantee: specifies how much of a resource is guranteed to a class. A special value DONT_CARE(-2) mean that there is no specific guarantee of a resource is specified, this class may not get any resource if the system is runing short of resources limit: specifies the maximum amount of resource that is allowed to be allocated by a class. A special value DONT_CARE(-2) mean that there is no specific limit is specified, this class can get all the resources available. total_guarantee: total guarantee that is allowed among the children of this class. In other words, the sum of "guarantee"s of all children of this class cannot exit this number. max_limit: Maximum "limit" allowed for any of this class's children. In other words, "limit" of any children of this class cannot exceed this value. None of this parameters are absolute or have any units associated with them. These are just numbers(that are relative to its parents') that are used to calculate the absolute number of resource available for a specific class. Note: The root class has an absolute number of resource units associated with it.