in schemes.py [0:0]
def main(args=None):
global orig_attrs
if not args:
parser = argparse.ArgumentParser()
set_argparser(parser)
args = parser.parse_args()
_damon.chk_permission()
_damon.chk_update_debugfs(args.debugfs)
scheme_version = 0
if _damon.feature_supported('schemes_speed_limit'):
scheme_version = 1
if _damon.feature_supported('schemes_prioritization'):
scheme_version = 2
if _damon.feature_supported('schemes_wmarks'):
scheme_version = 3
if _damon.feature_supported('schemes_quotas'):
scheme_version = 4
signal.signal(signal.SIGINT, sighandler)
signal.signal(signal.SIGTERM, sighandler)
orig_attrs = _damon.current_attrs()
args.rbuf = 0
args.out = 'null'
args.schemes = _convert_damos.convert(args.schemes, args.sample, args.aggr,
scheme_version)
new_attrs = _damon.cmd_args_to_attrs(args)
init_regions = _damon.cmd_args_to_init_regions(args)
numa_node = args.numa_node
target = args.target
target_fields = target.split()
if target == 'paddr': # physical memory address space
if not init_regions:
if numa_node:
init_regions = _paddr_layout.paddr_region_of(numa_node)
else:
init_regions = [_paddr_layout.default_paddr_region()]
run_damon(target, False, init_regions, new_attrs, orig_attrs)
elif not subprocess.call('which %s &> /dev/null' % target_fields[0],
shell=True, executable='/bin/bash'):
run_damon(target, True, init_regions, new_attrs, orig_attrs)
else:
try:
pid = int(target)
except:
print('target \'%s\' is neither a command, nor a pid' % target)
exit(1)
run_damon(target, False, init_regions, new_attrs, orig_attrs)