def prepare_ycsbruncmd(the_hosts, dir_name, database, workload, the_time, target): # /opt/ycsb/bin/ycsb run couchbase ... -target 25000 # and we assign # $1 -> run couchbase -s -P /opt/ycsb/workloads/workloada -p couchbase.user= -p couchbase.bucket=test -p couchbase.opTimeout=60000 -p couchbase.checkOperationStatus=true -p couchbase.password= -p couchbase.hosts=e1.citrusleaf.local,e2.citrusleaf.local,e3.citrusleaf.local,e4.citrusleaf.local -p fieldnameprefix=f -p recordcount=50000000 -p fieldcount=10 -p retrydelay=1 -p threadcount=32 -p readretrycount=1000 -p fieldlength=10 -p exportmeasurementsinterval=30000 -p workload=com.yahoo.ycsb.workloads.CoreWorkload -p updateretrycount=1000 -p insertretrycount=1000000 -p warmupexecutiontime=60000 -p operationcount=2500000 # $2 -> -target 25000 # $2 could be empty par = '' # /opt/ycsb/bin/ycsb is hardcoded in the benchmark file par += ' run %s -s' % database['command'] for file in workload['propertyfiles']: par += ' -P %s' % file for (key, value) in get_properties(database, workload).items(): par += ' -p %s=%s' % (key, value) for (key, value) in workloads.data.items(): if key == 'operationcount': par += ' -p %s=%s' % (key, int(value) / len(the_hosts)) else: par += ' -p %s=%s' % (key, value) if target is not None: par += ' -target %s' % str(target) # parameters are constructed outfile = get_outfilename(database['name'], workload['name'], 'out', the_time, target) errfile = get_outfilename(database['name'], workload['name'], 'err', the_time, target) cmd = './%s %s' % (benchmark_script, par) cmd += ' > %s/%s' % (dir_name, outfile) cmd += ' 2> %s/%s' % (dir_name, errfile) return cmd
def _ycsbruncmd(database, workload, timestamp, target=None): totalclients = len(env.roledefs['client']) cmd = workloads.root + '/bin/ycsb' cmd += ' run %s -s' % database['command'] for file in workload['propertyfiles']: cmd += ' -P %s' % file for (key, value) in get_properties(database, workload).items(): if key == 'operationcount': cmd += ' -p %s=%s' % (key, value / totalclients) else: cmd += ' -p %s=%s' % (key, value) if target is not None: cmd += ' -target %s' % str(target) outfile = get_outfilename(database['name'], workload['name'], 'out', timestamp, target) errfile = get_outfilename(database['name'], workload['name'], 'err', timestamp, target) cmd += ' > %s/%s' % (database['home'], outfile) cmd += ' 2> %s/%s' % (database['home'], errfile) return cmd
def _ycsbloadcmd(database, clientno, timestamp, target=None): totalclients = len(env.roledefs['client']) cmd = workloads.root + '/bin/ycsb load %s -s' % database['command'] for (key, value) in get_properties(database).items(): if key == 'operationcount': cmd += ' -p %s=%s' % (key, value / totalclients) else: cmd += ' -p %s=%s' % (key, value) insertcount = workloads.data['recordcount'] / totalclients insertstart = insertcount * clientno cmd += ' -p insertstart=%s' % insertstart cmd += ' -p insertcount=%s' % insertcount if target is not None: cmd += ' -target %s' % str(target) outfile = get_outfilename(database['name'], 'load', 'out', timestamp) errfile = get_outfilename(database['name'], 'load', 'err', timestamp) cmd += ' > %s/%s' % (database['home'], outfile) cmd += ' 2> %s/%s' % (database['home'], errfile) return cmd