• Vipin Sharma's avatar
    cgroup: Add misc cgroup controller · a72232ea
    Vipin Sharma authored
    The Miscellaneous cgroup provides the resource limiting and tracking
    mechanism for the scalar resources which cannot be abstracted like the
    other cgroup resources. Controller is enabled by the CONFIG_CGROUP_MISC
    config option.
    
    A resource can be added to the controller via enum misc_res_type{} in
    the include/linux/misc_cgroup.h file and the corresponding name via
    misc_res_name[] in the kernel/cgroup/misc.c file. Provider of the
    resource must set its capacity prior to using the resource by calling
    misc_cg_set_capacity().
    
    Once a capacity is set then the resource usage can be updated using
    charge and uncharge APIs. All of the APIs to interact with misc
    controller are in include/linux/misc_cgroup.h.
    
    Miscellaneous controller provides 3 interface files. If two misc
    resources (res_a and res_b) are registered then:
    
    misc.capacity
    A read-only flat-keyed file shown only in the root cgroup.  It shows
    miscellaneous scalar resources available on the platform along with
    their quantities::
    
        $ cat misc.capacity
        res_a 50
        res_b 10
    
    misc.current
    A read-only flat-keyed file shown in the non-root cgroups.  It shows
    the current usage of the resources in the cgroup and its children::
    
        $ cat misc.current
        res_a 3
        res_b 0
    
    misc.max
    A read-write flat-keyed file shown in the non root cgroups. Allowed
    maximum usage of the resources in the cgroup and its children.::
    
        $ cat misc.max
        res_a max
        res_b 4
    
    Limit can be set by::
    
        # echo res_a 1 > misc.max
    
    Limit can be set to max by::
    
        # echo res_a max > misc.max
    
    Limits can be set more than the capacity value in the misc.capacity
    file.
    Signed-off-by: default avatarVipin Sharma <vipinsh@google.com>
    Reviewed-by: default avatarDavid Rientjes <rientjes@google.com>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    a72232ea
misc.c 9.29 KB