参赛信息
- 队伍: v587
- 目标: 优化 ycsb workloade
本周汇报
本周主要工作
- ycsb 压力测试,调整参数并比对不同场景下的性能区别
- 学习高性能课程相关的内容 (planner 和 coprocessor 为主),阅读 TiDB 源码博客,熟悉 query 处理流程
压力测试
本周通过脚本压力测试了 TiDB,跑 60 遍指定的 workloade,并用 gpof 分析 CPU 消耗。使用的脚本命令为:
i=60; while [ "$i" -ne "0" ]; do ./go-ycsb run mysql -P ./workloads/workloade -p recordcount=5000000 -p mysql.host=127.0.0.1 -p mysql.port=4000 -p mysql.user=root -p mysql.db=test done && i=$(($i -1 )); done;
火焰图如下:
通过观察火焰图,我们发现,copIteratorWorker
占用了很大一部分时间,反推可以得到:
- 计算下推给 TiKV 后,等待结果返回时间较长
- TiDB 在对查询优化过程中,采取了不是最优的计划,导致 worker 消耗时间长
从开发的反馈来看,我们现在的解释和可能的优化方向是比较正确的。在大家的讨论中提到了 workloade 在不同测试场景下的性能可能有区别,所以下来进行了比对测试。
小结
本周主要进行了比较系统的压力测试,希望可以找到优化方向。
遇到的问题
无法很好定位能够触发 planner 得出非优化 plan 的具体场景(数据库大小,测试线程etc),导致无法根据代码层面提出解决方案。
下一步规划
根据目前已经定位的组件 copIteratorWorker
,跟踪调试 workloade
的查询语句。
来源:oschina
链接:https://my.oschina.net/zhangyushao/blog/4698054