On Thu, 2012-10-11 at 09:55 -0300, Lucas Meneghel Rodrigues wrote:
> Sateesh,
> 
> I wonder if you ever saw the Cgroup class that was developed by
> ldoktor. Currently it is on a test module
> 

Yes, I had gone through them, this particular functionality is not
available AFIK.

> https://github.com/autotest/autotest-client-tests/blob/master/cgroup/cgroup_common.py
> https://github.com/autotest/autotest-client-tests/blob/master/cgroup/cgroup_client.py
> 
> But we could move them into the client (or shared) library. Lukas'
> implementation takes care of of a good deal of what you want to do
> with cgroups.

Agree, As you said these files have many other useful functions which
will aid for any cgroup related tests, please consider moving them in to
the shared library.

> Please let me know what you think,
> 
This particular patch mainly intended to resolve the controller path of
a given task id, where in there is already a created controller group,
which is the case for VM's created by libvirt, and this patch will aid
the future virsh patchs like memtune, blkiotune etc...

Let me know your view, if fine, please consider pushing it after
review. 

Regards,
-Satheesh.
> Lucas
> 
> On Thu, Oct 11, 2012 at 6:47 AM,  <[email protected]> wrote:
> > From: Satheesh Rajendran <[email protected]>
> >
> > This function would provide a support for resolving a cgroup path for a 
> > specific controller and a given task id.
> >
> >
> >
> > Signed-off-by: Satheesh Rajendran <[email protected]>
> > ---
> >  client/base_utils.py |   36 ++++++++++++++++++++++++++++++++++++
> >  1 files changed, 36 insertions(+), 0 deletions(-)
> >
> > diff --git a/client/base_utils.py b/client/base_utils.py
> > index 5e45efd..8485142 100644
> > --- a/client/base_utils.py
> > +++ b/client/base_utils.py
> > @@ -825,3 +825,39 @@ def suspend_to_disk():
> >      Suspend the system to disk (S4)
> >      """
> >      set_power_state('disk')
> > +
> > +
> > +def resolve_task_cgroup_path(pid, controller):
> > +    """
> > +    Resolving cgroup mount path of a particular task
> > +
> > +    @params: pid : process id of a task for which the cgroup path required
> > +    @params: controller: takes one of the controller names in controller 
> > list
> > +
> > +    @return: resolved path for cgroup controllers of a given pid
> > +    """
> > +
> > +    # Initialise cgroup controller list
> > +    controller_list = [ 'cpuacct', 'cpu', 'memory', 'cpuset',
> > +                        'devices', 'freezer', 'blkio', 'netcls' ]
> > +
> > +    if controller not in controller_list:
> > +        raise error.TestError("Doesn't support controller <%s>" % 
> > controller)
> > +
> > +    root_path = get_cgroup_mountpoint(controller)
> > +
> > +    proc_cgroup = "/proc/%d/cgroup" % pid
> > +    if not os.path.isfile(proc_cgroup):
> > +        raise NameError('File %s does not exist\n Check whether cgroup \
> > +                                    installed in the system' % proc_cgroup)
> > +
> > +    f = open(proc_cgroup, 'r')
> > +    proc_cgroup_txt = f.read()
> > +    f.close
> > +
> > +    mount_path = re.findall(r":%s:(\S*)\n" % controller, proc_cgroup_txt)
> > +    logging.info(mount_path[0])
> > +
> > +    path = root_path + mount_path[0]
> > +    logging.info(path)
> > +    return path
> > --
> > 1.7.1
> >
> > _______________________________________________
> > Autotest-kernel mailing list
> > [email protected]
> > https://www.redhat.com/mailman/listinfo/autotest-kernel
> 
> 
> 


_______________________________________________
Autotest-kernel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/autotest-kernel

Reply via email to