Skip to content
Qiongwen Xu edited this page May 25, 2021 · 3 revisions

Welcome to the sigcomm21_artifact wiki!

K2 parameters:

usage: 
options and descriptions
-h                             : display usage
-n arg                         : number of iterations
-k arg                         : number of top programs
-m                             : turn on measurement
--path_res arg                 : output file path

There are two ways for the compiler to get benchmarks: 
1. read benchmark which is in the code: use `--bm`;
2. (only support ebpf)read benchmark from files: use `--bytecode`, `--map`, `--desc` to set the input file path. There is an example in input/
--bm arg                       : benchmark ID. toy_isa: 0 - 2; ebpf: 0 - 2
--bm_from_file                 : benchmark from file flag. the default is false
--bytecode arg                 : bpf bytecode file
--map arg                      : bpf map attributes file
--desc arg                     : bpf bytecode description file
--w_e arg                      : weight of error cost in cost function
--w_p arg                      : weight of performance cost in cost function
--st_ex arg                    : strategy of error cost computation from example. `arg`: 0(abs), 1(pop)
--st_eq arg                    : strategy of error cost computation equations. `arg`: 0(eq1), 1(eq2)
--st_avg arg                   : strategy of whether average total error cost from examples. `arg`: 0(navg), 1(avg)
--st_perf arg                  : strategy of whether performance cost for examples. `arg`: 0(program length), 1(program runtime)

The next five parameters are about restart. The last four parameters work ONLY when `st_when_to_restart` is not set as 0
--st_when_to_restart arg       : strategy of when to restart during sampling. `arg`: 0(no restart), 1(restart every `st_when_to_restart_niter`)
--st_when_to_restart_niter arg : when `st_when_to_restart` is set as 1, should set this parameter.
--st_start_prog arg            : strategy of a new start program for restart.`arg`: 0(no change) 1(change all instructions) 2(change k continuous instructions)
--restart_w_e_list arg         : weights of error cost in cost function for restart. `arg` eg: 1.5,0.5
--restart_w_p_list arg         : weights of performance cost in cost function for restart. `arg` eg: 1.5,0.5

configurations of window decomposition method. window range: [0, max_pgm_len-1]
--reset_win_niter arg          : iterations of setting next window during sampling, should > 0
--win_s_list arg               : window start list. `arg` eg: 0,4
--win_e_list arg               : window end list. `arg` eg: 3,6

The next two parameters are about new proposal generation.
A new proposal has three modification typies: modify a random instruction operand, 
instruction, two continuous instructions, and modify a random instruction as NOP. 
Sum of their probabilities is 1. 
The four probabilities are set by `p_inst_operand`, `p_inst` and `p_inst_as_nop` (`p_two_cont_insts` can be computed)
--p_inst_operand arg:          : probability of modifying a random operand in a random instruction for a new proposal
--p_inst arg                   : probability of modifying a random instruction (both opcode and operands) for a new proposal
--p_inst_as_nop arg            : probability of modifying a random instruction as NOP for a new proposal


validator related arguments
--disable_prog_eq_cache        : disable the usage of prog_eq_cache
--enable_prog_uneq_cache       : enable the usage of prog_uneq_cache
--is_win                       : enable window program equivalence check
--enable_z3server              : enable z3 server for solving z3 requests
--port arg                     : port number the z3 server and client communicate on

--logger_level                 : least logger level that allows to print: 0(ERROR), 1(DEBUG)
Clone this wiki locally