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:
Esempio n. 2
0
                        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:
Esempio n. 3
0
        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,
Esempio n. 4
0
                        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')
Esempio n. 5
0
                                            '         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:
Esempio n. 6
0
    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]
Esempio n. 7
0
        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')
Esempio n. 8
0
        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]
Esempio n. 9
0
                       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:
Esempio n. 10
0
                           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()
Esempio n. 11
0
        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']
Esempio n. 12
0
        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))
Esempio n. 13
0
        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'
Esempio n. 14
0
        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,
        )
    ])