parser.add_argument('ratio_start', type=float) parser.add_argument('ratio_end', type=float) parser.add_argument('ratio_interval', type=float) parser.add_argument('-p', '--pkt-sizes', type=comma_sep_numbers(64, 1500), metavar='NUM[,NUM...]', default=[64]) parser.add_argument('--io-batch-sizes', type=comma_sep_numbers(1, 256), metavar='NUM[,NUM...]', default=[64]) parser.add_argument('--comp-batch-sizes', type=comma_sep_numbers(1, 256), metavar='NUM[,NUM...]', default=[64]) parser.add_argument('--coproc-ppdepths', type=comma_sep_numbers(1, 256), metavar='NUM[,NUM...]', default=[32]) parser.add_argument('--pktgen', type=host_port_pair(54321), metavar='HOST:PORT', nargs='+', default=[('shader-marcel.anlab', 54321), ('shader-lahti.anlab', 54321)]) parser.add_argument('--emulate-io', action='store_true', default=False) parser.add_argument('-v', '--verbose', action='store_true', default=False) args = parser.parse_args() cpu_ratio_list = frange(args.ratio_start, args.ratio_end, args.ratio_interval) env = ExperimentEnv(verbose=args.verbose) pktgens = [] if not args.emulate_io: for host, port in args.pktgen: pktgens.append(PktGenRunner(host, port)) combinations = product(args.io_batch_sizes, args.comp_batch_sizes, args.coproc_ppdepths, args.pkt_sizes, cpu_ratio_list) print('{0} {1}'.format(args.sys_config_to_use, args.element_config_to_use)) print('# CPU ratio values: {0}'.format(', '.join(map(str, cpu_ratio_list)))) print('io-batch-size comp-batch-size coproc-ppdepth pkt-size cpu-ratio ' \ 'Mpps Gbps cpu-io-usr cpu-io-sys cpu-coproc-usr cpu-coproc-sys') for io_batch_size, comp_batch_size, coproc_ppdepth, pktsize, cpu_ratio in combinations:
type=comma_sep_numbers(64, 1500), metavar='NUM[,NUM...]', default=[64]) parser.add_argument('--pktgen', type=host_port_pair(54321), metavar='HOST:PORT[,HOST:PORT...]', default=[('shader-marcel.anlab', 54321), ('shader-lahti.anlab', 54321)]) parser.add_argument('--emulate-io', action='store_true', default=False, help='Use IO emulation mode.') parser.add_argument('-v', '--verbose', action='store_true', default=False) args = parser.parse_args() env = ExperimentEnv(verbose=args.verbose) ppc_reader = PPCReader(env, prefix='MEASURE') env.register_reader(ppc_reader) loop = asyncio.get_event_loop() pktgens = [] if not args.emulate_io: for host, port in args.pktgen: pktgens.append(PktGenRunner(host, port)) assert 'alb-measure' in args.element_config_to_use for pktsize in args.pkt_sizes: if 'ipv6' in args.element_config_to_use: # All random ipv6 pkts if args.emulate_io:
help= 'Pass-through the standard output instead of parsing it. No default timeout is applied.' ) parser.add_argument('--timeout', type=int, default=None, help='Set a forced timeout for transparent mode.') parser.add_argument( '--combine-cpu-gpu', action='store_true', default=False, help='Run the same config for CPU-only and GPU-only to compare.') parser.add_argument('-v', '--verbose', action='store_true', default=False) args = parser.parse_args() env = ExperimentEnv(verbose=args.verbose) thruput_reader = AppThruputReader(begin_after=25.0) env.register_reader(thruput_reader) loop = asyncio.get_event_loop() all_thruput_records = [] pktgens = [] if not args.emulate_io: for host, port in args.pktgen: pktgens.append(PktGenRunner(host, port)) if args.combine_cpu_gpu: base_conf_name, ext = os.path.splitext( os.path.basename(args.element_config_to_use)) conf_names = [ base_conf_name + '-cpuonly' + ext,
metavar='NUM[,NUM...]', default=[32]) parser.add_argument('--pktgen', type=host_port_pair(54321), metavar='HOST:PORT', nargs='+', default=[('shader-marcel.anlab', 54321), ('shader-lahti.anlab', 54321)]) parser.add_argument('--emulate-io', action='store_true', default=False) parser.add_argument('-v', '--verbose', action='store_true', default=False) args = parser.parse_args() cpu_ratio_list = frange(args.ratio_start, args.ratio_end, args.ratio_interval) env = ExperimentEnv(verbose=args.verbose) pktgens = [] if not args.emulate_io: for host, port in args.pktgen: pktgens.append(PktGenRunner(host, port)) combinations = product(args.io_batch_sizes, args.comp_batch_sizes, args.coproc_ppdepths, args.pkt_sizes, cpu_ratio_list) print('{0} {1}'.format(args.sys_config_to_use, args.element_config_to_use)) print('# CPU ratio values: {0}'.format(', '.join(map(str, cpu_ratio_list)))) print('io-batch-size comp-batch-size coproc-ppdepth pkt-size cpu-ratio ' \ 'Mpps Gbps cpu-io-usr cpu-io-sys cpu-coproc-usr cpu-coproc-sys')
' at the packet generator servers.\n' ' 2. Packet size argument is only valid in emulation mode.\n\n' 'Example: sudo ./scriptname default.py ipv4-router.click\n ', formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument('sys_config_to_use') parser.add_argument('element_config_to_use') parser.add_argument('-p', '--pkt-sizes', type=comma_sep_numbers(64, 1500), metavar='NUM[,NUM...]', default=[64]) parser.add_argument('--pktgen', type=host_port_pair(54321), metavar='HOST:PORT[,HOST:PORT...]', default=[('shader-marcel.anlab', 54321), ('shader-lahti.anlab', 54321)]) parser.add_argument('--emulate-io', action='store_true', default=False, help='Use IO emulation mode.') parser.add_argument('--timeout', type=int, default=None, help='Set a forced timeout for transparent mode.') parser.add_argument('-v', '--verbose', action='store_true', default=False) args = parser.parse_args() env = ExperimentEnv(verbose=args.verbose) ppc_reader = PPCReader(env) env.register_reader(ppc_reader) loop = asyncio.get_event_loop() pktgens = [] if not args.emulate_io: for host, port in args.pktgen: pktgens.append(PktGenRunner(host, port)) for pktsize in args.pkt_sizes: if 'ipv6' in args.element_config_to_use: # All random ipv6 pkts if args.emulate_io: emulate_opts = {'--emulated-pktsize': pktsize, '--emulated-ipversion': 6} else:
parser.add_argument('sys_config_to_use') parser.add_argument('element_config_to_use') parser.add_argument('-p', '--pkt-sizes', type=comma_sep_numbers(64, 1500), metavar='NUM[,NUM...]', default=[64]) parser.add_argument('--io-batch-sizes', type=comma_sep_numbers(1, 256), metavar='NUM[,NUM...]', default=[64]) parser.add_argument('--comp-batch-sizes', type=comma_sep_numbers(1, 256), metavar='NUM[,NUM...]', default=[64]) parser.add_argument('--coproc-ppdepths', type=comma_sep_numbers(1, 256), metavar='NUM[,NUM...]', default=[32]) parser.add_argument('--pktgen', type=host_port_pair(54321), metavar='HOST:PORT[,HOST:PORT...]', default=[('shader-marcel.anlab', 54321), ('shader-lahti.anlab', 54321)]) parser.add_argument('--emulate-io', action='store_true', default=False, help='Use IO emulation mode.') parser.add_argument('-t', '--transparent', action='store_true', default=False, help='Pass-through the standard output instead of parsing it. No default timeout is applied.') parser.add_argument('--timeout', type=int, default=None, help='Set a forced timeout for transparent mode.') parser.add_argument('--combine-cpu-gpu', action='store_true', default=False, help='Run the same config for CPU-only and GPU-only to compare.') parser.add_argument('-v', '--verbose', action='store_true', default=False) args = parser.parse_args() env = ExperimentEnv(verbose=args.verbose) thruput_reader = AppThruputReader(begin_after=25.0) env.register_reader(thruput_reader) loop = asyncio.get_event_loop() all_thruput_records = [] pktgens = [] if not args.emulate_io: for host, port in args.pktgen: pktgens.append(PktGenRunner(host, port)) if args.combine_cpu_gpu: base_conf_name, ext = os.path.splitext(os.path.basename(args.element_config_to_use)) conf_names = [base_conf_name + '-cpuonly' + ext, base_conf_name + '-gpuonly' + ext] else: conf_names = [args.element_config_to_use]
self._io_batch_size = cond_io self._comp_batch_size = cond_comp self._comp_ppdepths = cond_ppdepths self._io_core_util_usr = result_io_usr self._io_core_util_sys = result_io_sys self._comp_core_util_usr = result_comp_usr self._comp_core_util_sys = result_comp_sys def print_result(self): print('Maximum throughput: {0:10}'.format(self._thruput)) print('CPU utils: {0:6.2f} {1:6.2f} {2:6.2f} {3:6.2f}'.format(self._io_core_util_usr, self._io_core_util_sys, self._comp_core_util_usr, self._comp_core_util_sys)) print('Conditions: {0:5} {1:5} {2:5}'.format(self._io_batch_size, self._comp_batch_size, self._comp_ppdepths)) if __name__ == '__main__': env = ExperimentEnv(verbose=False) marcel = PktGenRunner('shader-marcel.anlab', 54321) lahti = PktGenRunner('shader-lahti.anlab', 54321) pktgens = [marcel, lahti] iobatchsizes = [32] compbatchsizes = [32] compppdepths = [16] packetsize = [64]#, 128, 256, 512, 1024, 1500] #branch_configs = ["l2fwd-echo-branch-lv1.click"]#, "l2fwd-echo-branch-lv2.click", "l2fwd-echo-branch-lv3.click"] branch_configs = ["l2fwd-echo-skewed-branch-lv3.click"] #branch_ratio = [50, 40, 30, 20, 10, 5, 1] branch_ratio = [99, 95, 90, 80, 70, 60, 50, 40, 30, 20, 10, 5, 1] print('Params: io-batch-size comp-batch-size comp-ppdepth pkt-size branch-lvl branch-ratio') print('Outputs: fwd-Mpps fwd-Gbps')
self._io_batch_size = cond_io self._comp_batch_size = cond_comp self._comp_ppdepths = cond_ppdepths self._io_core_util_usr = result_io_usr self._io_core_util_sys = result_io_sys self._comp_core_util_usr = result_comp_usr self._comp_core_util_sys = result_comp_sys def print_result(self): print('Maximum throughput: {0:10}'.format(self._thruput)) print('CPU utils: {0:6.2f} {1:6.2f} {2:6.2f} {3:6.2f}'.format(self._io_core_util_usr, self._io_core_util_sys, self._comp_core_util_usr, self._comp_core_util_sys)) print('Conditions: {0:5} {1:5} {2:5}'.format(self._io_batch_size, self._comp_batch_size, self._comp_ppdepths)) if __name__ == '__main__': env = ExperimentEnv(verbose=False) marcel = PktGenRunner('shader-marcel.anlab', 54321) #iobatchsizes = [8, 16, 32, 64, 128, 256] #compbatchsizes = [1, 8, 16, 32, 64, 128] #compppdepths = [1, 8, 16, 32, 64, 128] iobatchsizes = [32] compbatchsizes = [32] compppdepths = [16] no_port = [2] no_cpu = [8] no_node = [2] packetsize = [64]#, 128, 256, 512, 1024, 1500] branch_lv = [0,1,2,3,4,5] speed = [1,2,4,8] #,16,32,40,80]
metavar='NUM[,NUM...]', default=[64]) group.add_argument('-t', '--trace', action='store_true', default=False) # If -l is used with --combin-cpu-gpu, the latency CPU/GPU result will be merged into one. group = parser.add_mutually_exclusive_group() group.add_argument('--combine-cpu-gpu', action='store_true', default=False, help='Run the same config for CPU-only and GPU-only to compare.') group.add_argument('-l', '--latency', action='store_true', default=False, help='Save the latency histogram.' 'The packet generation rate is fixed to' '3 Gbps (for IPsec) or 10 Gbps (otherwise).') parser.add_argument('-v', '--verbose', action='store_true', default=False) args = parser.parse_args() assert args.timeout > 25.0, 'Too short timeout (must be > 25 seconds).' env = ExperimentEnv(verbose=args.verbose) env.main_bin = args.bin if args.cut is None: begin_after = 25.0 else: begin_after = max(25.0, args.timeout - args.cut) thruput_reader = AppThruputReader(begin_after=begin_after) env.register_reader(thruput_reader) loop = asyncio.get_event_loop() pktgen = PktGenController() loop.run_until_complete(pktgen.init()) conf_names = [] args._conf_path_map = dict() for elem_config in args.element_configs:
help='The hardware configuration filename (python scripts).') argparser.add_argument('pipeline_config', help='The pipeline configuration filename (.click files).') argparser.add_argument('-p', '--packet-size', type=int, default=60, help='The packet size to generate in packet generators. (default: 60 bytes)') argparser.add_argument('-v', '--ip-version', type=int, choices=(4, 6), default=4, help='The IP version to generate in packet generators. (default: 4)') argparser.add_argument('-g', '--gen-server', nargs='*', default=['shader-marcel.anlab', 'shader-lahti.anlab'], help='The generator hostnames to use. (default: shader-marcel.anlab and shader-lahti.anlab)') args = argparser.parse_args() if os.geteuid() != 0: print('You must be root!', file=sys.stderr) sys.exit(1) env = ExperimentEnv(verbose=False) for pktgen_hostname in args.gen_server: env.add_remote_server('pktgen', pktgen_hostname) my_hostname = execute(['uname', '-n'], read=True).decode('ascii').strip().split('-')[-1] env.execute_remote('pktgen', ['Packet-IO-Engine/samples/packet_generator/pspgen ' '-i all -f 0 -v {0} -p {1} ' '--neighbor-conf Packet-IO-Engine/samples/packet_generator/neighbors-in-{2}.conf' ' > /dev/null 2>&1'.format( args.ip_version, args.packet_size, my_hostname, )]) cmdargs = env.mangle_main_args(args.hardware_config, args.pipeline_config) proc = subprocess.Popen(['bin/main'] + cmdargs) proc.communicate()
self._comp_batch_size = cond_comp self._comp_ppdepths = cond_ppdepths self._io_core_util_usr = result_io_usr self._io_core_util_sys = result_io_sys self._comp_core_util_usr = result_comp_usr self._comp_core_util_sys = result_comp_sys def print_result(self): print('Maximum throughput: {0:10}'.format(self._thruput)) print('CPU utils: {0:6.2f} {1:6.2f} {2:6.2f} {3:6.2f}'.format(self._io_core_util_usr, self._io_core_util_sys, self._comp_core_util_usr, self._comp_core_util_sys)) print('Conditions: {0:5} {1:5} {2:5}'.format(self._io_batch_size, self._comp_batch_size, self._comp_ppdepths)) if __name__ == '__main__': env = ExperimentEnv(verbose=False) marcel = PktGenRunner('shader-marcel.anlab', 54321) lahti = PktGenRunner('shader-lahti.anlab', 54321) #iobatchsizes = [8, 16, 32, 64, 128, 256] #compbatchsizes = [1, 8, 16, 32, 64, 128] iobatchsizes = [64] compbatchsizes = [64] coprocppdepths = [32] num_ports = [1, 2, 4] num_cores = [1, 2, 4, 8] num_nodes = [1, 2] packetsize = [60, 64, 128, 256, 512, 1024, 1500] #coprocppdepths = [16, 32, 64, 128] loadbalancers = ['CPUOnlyLB']
self._io_batch_size = cond_io self._comp_batch_size = cond_comp self._comp_ppdepths = cond_ppdepths self._io_core_util_usr = result_io_usr self._io_core_util_sys = result_io_sys self._comp_core_util_usr = result_comp_usr self._comp_core_util_sys = result_comp_sys def print_result(self): print('Maximum throughput: {0:10}'.format(self._thruput)) print('CPU utils: {0:6.2f} {1:6.2f} {2:6.2f} {3:6.2f}'.format(self._io_core_util_usr, self._io_core_util_sys, self._comp_core_util_usr, self._comp_core_util_sys)) print('Conditions: {0:5} {1:5} {2:5}'.format(self._io_batch_size, self._comp_batch_size, self._comp_ppdepths)) if __name__ == '__main__': env = ExperimentEnv(verbose=False) #iobatchsizes = [8, 16, 32, 64, 128, 256] #compbatchsizes = [1, 8, 16, 32, 64, 128] #compppdepths = [1, 8, 16, 32, 64, 128] iobatchsizes = [16, 32, 64, 128, 256] compbatchsizes = [8, 16, 32, 64, 128] compppdepths = [8, 16, 32, 64, 128] #coprocppdepths = [16, 32, 64, 128] loadbalancers = ['CPUOnlyLB', 'GPUOnlyLB'] print('NOTE: You should be running packet generators manually!') max_result = ResultsAndConditions() for lb_mode in loadbalancers: print('======== LoadBalancer mode: {0} ========='.format(lb_mode))
self._comp_core_util_usr = result_comp_usr self._comp_core_util_sys = result_comp_sys def print_result(self): print('Maximum throughput: {0:10}'.format(self._thruput)) print('CPU utils: {0:6.2f} {1:6.2f} {2:6.2f} {3:6.2f}'.format( self._io_core_util_usr, self._io_core_util_sys, self._comp_core_util_usr, self._comp_core_util_sys)) print('Conditions: {0:5} {1:5} {2:5}'.format(self._io_batch_size, self._comp_batch_size, self._comp_ppdepths)) if __name__ == '__main__': env = ExperimentEnv(verbose=False) marcel = PktGenRunner('shader-marcel.anlab', 54321) lahti = PktGenRunner('shader-lahti.anlab', 54321) pktgens = [marcel, lahti] iobatchsizes = [32] compbatchsizes = [32] compppdepths = [16] packetsize = [64] #, 128, 256, 512, 1024, 1500] #branch_configs = ["l2fwd-echo-branch-lv1.click"]#, "l2fwd-echo-branch-lv2.click", "l2fwd-echo-branch-lv3.click"] branch_configs = ["l2fwd-echo-skewed-branch-lv3.click"] #branch_ratio = [50, 40, 30, 20, 10, 5, 1] branch_ratio = [99, 95, 90, 80, 70, 60, 50, 40, 30, 20, 10, 5, 1] print( 'Params: io-batch-size comp-batch-size comp-ppdepth pkt-size branch-lvl branch-ratio'
help='The IP version to generate in packet generators. (default: 4)') argparser.add_argument( '-g', '--gen-server', nargs='*', default=['shader-marcel.anlab', 'shader-lahti.anlab'], help= 'The generator hostnames to use. (default: shader-marcel.anlab and shader-lahti.anlab)' ) args = argparser.parse_args() if os.geteuid() != 0: print('You must be root!', file=sys.stderr) sys.exit(1) env = ExperimentEnv(verbose=False) for pktgen_hostname in args.gen_server: env.add_remote_server('pktgen', pktgen_hostname) my_hostname = execute(['uname', '-n'], read=True).decode('ascii').strip().split('-')[-1] env.execute_remote('pktgen', [ 'Packet-IO-Engine/samples/packet_generator/pspgen ' '-i all -f 0 -v {0} -p {1} ' '--neighbor-conf Packet-IO-Engine/samples/packet_generator/neighbors-in-{2}.conf' ' > /dev/null 2>&1'.format( args.ip_version, args.packet_size, my_hostname, ) ])