ajie
ajie
终于出现ts写坏meta表case了,感觉可以重启这货了
分裂流程的代码结构非常稳定,基本没有更新
#735 在析构teraclient时,保证调用rpc client的shutdown接口,保证rpc所有后台线程都退出;
背景: 目前tera的ssd cache粒度是整个文件进行全量加载;当cache miss时,需要全量加载时,往往需要秒级的充cache速度,对cache不命中时的随机读延迟非常大。缺乏数据替换算法,当用户的数据量接近ssd总量时,存在ssd打满问题,降低系统稳定性;当用户数据大于ssd总体容量时(如存储全互联网网页数据),系统的ssd将难以作为此类应用的cache,导致此类应用的读性能严重下降(所有读都走dfs,性能非常糟糕)。 另一方面,参考facebook的flashcache的经验,利用ssd作为磁盘的cache,能在非常大的程度上解决磁盘随机读性能差的问题。因此,我们需要在tera层面,实现一个用户态的类似flashcache的缓存技术,解决当前tera的cache miss读延迟高,缺乏有效数据替换策略的问题。
第一个story主要目的是明确评估方法和当前现状: 现状:ts的表格模型是使用leveldb作为底层的kv引擎,在kv基础上,对key根据schema编码为terakey;tera对leveldb的只有put操作,通过传入compact策略类,在compact中,执行tera定制的插入,删除策略(行删除,cf删除,列多版本删除,最新版本删除,原子加,append等); 基于已有现状的评估方法:由于表格策略从leveldb的kv逻辑分离,而compact性能主要关注持续写入时,对上层写性能影响。因此评测compact性能优化时,能复用db_bench的性能测试方法。
是的,抽象出一个compaction picker类,不同的compact策略有不同的选取方案
第三次迭代会,执行story [3],多线程compact: 1)额外修改点:level0打分修改,若level0数量较小,分数=level0 文件数/2; 否则分数= sqrt(level0 文件数/2);该分界用户可配;
why not TabletWriter shared in thread pool?