batch size自适应log(1)
1.首先要知道每一次发送的batch size的值的大小
修改pre_prepare.cc中的函数Pre_prepare::Pre_prepare(View v, Seqno s, Req_queue &reqs) : Message(Pre_prepare_tag, Max_message_size){}
在其中加入一行:printf("reqs.size: %d",reqs.size());以查看reqs.size,但在运行时并没有打印出信息
在你要寻找一个函数时就应该找使用这个函数的对象或类,在哪里有这个对象的定义,在哪里就会有这个函数的使用
在replica.cc中发现405行有printf("requeu.size = %d\n", rqueue.size());于是把注释去掉,运行,发现rqueue.size显示为1
也就是说在req_queues中每个client只允许放一个request,这其实是非常好优化的,因为这种方法的局限性非常大,当一个client发送大量request时,你每次只处理一个,这相当于是浪费了batch的性能,可以写一个算法,对单个client进行研究,在这个client发出大量request时,给这个client扩充队列,让他每次可以发多个request
2.然后要确定一个或多个性能指标,以此性能指标为标准来设计算法提高batch的性能
初步认为时钟周期和throughput是很好的性能指标,在client数增加时,以完成操作的时钟周期和每秒完成的operation数作为性能指标
时钟周期系统会给出,throughput则需要自己计算
3.尝试修改pre_prepare.cc中的代码,让每个req_queues的每个client队列中的request可以有多个