def list_sets(tset, recurse=None, usehex=False): """list cpusets specified in tset as cpuset or list of cpusets, recurse if true""" log.debug('entering list_sets, tset=%s recurse=%s', tset, recurse) sl = [] if isinstance(tset, list): for s in tset: sl.extend(cset.find_sets(s)) else: sl.extend(cset.find_sets(tset)) log.debug('total unique sets in passed tset: %d', len(sl)) sl2 = [] for s in sl: sl2.append(s) if len(s.subsets) > 0: sl2.extend(s.subsets) if recurse: for node in s.subsets: for nd in cset.walk_set(node): sl2.append(nd) sl = sl2 if config.mread: pl = ['cpuset_list_start'] else: pl = [''] pl.extend(set_header(' ')) for s in sl: if verbose: pl.append(set_details(s,' ', None, usehex)) else: pl.append(set_details(s,' ', 78, usehex)) if config.mread: pl.append('cpuset_list_end') log.info("\n".join(pl))
def list_sets(tset, recurse=None, usehex=False): """list cpusets specified in tset as cpuset or list of cpusets, recurse if true""" log.debug('entering list_sets, tset=%s recurse=%s', tset, recurse) sl = [] if isinstance(tset, list): for s in tset: sl.extend(cset.find_sets(s)) else: sl.extend(cset.find_sets(tset)) log.debug('total unique sets in passed tset: %d', len(sl)) sl2 = [] for s in sl: sl2.append(s) if len(s.subsets) > 0: sl2.extend(s.subsets) if recurse: for node in s.subsets: for nd in cset.walk_set(node): sl2.append(nd) sl = sl2 if config.mread: pl = ['cpuset_list_start'] else: pl = [''] pl.extend(set_header(' ')) for s in sl: if verbose: pl.append(set_details(s, ' ', None, usehex)) else: pl.append(set_details(s, ' ', 78, usehex)) if config.mread: pl.append('cpuset_list_end') log.info("\n".join(pl))
def test_walk_set(self): # no special checking ATM self.assertEqual(type(cset.unique_set("root")), cset.CpuSet) root_set = cset.find_sets("/") for node in root_set: for x in cset.walk_set(node): self.assertEqual(type(x), cset.CpuSet)
def destroy_sets(sets, recurse=False, force=False): """destroy cpusets in list of sets, recurse if true, if force destroy if tasks running""" log.debug('enter destroy_sets, sets=%s, force=%s', sets, force) nl = [] if isinstance(sets, list): nl.extend(sets) else: nl.append(sets) # check that sets passed are ok, will raise if one is bad sl2 = [] for s in nl: st = cset.unique_set(s) sl2.append(st) if len(st.subsets) > 0: if not recurse: raise CpusetException( 'cpuset "%s" has subsets, delete them first, or use --recurse' % st.path) elif not force: raise CpusetException( 'cpuset "%s" has subsets, use --force to destroy' % st.path) sl2.extend(st.subsets) for node in st.subsets: for nd in cset.walk_set(node): sl2.append(nd) # ok, good to go if recurse: sl2.reverse() for s in sl2: s = cset.unique_set(s) # skip the root set!!! or you'll have problems... if s.path == '/': continue log.info( '--> processing cpuset "%s", moving %s tasks to parent "%s"...', s.name, len(s.tasks), s.parent.path) proc.move(s, s.parent) log.info('--> deleting cpuset "%s"', s.path) destroy(s) log.info('done')
def destroy_sets(sets, recurse=False, force=False): """destroy cpusets in list of sets, recurse if true, if force destroy if tasks running""" log.debug('enter destroy_sets, sets=%s, force=%s', sets, force) nl = [] if isinstance(sets, list): nl.extend(sets) else: nl.append(sets) # check that sets passed are ok, will raise if one is bad sl2 = [] for s in nl: st = cset.unique_set(s) sl2.append(st) if len(st.subsets) > 0: if not recurse: raise CpusetException( 'cpuset "%s" has subsets, delete them first, or use --recurse' % st.path) elif not force: raise CpusetException( 'cpuset "%s" has subsets, use --force to destroy' % st.path) sl2.extend(st.subsets) for node in st.subsets: for nd in cset.walk_set(node): sl2.append(nd) # ok, good to go if recurse: sl2.reverse() for s in sl2: s = cset.unique_set(s) # skip the root set!!! or you'll have problems... if s.path == '/': continue log.info('--> processing cpuset "%s", moving %s tasks to parent "%s"...', s.name, len(s.tasks), s.parent.path) proc.move(s, s.parent) log.info('--> deleting cpuset "%s"', s.path) destroy(s) log.info('done')