def create(system, group): """ safely create cgroup path """ cgroups.create(system, group) # if sybsystem is memory, we set move_charge_at_immigrate # ref: https://lwn.net/Articles/432224/ if system == 'memory': memory_charge_immigrate(group)
def cgexec(into, subcommand): """execs command into given cgroup(s).""" cgrps = [cgrp.split(':') for cgrp in into] subsystems = set([subsystem for (subsystem, path) in cgrps]) cgroups.ensure_mounted(subsystems) for (subsystem, path) in cgrps: pathplus = path.split('=') if len(pathplus) == 2: group = os.path.dirname(pathplus[0]) pseudofile = os.path.basename(pathplus[0]) value = pathplus[1] cgroups.set_value(subsystem, group, pseudofile, value) else: cgroups.create(subsystem, path) cgroups.join(subsystem, path) if subcommand: execargs = list(subcommand) os.execvp(execargs[0], execargs)
def test_create(self): """Tests cgroup creation.""" group = os.path.join('treadmill', 'apps', 'test1') cgroups.create('cpu', group) cgroups.create('memory', group) cgroups.create('cpuacct', group) os.makedirs.assert_has_calls([ mock.call('/cgroups/treadmill/apps/test1'), mock.call('/cgroups/treadmill/apps/test1'), mock.call('/cgroups/treadmill/apps/test1') ])