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可以有多个

posted on 2012-06-28 11:11  york_hust  阅读(446)  评论(0编辑  收藏  举报