load
bin/ycsb load mydb -P workloads/workloada -p "mydb.host=127.0.0.1" -p "mydb.port=1111" -p "recordcount=100" -p "operationcount=200" -p "insertorder=sorted" -p "requestdistribution=zipfian"
run
bin/ycsb run mydb -P workloads/workloada -p "mydb.host=127.0.0.1" -p "mydb.port=1111" -p "recordcount=100" -p "operationcount=200" -p "insertorder=sorted" -p "requestdistribution=zipfian"
总结:
(1)-P workloads/workloada是必须的,但是其内容可以被 -p 参数覆盖。
recordcount在load时的条目。operationcount表明run时的条目。
insertorder表示load时的分布。requestdistribution表示run时的分布。
但是,与load相关的参数都会影响到run时的行为。
比如load时使用顺序插入,那么run时有顺序插入参数时就会考虑数据集是以此生成的。
(2)operationcount 与load 无关, "requestdistribution=zipfian" 与load无关,load始终使用 uniform 的形式生成负载
load时,如果-p "insertorder=sorted", 那么ycsb生成的模式为 userxxyy,其中xx即为顺序的数值,从0一直到recordcount-1, yy是一串数字,这串数字与xx有关,所有位数相同的xx其yy是一样的,最终组成的key具有相同的长度。
这样组成的key序列并不是真正有序的。甚至会生成重复的key。
比如key 1和key 18 分别是 user1863145027629296129 user1863145027629296129 但是很显然结果是相同的key。
"insertorder=sorted" 中 sorted 和ordered都表示顺序
-threads 28 参数表示使用的线程数。
-----2017.5.20
报错 OSError: [Errno 2] No such file or directory
解决:网上说可能java没装,装了java后照样报此错误。提示里有好几行是 File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child 之类的,有说将python升级到2.7.13的。查看本机python是2.7.12, 但是另一台可运行的机器python是2.7.6.
然后突然发现运行mvn命令提示mvn没有装。
sudo apt-get install mvn 后解决。
-----2017.8.31
run时,每一次生成的key序列都不一样,即使其他参数都相同。这表明可以使用多个trace进行多线程测试。